@teambit/preview 0.0.682 → 0.0.683

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.
@@ -9,4 +9,5 @@ export declare type PreviewUrlParams = {
9
9
  /** `/preview/:filePath(*)` */
10
10
  filePath?: string;
11
11
  };
12
- export declare function getArtifactFileMiddleware(logger: Logger): (req: Request<PreviewUrlParams>, res: Response) => Promise<import("express").Response<any>>;
12
+ export declare type GetCacheControlFunc = (filePath: string, contents: string, mimeType?: string | null) => string | undefined;
13
+ export declare function getArtifactFileMiddleware(logger: Logger, getCacheControlFunc?: GetCacheControlFunc): (req: Request<PreviewUrlParams>, res: Response) => Promise<import("express").Response<any>>;
@@ -29,7 +29,7 @@ function _uiFoundationUiPages() {
29
29
  return data;
30
30
  }
31
31
 
32
- function getArtifactFileMiddleware(logger) {
32
+ function getArtifactFileMiddleware(logger, getCacheControlFunc) {
33
33
  return async (req, res) => {
34
34
  try {
35
35
  // @ts-ignore
@@ -51,6 +51,15 @@ function getArtifactFileMiddleware(logger) {
51
51
  const contentType = _mime().default.getType(str);
52
52
 
53
53
  if (contentType) res.set('Content-Type', contentType);
54
+
55
+ if (getCacheControlFunc) {
56
+ const cacheControl = getCacheControlFunc(str, contents, contentType);
57
+
58
+ if (cacheControl) {
59
+ res.set('Cache-control', cacheControl);
60
+ }
61
+ }
62
+
54
63
  return res.send(contents);
55
64
  } catch (e) {
56
65
  logger.error('failed getting preview', e);
@@ -1 +1 @@
1
- {"version":3,"sources":["artifact-file-middleware.ts"],"names":["getArtifactFileMiddleware","logger","req","res","artifact","isLegacyPath","file","getEnvTemplateFile","params","previewName","filePath","getPreviewFile","status","send","contents","str","cwd","path","contentType","mime","getType","set","e","error","prevName","finalFilePath","matchedFile","getFileEndsWith","parts","filter","x","join"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAaO,SAASA,yBAAT,CAAmCC,MAAnC,EAAmD;AACxD,SAAO,OAAOC,GAAP,EAAuCC,GAAvC,KAAyD;AAC9D,QAAI;AACF;AACA,YAAMC,QAAyB,GAAGF,GAAG,CAACE,QAAtC,CAFE,CAGF;;AACA,YAAMC,YAAY,GAAGH,GAAG,CAACG,YAAzB;AACA,UAAIC,IAAJ;;AACA,UAAI,CAACD,YAAL,EAAmB;AACjBC,QAAAA,IAAI,GAAGC,kBAAkB,CAACH,QAAD,EAAWF,GAAG,CAACM,MAAJ,CAAWC,WAAtB,EAAmCP,GAAG,CAACM,MAAJ,CAAWE,QAA9C,CAAzB;AACD,OAFD,MAEO;AACLJ,QAAAA,IAAI,GAAGK,cAAc,CAACP,QAAD,EAAWF,GAAG,CAACM,MAAJ,CAAWC,WAAtB,EAAmCP,GAAG,CAACM,MAAJ,CAAWE,QAA9C,CAArB;AACD;;AACD,UAAI,CAACJ,IAAL,EAAW,OAAOH,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,uCAArB,CAAP;AAEX,YAAMC,QAAQ,GAAGR,IAAI,CAACQ,QAAtB;AACA,YAAMC,GAAG,GAAI,GAAET,IAAI,CAACU,GAAI,IAAGV,IAAI,CAACW,IAAK,EAArC;;AACA,YAAMC,WAAW,GAAGC,gBAAKC,OAAL,CAAaL,GAAb,CAApB;;AACA,UAAIG,WAAJ,EAAiBf,GAAG,CAACkB,GAAJ,CAAQ,cAAR,EAAwBH,WAAxB;AACjB,aAAOf,GAAG,CAACU,IAAJ,CAASC,QAAT,CAAP;AACD,KAlBD,CAkBE,OAAOQ,CAAP,EAAe;AACfrB,MAAAA,MAAM,CAACsB,KAAP,CAAa,wBAAb,EAAuCD,CAAvC;AACA,aAAOnB,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,yCAArB,CAAP;AACD;AACF,GAvBD;AAwBD;;AAED,SAASN,kBAAT,CAA4BH,QAA5B,EAAuDK,WAAvD,EAA6EC,QAA7E,EAAgG;AAC9F,QAAMc,QAAQ,GAAGf,WAAW,IAAI,UAAhC;AACA,QAAMgB,aAAa,GAAGf,QAAQ,IAAK,GAAEc,QAAS,OAA9C;AACA,QAAME,WAAW,GAAGtB,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAEuB,eAAV,CAA0BF,aAA1B,CAApB;AACA,SAAOC,WAAP;AACD;;AAED,SAASf,cAAT,CAAwBP,QAAxB,EAAmDK,WAAnD,EAAyEC,QAAzE,EAA4F;AAC1F,MAAIe,aAAa,GAAG,YAApB;;AACA,MAAIhB,WAAW,IAAIC,QAAnB,EAA6B;AAC3B,UAAMkB,KAAK,GAAG,CAACnB,WAAD,EAAcC,QAAd,EAAwBmB,MAAxB,CAAgCC,CAAD,IAAOA,CAAtC,CAAd;AACAL,IAAAA,aAAa,GAAGG,KAAK,CAACG,IAAN,CAAW,GAAX,CAAhB;AACD;;AACD,QAAML,WAAW,GAAGtB,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAEuB,eAAV,CAA0BF,aAA1B,CAApB;AACA,SAAOC,WAAP;AACD","sourcesContent":["import mime from 'mime';\nimport type { Request, Response } from '@teambit/express';\nimport { noPreview, serverError } from '@teambit/ui-foundation.ui.pages.static-error';\nimport type { Logger } from '@teambit/logger';\nimport type { PreviewArtifact } from './preview-artifact';\n\nexport type PreviewUrlParams = {\n /**\n * preview name like overview or composition\n */\n previewName?: string;\n /** `/preview/:filePath(*)` */\n filePath?: string;\n};\n\nexport function getArtifactFileMiddleware(logger: Logger) {\n return async (req: Request<PreviewUrlParams>, res: Response) => {\n try {\n // @ts-ignore\n const artifact: PreviewArtifact = req.artifact;\n // @ts-ignore\n const isLegacyPath = req.isLegacyPath;\n let file;\n if (!isLegacyPath) {\n file = getEnvTemplateFile(artifact, req.params.previewName, req.params.filePath);\n } else {\n file = getPreviewFile(artifact, req.params.previewName, req.params.filePath);\n }\n if (!file) return res.status(404).send(noPreview());\n\n const contents = file.contents;\n const str = `${file.cwd}/${file.path}`;\n const contentType = mime.getType(str);\n if (contentType) res.set('Content-Type', contentType);\n return res.send(contents);\n } catch (e: any) {\n logger.error('failed getting preview', e);\n return res.status(500).send(serverError());\n }\n };\n}\n\nfunction getEnvTemplateFile(artifact: PreviewArtifact, previewName?: string, filePath?: string) {\n const prevName = previewName || 'overview';\n const finalFilePath = filePath || `${prevName}.html`;\n const matchedFile = artifact?.getFileEndsWith(finalFilePath);\n return matchedFile;\n}\n\nfunction getPreviewFile(artifact: PreviewArtifact, previewName?: string, filePath?: string) {\n let finalFilePath = 'index.html';\n if (previewName || filePath) {\n const parts = [previewName, filePath].filter((x) => x);\n finalFilePath = parts.join('/');\n }\n const matchedFile = artifact?.getFileEndsWith(finalFilePath);\n return matchedFile;\n}\n"]}
1
+ {"version":3,"sources":["artifact-file-middleware.ts"],"names":["getArtifactFileMiddleware","logger","getCacheControlFunc","req","res","artifact","isLegacyPath","file","getEnvTemplateFile","params","previewName","filePath","getPreviewFile","status","send","contents","str","cwd","path","contentType","mime","getType","set","cacheControl","e","error","prevName","finalFilePath","matchedFile","getFileEndsWith","parts","filter","x","join"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAeO,SAASA,yBAAT,CAAmCC,MAAnC,EAAmDC,mBAAnD,EAA8F;AACnG,SAAO,OAAOC,GAAP,EAAuCC,GAAvC,KAAyD;AAC9D,QAAI;AACF;AACA,YAAMC,QAAyB,GAAGF,GAAG,CAACE,QAAtC,CAFE,CAGF;;AACA,YAAMC,YAAY,GAAGH,GAAG,CAACG,YAAzB;AACA,UAAIC,IAAJ;;AACA,UAAI,CAACD,YAAL,EAAmB;AACjBC,QAAAA,IAAI,GAAGC,kBAAkB,CAACH,QAAD,EAAWF,GAAG,CAACM,MAAJ,CAAWC,WAAtB,EAAmCP,GAAG,CAACM,MAAJ,CAAWE,QAA9C,CAAzB;AACD,OAFD,MAEO;AACLJ,QAAAA,IAAI,GAAGK,cAAc,CAACP,QAAD,EAAWF,GAAG,CAACM,MAAJ,CAAWC,WAAtB,EAAmCP,GAAG,CAACM,MAAJ,CAAWE,QAA9C,CAArB;AACD;;AACD,UAAI,CAACJ,IAAL,EAAW,OAAOH,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,uCAArB,CAAP;AAEX,YAAMC,QAAQ,GAAGR,IAAI,CAACQ,QAAtB;AACA,YAAMC,GAAG,GAAI,GAAET,IAAI,CAACU,GAAI,IAAGV,IAAI,CAACW,IAAK,EAArC;;AACA,YAAMC,WAAW,GAAGC,gBAAKC,OAAL,CAAaL,GAAb,CAApB;;AACA,UAAIG,WAAJ,EAAiBf,GAAG,CAACkB,GAAJ,CAAQ,cAAR,EAAwBH,WAAxB;;AACjB,UAAIjB,mBAAJ,EAAyB;AACvB,cAAMqB,YAAY,GAAGrB,mBAAmB,CAACc,GAAD,EAAMD,QAAN,EAAgBI,WAAhB,CAAxC;;AACA,YAAII,YAAJ,EAAkB;AAChBnB,UAAAA,GAAG,CAACkB,GAAJ,CAAQ,eAAR,EAAyBC,YAAzB;AACD;AACF;;AACD,aAAOnB,GAAG,CAACU,IAAJ,CAASC,QAAT,CAAP;AACD,KAxBD,CAwBE,OAAOS,CAAP,EAAe;AACfvB,MAAAA,MAAM,CAACwB,KAAP,CAAa,wBAAb,EAAuCD,CAAvC;AACA,aAAOpB,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,yCAArB,CAAP;AACD;AACF,GA7BD;AA8BD;;AAED,SAASN,kBAAT,CAA4BH,QAA5B,EAAuDK,WAAvD,EAA6EC,QAA7E,EAAgG;AAC9F,QAAMe,QAAQ,GAAGhB,WAAW,IAAI,UAAhC;AACA,QAAMiB,aAAa,GAAGhB,QAAQ,IAAK,GAAEe,QAAS,OAA9C;AACA,QAAME,WAAW,GAAGvB,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAEwB,eAAV,CAA0BF,aAA1B,CAApB;AACA,SAAOC,WAAP;AACD;;AAED,SAAShB,cAAT,CAAwBP,QAAxB,EAAmDK,WAAnD,EAAyEC,QAAzE,EAA4F;AAC1F,MAAIgB,aAAa,GAAG,YAApB;;AACA,MAAIjB,WAAW,IAAIC,QAAnB,EAA6B;AAC3B,UAAMmB,KAAK,GAAG,CAACpB,WAAD,EAAcC,QAAd,EAAwBoB,MAAxB,CAAgCC,CAAD,IAAOA,CAAtC,CAAd;AACAL,IAAAA,aAAa,GAAGG,KAAK,CAACG,IAAN,CAAW,GAAX,CAAhB;AACD;;AACD,QAAML,WAAW,GAAGvB,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAEwB,eAAV,CAA0BF,aAA1B,CAApB;AACA,SAAOC,WAAP;AACD","sourcesContent":["import mime from 'mime';\nimport type { Request, Response } from '@teambit/express';\nimport { noPreview, serverError } from '@teambit/ui-foundation.ui.pages.static-error';\nimport type { Logger } from '@teambit/logger';\nimport type { PreviewArtifact } from './preview-artifact';\n\nexport type PreviewUrlParams = {\n /**\n * preview name like overview or composition\n */\n previewName?: string;\n /** `/preview/:filePath(*)` */\n filePath?: string;\n};\n\nexport type GetCacheControlFunc = (filePath: string, contents: string, mimeType?: string | null) => string | undefined;\n\nexport function getArtifactFileMiddleware(logger: Logger, getCacheControlFunc?: GetCacheControlFunc) {\n return async (req: Request<PreviewUrlParams>, res: Response) => {\n try {\n // @ts-ignore\n const artifact: PreviewArtifact = req.artifact;\n // @ts-ignore\n const isLegacyPath = req.isLegacyPath;\n let file;\n if (!isLegacyPath) {\n file = getEnvTemplateFile(artifact, req.params.previewName, req.params.filePath);\n } else {\n file = getPreviewFile(artifact, req.params.previewName, req.params.filePath);\n }\n if (!file) return res.status(404).send(noPreview());\n\n const contents = file.contents;\n const str = `${file.cwd}/${file.path}`;\n const contentType = mime.getType(str);\n if (contentType) res.set('Content-Type', contentType);\n if (getCacheControlFunc) {\n const cacheControl = getCacheControlFunc(str, contents, contentType);\n if (cacheControl) {\n res.set('Cache-control', cacheControl);\n }\n }\n return res.send(contents);\n } catch (e: any) {\n logger.error('failed getting preview', e);\n return res.status(500).send(serverError());\n }\n };\n}\n\nfunction getEnvTemplateFile(artifact: PreviewArtifact, previewName?: string, filePath?: string) {\n const prevName = previewName || 'overview';\n const finalFilePath = filePath || `${prevName}.html`;\n const matchedFile = artifact?.getFileEndsWith(finalFilePath);\n return matchedFile;\n}\n\nfunction getPreviewFile(artifact: PreviewArtifact, previewName?: string, filePath?: string) {\n let finalFilePath = 'index.html';\n if (previewName || filePath) {\n const parts = [previewName, filePath].filter((x) => x);\n finalFilePath = parts.join('/');\n }\n const matchedFile = artifact?.getFileEndsWith(finalFilePath);\n return matchedFile;\n}\n"]}
@@ -42,6 +42,15 @@ function _artifactFileMiddleware() {
42
42
  // Week for now
43
43
  const CACHE_MAX_AGE = 60 * 60 * 24 * 7;
44
44
 
45
+ const getCacheControl = (_filePath, _contents, mimeType) => {
46
+ // Do not cache the html files
47
+ if (mimeType && mimeType === 'text/html') {
48
+ return undefined;
49
+ }
50
+
51
+ return `private, max-age=${CACHE_MAX_AGE}`;
52
+ };
53
+
45
54
  class EnvTemplateRoute {
46
55
  constructor(
47
56
  /**
@@ -74,13 +83,12 @@ class EnvTemplateRoute {
74
83
  req.artifact = artifact; // @ts-ignore
75
84
 
76
85
  req.isLegacyPath = false;
77
- res.set('Cache-control', `private, max-age=${CACHE_MAX_AGE}`);
78
86
  return next();
79
87
  } catch (e) {
80
88
  this.logger.error('failed getting preview', e);
81
89
  return res.status(500).send((0, _uiFoundationUiPages().serverError)());
82
90
  }
83
- }, (0, _artifactFileMiddleware().getArtifactFileMiddleware)(this.logger)]);
91
+ }, (0, _artifactFileMiddleware().getArtifactFileMiddleware)(this.logger, getCacheControl)]);
84
92
  }
85
93
 
86
94
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["env-template.route.ts"],"names":["CACHE_MAX_AGE","EnvTemplateRoute","constructor","preview","logger","req","res","next","artifact","componentId","envId","params","getEnvTemplateByEnvId","e","error","status","send","isLegacyPath","set"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA;AACA,MAAMA,aAAa,GAAG,KAAK,EAAL,GAAU,EAAV,GAAe,CAArC;;AAEO,MAAMC,gBAAN,CAA2D;AAChEC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,OAJC,EAKDC,MALC,EAMT;AAAA,SAFQD,OAER,GAFQA,OAER;AAAA,SADQC,MACR,GADQA,MACR;AAAA,mDAEO,yCAFP;AAAA,oDAGO,KAHP;AAAA,8DAOiB,KAPjB;AAAA,yDAUY,CACZ,OAAOC,GAAP,EAAgCC,GAAhC,EAA+CC,IAA/C,KAAsE;AACpE,UAAI;AACF;AACA;AACA;AAEA,YAAIC,QAAJ,CALE,CAMF;;AACA,YAAI;AACF,gBAAM;AAAEC,YAAAA,WAAW,EAAEC;AAAf,cAAyBL,GAAG,CAACM,MAAnC;AACAH,UAAAA,QAAQ,GAAG,MAAM,KAAKL,OAAL,CAAaS,qBAAb,CAAmCF,KAAnC,CAAjB;AACD,SAHD,CAGE,OAAOG,CAAP,EAAe;AACf,eAAKT,MAAL,CAAYU,KAAZ,CAAmB,kCAAnB,EAAsDD,CAAtD;AACA,iBAAOP,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,uCAArB,CAAP;AACD,SAbC,CAeF;;;AACAX,QAAAA,GAAG,CAACG,QAAJ,GAAeA,QAAf,CAhBE,CAiBF;;AACAH,QAAAA,GAAG,CAACY,YAAJ,GAAmB,KAAnB;AAEAX,QAAAA,GAAG,CAACY,GAAJ,CAAQ,eAAR,EAA0B,oBAAmBlB,aAAc,EAA3D;AAEA,eAAOO,IAAI,EAAX;AACD,OAvBD,CAuBE,OAAOM,CAAP,EAAe;AACf,aAAKT,MAAL,CAAYU,KAAZ,CAAkB,wBAAlB,EAA4CD,CAA5C;AACA,eAAOP,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,yCAArB,CAAP;AACD;AACF,KA7BW,EA8BZ,yDAA0B,KAAKZ,MAA/B,CA9BY,CAVZ;AAAE;;AAP4D","sourcesContent":["import type { NextFunction, Request, Response } from '@teambit/express';\nimport type { ComponentUrlParams, RegisteredComponentRoute } from '@teambit/component';\nimport { noPreview, serverError } from '@teambit/ui-foundation.ui.pages.static-error';\nimport type { Logger } from '@teambit/logger';\n\nimport type { PreviewMain } from './preview.main.runtime';\nimport type { PreviewArtifact } from './preview-artifact';\nimport { getArtifactFileMiddleware } from './artifact-file-middleware';\n\ntype UrlParams = ComponentUrlParams & {\n filePath?: string;\n};\n\n// Week for now\nconst CACHE_MAX_AGE = 60 * 60 * 24 * 7;\n\nexport class EnvTemplateRoute implements RegisteredComponentRoute {\n constructor(\n /**\n * preview extension.\n */\n private preview: PreviewMain,\n private logger: Logger\n ) {}\n\n route = `/env-template/:previewName/:filePath(*)`;\n method = 'get';\n\n // Since we might give it a core env id\n // Then in the component route when we do host.get(id) it will fail, as we don't have the core envs in the scope/workspace\n resolveComponent = false;\n\n // @ts-ignore\n middlewares = [\n async (req: Request<UrlParams>, res: Response, next: NextFunction) => {\n try {\n // @ts-ignore TODO: @guy please fix.\n // const component = req.component as Component | undefined;\n // if (!component) return res.status(404).send(noPreview());\n\n let artifact: PreviewArtifact | undefined;\n // TODO - prevent error `getVinylsAndImportIfMissing is not a function` #4680\n try {\n const { componentId: envId } = req.params;\n artifact = await this.preview.getEnvTemplateByEnvId(envId);\n } catch (e: any) {\n this.logger.error(`getEnvTemplateByEnvId has failed`, e);\n return res.status(404).send(noPreview());\n }\n\n // @ts-ignore\n req.artifact = artifact;\n // @ts-ignore\n req.isLegacyPath = false;\n\n res.set('Cache-control', `private, max-age=${CACHE_MAX_AGE}`);\n\n return next();\n } catch (e: any) {\n this.logger.error('failed getting preview', e);\n return res.status(500).send(serverError());\n }\n },\n getArtifactFileMiddleware(this.logger),\n ];\n}\n"]}
1
+ {"version":3,"sources":["env-template.route.ts"],"names":["CACHE_MAX_AGE","getCacheControl","_filePath","_contents","mimeType","undefined","EnvTemplateRoute","constructor","preview","logger","req","res","next","artifact","componentId","envId","params","getEnvTemplateByEnvId","e","error","status","send","isLegacyPath"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA;AACA,MAAMA,aAAa,GAAG,KAAK,EAAL,GAAU,EAAV,GAAe,CAArC;;AAEA,MAAMC,eAAoC,GAAG,CAACC,SAAD,EAAoBC,SAApB,EAAuCC,QAAvC,KAAoE;AAC/G;AACA,MAAIA,QAAQ,IAAIA,QAAQ,KAAK,WAA7B,EAA0C;AACxC,WAAOC,SAAP;AACD;;AACD,SAAQ,oBAAmBL,aAAc,EAAzC;AACD,CAND;;AAQO,MAAMM,gBAAN,CAA2D;AAChEC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,OAJC,EAKDC,MALC,EAMT;AAAA,SAFQD,OAER,GAFQA,OAER;AAAA,SADQC,MACR,GADQA,MACR;AAAA,mDAEO,yCAFP;AAAA,oDAGO,KAHP;AAAA,8DAOiB,KAPjB;AAAA,yDAUY,CACZ,OAAOC,GAAP,EAAgCC,GAAhC,EAA+CC,IAA/C,KAAsE;AACpE,UAAI;AACF;AACA;AACA;AAEA,YAAIC,QAAJ,CALE,CAMF;;AACA,YAAI;AACF,gBAAM;AAAEC,YAAAA,WAAW,EAAEC;AAAf,cAAyBL,GAAG,CAACM,MAAnC;AACAH,UAAAA,QAAQ,GAAG,MAAM,KAAKL,OAAL,CAAaS,qBAAb,CAAmCF,KAAnC,CAAjB;AACD,SAHD,CAGE,OAAOG,CAAP,EAAe;AACf,eAAKT,MAAL,CAAYU,KAAZ,CAAmB,kCAAnB,EAAsDD,CAAtD;AACA,iBAAOP,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,uCAArB,CAAP;AACD,SAbC,CAeF;;;AACAX,QAAAA,GAAG,CAACG,QAAJ,GAAeA,QAAf,CAhBE,CAiBF;;AACAH,QAAAA,GAAG,CAACY,YAAJ,GAAmB,KAAnB;AAEA,eAAOV,IAAI,EAAX;AACD,OArBD,CAqBE,OAAOM,CAAP,EAAe;AACf,aAAKT,MAAL,CAAYU,KAAZ,CAAkB,wBAAlB,EAA4CD,CAA5C;AACA,eAAOP,GAAG,CAACS,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB,yCAArB,CAAP;AACD;AACF,KA3BW,EA4BZ,yDAA0B,KAAKZ,MAA/B,EAAuCR,eAAvC,CA5BY,CAVZ;AAAE;;AAP4D","sourcesContent":["import type { NextFunction, Request, Response } from '@teambit/express';\nimport type { ComponentUrlParams, RegisteredComponentRoute } from '@teambit/component';\nimport { noPreview, serverError } from '@teambit/ui-foundation.ui.pages.static-error';\nimport type { Logger } from '@teambit/logger';\n\nimport type { PreviewMain } from './preview.main.runtime';\nimport type { PreviewArtifact } from './preview-artifact';\nimport { getArtifactFileMiddleware, GetCacheControlFunc } from './artifact-file-middleware';\n\ntype UrlParams = ComponentUrlParams & {\n filePath?: string;\n};\n\n// Week for now\nconst CACHE_MAX_AGE = 60 * 60 * 24 * 7;\n\nconst getCacheControl: GetCacheControlFunc = (_filePath: string, _contents: string, mimeType?: string | null) => {\n // Do not cache the html files\n if (mimeType && mimeType === 'text/html') {\n return undefined;\n }\n return `private, max-age=${CACHE_MAX_AGE}`;\n};\n\nexport class EnvTemplateRoute implements RegisteredComponentRoute {\n constructor(\n /**\n * preview extension.\n */\n private preview: PreviewMain,\n private logger: Logger\n ) {}\n\n route = `/env-template/:previewName/:filePath(*)`;\n method = 'get';\n\n // Since we might give it a core env id\n // Then in the component route when we do host.get(id) it will fail, as we don't have the core envs in the scope/workspace\n resolveComponent = false;\n\n // @ts-ignore\n middlewares = [\n async (req: Request<UrlParams>, res: Response, next: NextFunction) => {\n try {\n // @ts-ignore TODO: @guy please fix.\n // const component = req.component as Component | undefined;\n // if (!component) return res.status(404).send(noPreview());\n\n let artifact: PreviewArtifact | undefined;\n // TODO - prevent error `getVinylsAndImportIfMissing is not a function` #4680\n try {\n const { componentId: envId } = req.params;\n artifact = await this.preview.getEnvTemplateByEnvId(envId);\n } catch (e: any) {\n this.logger.error(`getEnvTemplateByEnvId has failed`, e);\n return res.status(404).send(noPreview());\n }\n\n // @ts-ignore\n req.artifact = artifact;\n // @ts-ignore\n req.isLegacyPath = false;\n\n return next();\n } catch (e: any) {\n this.logger.error('failed getting preview', e);\n return res.status(500).send(serverError());\n }\n },\n getArtifactFileMiddleware(this.logger, getCacheControl),\n ];\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/preview",
3
- "version": "0.0.682",
3
+ "version": "0.0.683",
4
4
  "homepage": "https://bit.dev/teambit/preview/preview",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.preview",
8
8
  "name": "preview",
9
- "version": "0.0.682"
9
+ "version": "0.0.683"
10
10
  },
11
11
  "dependencies": {
12
12
  "mime": "2.5.2",
@@ -21,26 +21,26 @@
21
21
  "graphql-request": "3.4.0",
22
22
  "@babel/runtime": "7.12.18",
23
23
  "core-js": "^3.0.0",
24
- "@teambit/express": "0.0.552",
25
- "@teambit/logger": "0.0.548",
24
+ "@teambit/express": "0.0.553",
25
+ "@teambit/logger": "0.0.549",
26
26
  "@teambit/ui-foundation.ui.pages.static-error": "0.0.72",
27
- "@teambit/builder": "0.0.682",
28
- "@teambit/bundler": "0.0.682",
29
- "@teambit/component": "0.0.682",
30
- "@teambit/aspect-loader": "0.0.682",
31
- "@teambit/envs": "0.0.682",
32
- "@teambit/isolator": "0.0.682",
27
+ "@teambit/builder": "0.0.683",
28
+ "@teambit/bundler": "0.0.683",
29
+ "@teambit/component": "0.0.683",
30
+ "@teambit/aspect-loader": "0.0.683",
31
+ "@teambit/envs": "0.0.683",
32
+ "@teambit/isolator": "0.0.683",
33
33
  "@teambit/toolbox.path.to-windows-compatible-path": "0.0.483",
34
34
  "@teambit/component-id": "0.0.402",
35
35
  "@teambit/bit-error": "0.0.394",
36
- "@teambit/cli": "0.0.456",
37
- "@teambit/dependency-resolver": "0.0.682",
38
- "@teambit/graphql": "0.0.682",
39
- "@teambit/pkg": "0.0.682",
40
- "@teambit/pubsub": "0.0.682",
41
- "@teambit/ui": "0.0.682",
42
- "@teambit/workspace": "0.0.682",
43
- "@teambit/compiler": "0.0.682",
36
+ "@teambit/cli": "0.0.457",
37
+ "@teambit/dependency-resolver": "0.0.683",
38
+ "@teambit/graphql": "0.0.683",
39
+ "@teambit/pkg": "0.0.683",
40
+ "@teambit/pubsub": "0.0.683",
41
+ "@teambit/ui": "0.0.683",
42
+ "@teambit/workspace": "0.0.683",
43
+ "@teambit/compiler": "0.0.683",
44
44
  "@teambit/preview.cli.preview-server-status": "0.0.491",
45
45
  "@teambit/preview.cli.webpack-events-listener": "0.0.161"
46
46
  },
@@ -59,7 +59,7 @@
59
59
  "@teambit/preview.aspect-docs.preview": "0.0.134"
60
60
  },
61
61
  "peerDependencies": {
62
- "@teambit/legacy": "1.0.235",
62
+ "@teambit/legacy": "1.0.236",
63
63
  "react-dom": "^16.8.0 || ^17.0.0",
64
64
  "react": "^16.8.0 || ^17.0.0"
65
65
  },
@@ -87,7 +87,7 @@
87
87
  "react": "-"
88
88
  },
89
89
  "peerDependencies": {
90
- "@teambit/legacy": "1.0.235",
90
+ "@teambit/legacy": "1.0.236",
91
91
  "react-dom": "^16.8.0 || ^17.0.0",
92
92
  "react": "^16.8.0 || ^17.0.0"
93
93
  }
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.682/dist/preview.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.682/dist/preview.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.683/dist/preview.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.preview_preview@0.0.683/dist/preview.docs.mdx')]