export default function()

in fusion-cli/plugins/assets-plugin.js [22:65]


export default function(dir /*: string */) {
  /* eslint-disable-next-line */
  return createPlugin/*:: <AssetsDepsType, AssetsType> */(
    {
      deps: {
        RouteTags: RouteTagsToken,
      },
      middleware: ({RouteTags}) => {
        const {baseAssetPath, env, dangerouslyExposeSourceMaps} = getEnv();
        const denyList = new Set();
        for (let chunk of chunks.values()) {
          if (!__DEV__ && !dangerouslyExposeSourceMaps) {
            // Add sourcemaps to static asset denylist
            denyList.add(`/${path.basename(chunk)}.map`);
          }
        }

        const assetMiddleware = serve(
          path.resolve(dir, `.fusion/dist/${env}/client`),
          {
            // setting defer here tells the `serve` middleware to `await next` first before
            // setting the response. This allows composition with user middleware
            defer: true,
            setHeaders: res => {
              // $FlowFixMe
              if (!module.hot) {
                res.setHeader('Cache-Control', 'public, max-age=31536000');
              }
              res.setHeader('Timing-Allow-Origin', '*');
            },
          }
        );

        return mount(baseAssetPath, (ctx, next) => {
          RouteTags.from(ctx).name = 'static_asset';
          if (denyList.has(ctx.url)) {
            return next();
          }
          return assetMiddleware(ctx, next);
        });
      },
    }
  );
}