@vue-storefront/middleware
Advanced tools
Comparing version
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("consola"),t=require("cookie-parser"),n=require("cors"),r=require("express"),i=require("helmet");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(e),s=o(t),u=o(n),c=o(r),l=o(i);const d=e=>"function"==typeof e;const f=["status","statusCode"];function g(e,t=1){const n=e||{};return t>3?null:Object.keys(n).reduce(function(e,t){return function(n,r){if(n)return n;if(f.includes(r))return e[r]||null;const i=t+1;return g(e[r],i)}}(n,t),null)}function p(e){return function(e){var t,n,r;if("Object"===(null===(r=null===(n=null!=(t=e)&&t)||void 0===n?void 0:n.constructor)||void 0===r?void 0:r.name))return function(e){return"isAxiosError"in e}(e)?function(e){return e.response.status}(e):function(e){return"networkError"in e||"code"in e}(e)?function(e){return e.networkError?500:e.code?"string"==typeof e.code?400:e.code:void 0}(e):g(e)}(e)||200}function m(e){try{return require(require.resolve(e,{paths:[process.cwd()]}))}catch(t){throw a.default.error(t),new Error(`Could not resolve integration "${e}". See the error above for more details.`)}}function v(e){return"string"==typeof e?m(e):[e]}async function h(e,t){return await Object.entries(t).reduce((async(t,[n,r])=>{a.default.info(`- Loading: ${n} ${r.location}`);const i=await t,o=m(r.location),s=function(e,t){const n=t.extensions,r=e.createApiClient._predefinedExtensions||[];return n?n(r):r}(o,r),u=function(e){return e.flatMap(v)}(s),c=await async function({apiClient:e,tag:t,integration:n}){if(d(null==e?void 0:e.init))try{a.default.success(`- Integration: ${t} init function Start!`);const r=await e.init(n.configuration);return a.default.success(`- Integration: ${t} init function Done!`),r}catch(e){throw Error(`Error during executing init function in ${t} integration. Error message: ${e}`)}return{}}({apiClient:o,integration:r,tag:n});return u.forEach((({name:t,extendApp:i})=>{a.default.info(`- Loading: ${n} extension: ${t}`),i&&i({app:e,configuration:r.configuration})})),a.default.success(`- Integration: ${n} loaded!`),{...i,[n]:{apiClient:o,extensions:u,initConfig:c,configuration:r.configuration,customQueries:r.customQueries}}}),Promise.resolve({}))}const y=c.default();y.use(c.default.json()),y.use(s.default()),y.use(u.default({credentials:!0,origin:"http://localhost:3000"})),y.disable("x-powered-by");const b=({args:e})=>e,C=({response:e})=>e,w=(e,t,n={before:b,after:C})=>Object.entries(e).reduce(((e,[r,i])=>({...e,[r]:async(...e)=>{const o=(e=>(t,n)=>{const{customQueries:r={}}=e,{metadata:i={}}=t||{};return Object.entries(n).reduce(((e,[n,o])=>{const a=null==t?void 0:t[n];return{...e,[n]:(a&&r[a]||(()=>o))({...o,metadata:i})}}),{})})(t),a=n.before({callName:r,args:e}),s={...t,extendQuery:o},u=await i(s,...a);return n.after({callName:r,args:e,response:u})}})),{});exports.apiClientFactory=e=>{const t=function(t,n={}){var r;const i=(null===(r=null==this?void 0:this.middleware)||void 0===r?void 0:r.extensions)||[],o=i.filter((e=>d(null==e?void 0:e.hooks))).map((({hooks:e})=>{var t,n;return e(null===(t=null==this?void 0:this.middleware)||void 0===t?void 0:t.req,null===(n=null==this?void 0:this.middleware)||void 0===n?void 0:n.res)})),a=i.reduce(((e,{extendApiMethods:t})=>({...e,...t})),n),s=o.filter((e=>d(null==e?void 0:e.beforeCreate))).reduce(((e,t)=>t.beforeCreate({configuration:e})),t),u=e.onCreate?e.onCreate(s):{config:t,client:t.client};u.config=o.filter((e=>d(null==e?void 0:e.afterCreate))).reduce(((e,t)=>t.afterCreate({configuration:e})),u.config);const c={before:e=>o.filter((e=>d(null==e?void 0:e.beforeCall))).reduce(((t,n)=>n.beforeCall({...e,configuration:u.config,args:t})),e.args),after:e=>o.filter((e=>d(e.afterCall))).reduce(((t,n)=>n.afterCall({...e,configuration:u.config,response:t})),e.response)};return{api:w({...e.api,...a},{...u,...(null==this?void 0:this.middleware)||{}},c),client:u.client,settings:u.config}};return t._predefinedExtensions=e.extensions||[],{createApiClient:t}},exports.createServer=async function(e){a.default.info("Middleware starting....");const t={contentSecurityPolicy:!1,crossOriginOpenerPolicy:!1,crossOriginEmbedderPolicy:!1,permittedCrossDomainPolicies:{permittedPolicies:"none"},...e.helmet||{}};(!0===e.helmet||e.helmet&&Object.keys(e.helmet).length>0)&&(y.use(l.default(t)),a.default.info("VSF `Helmet` middleware added")),a.default.info("Loading integrations...");const n=await h(y,e.integrations);return a.default.success("Integrations loaded!"),y.post("/:integrationName/:functionName",(async(e,t)=>{const{integrationName:r,functionName:i}=e.params;if(!n||!n[r])return t.status(404),void t.send(`"${r}" integration is not configured. Please, check the request path or integration configuration.`);const{apiClient:o,configuration:a,extensions:s,customQueries:u={},initConfig:c}=n[r],l={req:e,res:t,extensions:s,customQueries:u},d=o.createApiClient.bind({middleware:l})({...a,...c}).api[i];try{Symbol.iterator in Object(e.body)||(e.body=[e.body]);const n=await d(...e.body);t.send(n)}catch(e){t.status(p(e)),t.send(e)}})),a.default.success("Middleware created!"),y}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("consola"),t=require("cookie-parser"),n=require("cors"),r=require("express"),i=require("helmet");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=o(e),a=o(t),u=o(n),c=o(r),l=o(i);const d=e=>"function"==typeof e;const f=["status","statusCode"];function g(e,t=1){const n=e||{};return t>3?null:Object.keys(n).reduce(function(e,t){return function(n,r){if(n)return n;if(f.includes(r))return e[r]||null;const i=t+1;return g(e[r],i)}}(n,t),null)}function p(e){return function(e){var t,n,r;if("Object"===(null===(r=null===(n=null!=(t=e)&&t)||void 0===n?void 0:n.constructor)||void 0===r?void 0:r.name))return function(e){return"isAxiosError"in e}(e)?function(e){return e.response.status}(e):function(e){return"networkError"in e||"code"in e}(e)?function(e){return e.networkError?500:e.code?"string"==typeof e.code?400:e.code:void 0}(e):g(e)}(e)||500}function m(e){try{return require(require.resolve(e,{paths:[process.cwd()]}))}catch(t){throw s.default.error(t),new Error(`Could not resolve integration "${e}". See the error above for more details.`)}}function v(e){return"string"==typeof e?m(e):[e]}async function h(e,t){return await Object.entries(t).reduce((async(t,[n,r])=>{s.default.info(`- Loading: ${n} ${r.location}`);const i=await t,o=m(r.location),a=function(e,t){const n=t.extensions,r=e.createApiClient._predefinedExtensions||[];return n?n(r):r}(o,r),u=function(e){return e.flatMap(v)}(a),c=await async function({apiClient:e,tag:t,integration:n}){if(d(null==e?void 0:e.init))try{s.default.success(`- Integration: ${t} init function Start!`);const r=await e.init(n.configuration);return s.default.success(`- Integration: ${t} init function Done!`),r}catch(e){throw Error(`Error during executing init function in ${t} integration. Error message: ${e}`)}return{}}({apiClient:o,integration:r,tag:n});return u.forEach((({name:t,extendApp:i})=>{s.default.info(`- Loading: ${n} extension: ${t}`),i&&i({app:e,configuration:r.configuration})})),s.default.success(`- Integration: ${n} loaded!`),{...i,[n]:{apiClient:o,extensions:u,initConfig:c,configuration:r.configuration,customQueries:r.customQueries}}}),Promise.resolve({}))}const y=c.default();y.use(c.default.json()),y.use(a.default()),y.use(u.default({credentials:!0,origin:"http://localhost:3000"})),y.disable("x-powered-by");const b=({args:e})=>e,C=({response:e})=>e,w=(e,t,n={before:b,after:C})=>Object.entries(e).reduce(((e,[r,i])=>({...e,[r]:async(...e)=>{const o=(e=>(t,n)=>{const{customQueries:r={}}=e,{metadata:i={}}=t||{};return Object.entries(n).reduce(((e,[n,o])=>{const s=null==t?void 0:t[n];return{...e,[n]:(s&&r[s]||(()=>o))({...o,metadata:i})}}),{})})(t),s=n.before({callName:r,args:e}),a={...t,extendQuery:o},u=await i(a,...s);return n.after({callName:r,args:e,response:u})}})),{});exports.apiClientFactory=e=>{const t=function(t,n={}){var r;const i=(null===(r=null==this?void 0:this.middleware)||void 0===r?void 0:r.extensions)||[],o=i.filter((e=>d(null==e?void 0:e.hooks))).map((({hooks:e})=>{var t,n;return e(null===(t=null==this?void 0:this.middleware)||void 0===t?void 0:t.req,null===(n=null==this?void 0:this.middleware)||void 0===n?void 0:n.res)})),s=i.reduce(((e,{extendApiMethods:t})=>({...e,...t})),n),a=o.filter((e=>d(null==e?void 0:e.beforeCreate))).reduce(((e,t)=>t.beforeCreate({configuration:e})),t),u=e.onCreate?e.onCreate(a):{config:t,client:t.client};u.config=o.filter((e=>d(null==e?void 0:e.afterCreate))).reduce(((e,t)=>t.afterCreate({configuration:e})),u.config);const c={before:e=>o.filter((e=>d(null==e?void 0:e.beforeCall))).reduce(((t,n)=>n.beforeCall({...e,configuration:u.config,args:t})),e.args),after:e=>o.filter((e=>d(e.afterCall))).reduce(((t,n)=>n.afterCall({...e,configuration:u.config,response:t})),e.response)};return{api:w({...e.api,...s},{...u,...(null==this?void 0:this.middleware)||{}},c),client:u.client,settings:u.config}};return t._predefinedExtensions=e.extensions||[],{createApiClient:t}},exports.createServer=async function(e){s.default.info("Middleware starting....");const t={contentSecurityPolicy:!1,crossOriginOpenerPolicy:!1,crossOriginEmbedderPolicy:!1,permittedCrossDomainPolicies:{permittedPolicies:"none"},...e.helmet||{}};(!0===e.helmet||e.helmet&&Object.keys(e.helmet).length>0)&&(y.use(l.default(t)),s.default.info("VSF `Helmet` middleware added")),s.default.info("Loading integrations...");const n=await h(y,e.integrations);return s.default.success("Integrations loaded!"),y.post("/:integrationName/:functionName",(async(e,t)=>{const{integrationName:r,functionName:i}=e.params;if(!n||!n[r])return t.status(404),void t.send(`"${r}" integration is not configured. Please, check the request path or integration configuration.`);const{apiClient:o,configuration:a,extensions:u,customQueries:c={},initConfig:l}=n[r],d={req:e,res:t,extensions:u,customQueries:c},f=o.createApiClient.bind({middleware:d})({...a,...l}).api[i];try{Symbol.iterator in Object(e.body)||(e.body=[e.body]);const n=await f(...e.body);t.send(n)}catch(e){s.default.error(e),t.status(p(e)),t.send("ServerError: Response not successful. Please, check server logs for more details.")}})),s.default.success("Middleware created!"),y}; | ||
//# sourceMappingURL=index.cjs.js.map |
@@ -1,2 +0,2 @@ | ||
import e from"consola";import n from"cookie-parser";import t from"cors";import i from"express";import r from"helmet";const o=e=>"function"==typeof e;const s=["status","statusCode"];function a(e,n=1){const t=e||{};return n>3?null:Object.keys(t).reduce(function(e,n){return function(t,i){if(t)return t;if(s.includes(i))return e[i]||null;const r=n+1;return a(e[i],r)}}(t,n),null)}function c(e){return function(e){var n,t,i;if("Object"===(null===(i=null===(t=null!=(n=e)&&n)||void 0===t?void 0:t.constructor)||void 0===i?void 0:i.name))return function(e){return"isAxiosError"in e}(e)?function(e){return e.response.status}(e):function(e){return"networkError"in e||"code"in e}(e)?function(e){return e.networkError?500:e.code?"string"==typeof e.code?400:e.code:void 0}(e):a(e)}(e)||200}function u(n){try{return require(require.resolve(n,{paths:[process.cwd()]}))}catch(t){throw e.error(t),new Error(`Could not resolve integration "${n}". See the error above for more details.`)}}function l(e){return"string"==typeof e?u(e):[e]}async function d(n,t){return await Object.entries(t).reduce((async(t,[i,r])=>{e.info(`- Loading: ${i} ${r.location}`);const s=await t,a=u(r.location),c=function(e,n){const t=n.extensions,i=e.createApiClient._predefinedExtensions||[];return t?t(i):i}(a,r),d=function(e){return e.flatMap(l)}(c),f=await async function({apiClient:n,tag:t,integration:i}){if(o(null==n?void 0:n.init))try{e.success(`- Integration: ${t} init function Start!`);const r=await n.init(i.configuration);return e.success(`- Integration: ${t} init function Done!`),r}catch(e){throw Error(`Error during executing init function in ${t} integration. Error message: ${e}`)}return{}}({apiClient:a,integration:r,tag:i});return d.forEach((({name:t,extendApp:o})=>{e.info(`- Loading: ${i} extension: ${t}`),o&&o({app:n,configuration:r.configuration})})),e.success(`- Integration: ${i} loaded!`),{...s,[i]:{apiClient:a,extensions:d,initConfig:f,configuration:r.configuration,customQueries:r.customQueries}}}),Promise.resolve({}))}const f=i();async function g(n){e.info("Middleware starting....");const t={contentSecurityPolicy:!1,crossOriginOpenerPolicy:!1,crossOriginEmbedderPolicy:!1,permittedCrossDomainPolicies:{permittedPolicies:"none"},...n.helmet||{}};(!0===n.helmet||n.helmet&&Object.keys(n.helmet).length>0)&&(f.use(r(t)),e.info("VSF `Helmet` middleware added")),e.info("Loading integrations...");const i=await d(f,n.integrations);return e.success("Integrations loaded!"),f.post("/:integrationName/:functionName",(async(e,n)=>{const{integrationName:t,functionName:r}=e.params;if(!i||!i[t])return n.status(404),void n.send(`"${t}" integration is not configured. Please, check the request path or integration configuration.`);const{apiClient:o,configuration:s,extensions:a,customQueries:u={},initConfig:l}=i[t],d={req:e,res:n,extensions:a,customQueries:u},f=o.createApiClient.bind({middleware:d})({...s,...l}).api[r];try{Symbol.iterator in Object(e.body)||(e.body=[e.body]);const t=await f(...e.body);n.send(t)}catch(e){n.status(c(e)),n.send(e)}})),e.success("Middleware created!"),f}f.use(i.json()),f.use(n()),f.use(t({credentials:!0,origin:"http://localhost:3000"})),f.disable("x-powered-by");const m=({args:e})=>e,p=({response:e})=>e,h=(e,n,t={before:m,after:p})=>Object.entries(e).reduce(((e,[i,r])=>({...e,[i]:async(...e)=>{const o=(e=>(n,t)=>{const{customQueries:i={}}=e,{metadata:r={}}=n||{};return Object.entries(t).reduce(((e,[t,o])=>{const s=null==n?void 0:n[t];return{...e,[t]:(s&&i[s]||(()=>o))({...o,metadata:r})}}),{})})(n),s=t.before({callName:i,args:e}),a={...n,extendQuery:o},c=await r(a,...s);return t.after({callName:i,args:e,response:c})}})),{}),v=e=>{const n=function(n,t={}){var i;const r=(null===(i=null==this?void 0:this.middleware)||void 0===i?void 0:i.extensions)||[],s=r.filter((e=>o(null==e?void 0:e.hooks))).map((({hooks:e})=>{var n,t;return e(null===(n=null==this?void 0:this.middleware)||void 0===n?void 0:n.req,null===(t=null==this?void 0:this.middleware)||void 0===t?void 0:t.res)})),a=r.reduce(((e,{extendApiMethods:n})=>({...e,...n})),t),c=s.filter((e=>o(null==e?void 0:e.beforeCreate))).reduce(((e,n)=>n.beforeCreate({configuration:e})),n),u=e.onCreate?e.onCreate(c):{config:n,client:n.client};u.config=s.filter((e=>o(null==e?void 0:e.afterCreate))).reduce(((e,n)=>n.afterCreate({configuration:e})),u.config);const l={before:e=>s.filter((e=>o(null==e?void 0:e.beforeCall))).reduce(((n,t)=>t.beforeCall({...e,configuration:u.config,args:n})),e.args),after:e=>s.filter((e=>o(e.afterCall))).reduce(((n,t)=>t.afterCall({...e,configuration:u.config,response:n})),e.response)};return{api:h({...e.api,...a},{...u,...(null==this?void 0:this.middleware)||{}},l),client:u.client,settings:u.config}};return n._predefinedExtensions=e.extensions||[],{createApiClient:n}};export{v as apiClientFactory,g as createServer}; | ||
import e from"consola";import n from"cookie-parser";import t from"cors";import r from"express";import i from"helmet";const o=e=>"function"==typeof e;const s=["status","statusCode"];function a(e,n=1){const t=e||{};return n>3?null:Object.keys(t).reduce(function(e,n){return function(t,r){if(t)return t;if(s.includes(r))return e[r]||null;const i=n+1;return a(e[r],i)}}(t,n),null)}function c(e){return function(e){var n,t,r;if("Object"===(null===(r=null===(t=null!=(n=e)&&n)||void 0===t?void 0:t.constructor)||void 0===r?void 0:r.name))return function(e){return"isAxiosError"in e}(e)?function(e){return e.response.status}(e):function(e){return"networkError"in e||"code"in e}(e)?function(e){return e.networkError?500:e.code?"string"==typeof e.code?400:e.code:void 0}(e):a(e)}(e)||500}function u(n){try{return require(require.resolve(n,{paths:[process.cwd()]}))}catch(t){throw e.error(t),new Error(`Could not resolve integration "${n}". See the error above for more details.`)}}function l(e){return"string"==typeof e?u(e):[e]}async function d(n,t){return await Object.entries(t).reduce((async(t,[r,i])=>{e.info(`- Loading: ${r} ${i.location}`);const s=await t,a=u(i.location),c=function(e,n){const t=n.extensions,r=e.createApiClient._predefinedExtensions||[];return t?t(r):r}(a,i),d=function(e){return e.flatMap(l)}(c),f=await async function({apiClient:n,tag:t,integration:r}){if(o(null==n?void 0:n.init))try{e.success(`- Integration: ${t} init function Start!`);const i=await n.init(r.configuration);return e.success(`- Integration: ${t} init function Done!`),i}catch(e){throw Error(`Error during executing init function in ${t} integration. Error message: ${e}`)}return{}}({apiClient:a,integration:i,tag:r});return d.forEach((({name:t,extendApp:o})=>{e.info(`- Loading: ${r} extension: ${t}`),o&&o({app:n,configuration:i.configuration})})),e.success(`- Integration: ${r} loaded!`),{...s,[r]:{apiClient:a,extensions:d,initConfig:f,configuration:i.configuration,customQueries:i.customQueries}}}),Promise.resolve({}))}const f=r();async function g(n){e.info("Middleware starting....");const t={contentSecurityPolicy:!1,crossOriginOpenerPolicy:!1,crossOriginEmbedderPolicy:!1,permittedCrossDomainPolicies:{permittedPolicies:"none"},...n.helmet||{}};(!0===n.helmet||n.helmet&&Object.keys(n.helmet).length>0)&&(f.use(i(t)),e.info("VSF `Helmet` middleware added")),e.info("Loading integrations...");const r=await d(f,n.integrations);return e.success("Integrations loaded!"),f.post("/:integrationName/:functionName",(async(n,t)=>{const{integrationName:i,functionName:o}=n.params;if(!r||!r[i])return t.status(404),void t.send(`"${i}" integration is not configured. Please, check the request path or integration configuration.`);const{apiClient:s,configuration:a,extensions:u,customQueries:l={},initConfig:d}=r[i],f={req:n,res:t,extensions:u,customQueries:l},g=s.createApiClient.bind({middleware:f})({...a,...d}).api[o];try{Symbol.iterator in Object(n.body)||(n.body=[n.body]);const e=await g(...n.body);t.send(e)}catch(n){e.error(n),t.status(c(n)),t.send("ServerError: Response not successful. Please, check server logs for more details.")}})),e.success("Middleware created!"),f}f.use(r.json()),f.use(n()),f.use(t({credentials:!0,origin:"http://localhost:3000"})),f.disable("x-powered-by");const m=({args:e})=>e,p=({response:e})=>e,h=(e,n,t={before:m,after:p})=>Object.entries(e).reduce(((e,[r,i])=>({...e,[r]:async(...e)=>{const o=(e=>(n,t)=>{const{customQueries:r={}}=e,{metadata:i={}}=n||{};return Object.entries(t).reduce(((e,[t,o])=>{const s=null==n?void 0:n[t];return{...e,[t]:(s&&r[s]||(()=>o))({...o,metadata:i})}}),{})})(n),s=t.before({callName:r,args:e}),a={...n,extendQuery:o},c=await i(a,...s);return t.after({callName:r,args:e,response:c})}})),{}),v=e=>{const n=function(n,t={}){var r;const i=(null===(r=null==this?void 0:this.middleware)||void 0===r?void 0:r.extensions)||[],s=i.filter((e=>o(null==e?void 0:e.hooks))).map((({hooks:e})=>{var n,t;return e(null===(n=null==this?void 0:this.middleware)||void 0===n?void 0:n.req,null===(t=null==this?void 0:this.middleware)||void 0===t?void 0:t.res)})),a=i.reduce(((e,{extendApiMethods:n})=>({...e,...n})),t),c=s.filter((e=>o(null==e?void 0:e.beforeCreate))).reduce(((e,n)=>n.beforeCreate({configuration:e})),n),u=e.onCreate?e.onCreate(c):{config:n,client:n.client};u.config=s.filter((e=>o(null==e?void 0:e.afterCreate))).reduce(((e,n)=>n.afterCreate({configuration:e})),u.config);const l={before:e=>s.filter((e=>o(null==e?void 0:e.beforeCall))).reduce(((n,t)=>t.beforeCall({...e,configuration:u.config,args:n})),e.args),after:e=>s.filter((e=>o(e.afterCall))).reduce(((n,t)=>t.afterCall({...e,configuration:u.config,response:n})),e.response)};return{api:h({...e.api,...a},{...u,...(null==this?void 0:this.middleware)||{}},l),client:u.client,settings:u.config}};return n._predefinedExtensions=e.extensions||[],{createApiClient:n}};export{v as apiClientFactory,g as createServer}; | ||
//# sourceMappingURL=index.es.js.map |
{ | ||
"name": "@vue-storefront/middleware", | ||
"version": "3.0.0-rc.1", | ||
"version": "3.0.0-rc.2", | ||
"main": "lib/index.cjs.js", | ||
@@ -27,6 +27,8 @@ "module": "lib/index.es.js", | ||
"helmet": "^5.1.1", | ||
"rimraf": "^4.1.2" | ||
"rimraf": "^4.1.2", | ||
"consola": "^2.15.3" | ||
}, | ||
"devDependencies": { | ||
"@types/body-parser": "^1.19.2", | ||
"@commitlint/config-conventional": "^12.1.1", | ||
"@types/cookie-parser": "^1.4.3", | ||
@@ -40,3 +42,2 @@ "@types/cors": "^2.8.12", | ||
"commitizen": "^4.2.5", | ||
"consola": "^2.15.3", | ||
"jest": "^29.2.2", | ||
@@ -43,0 +44,0 @@ "rollup-plugin-typescript2": "^0.33.0", |
22543
1.09%6
20%+ Added
+ Added