b0VIM 8.1#!jƯ thouveninp-thouveni2~thouvenin/devel/ezs/packages/core/src/server/knownPipeline.jsutf-8 3210#"! UtpZX[adZb?&xS# _ = b a # l f J  O  d 6  70/_)V[&va[O8" u(H  const prepend2Pipeline = ezs.parseCommand(onlyOne(prepend)); }); return ezs.createCommand(mainCommand, environment); mainCommand.args.file = file; // Mandatory parameter const mainCommand = cloneDeep(ezs.parseCommand(mainStatement)); // but here, we want to modify the parameters, so the object must be cloned // parseCommand returns the same object for the same string debug('ezs:debug')(`${file} will be process by [${mainStatement}]`); const statements = files.map((file) => { const environment = { ...query, headers, request: { fusible, method, pathName } }; } = settings; metricsEnable, tracerEnable, mainStatement, const { } return true; response.end(); response.writeHead(200); if (method !== 'POST') { response.socket.setNoDelay(false); response.setHeader('X-Request-ID', fusible); response.setHeader('Content-Type', contentType); response.setHeader('Content-Disposition', contentDisposition); response.setHeader('Content-Encoding', contentEncoding); response.setHeader('Access-Control-Expose-Headers', '*'); response.setHeader('Access-Control-Allow-Headers', '*'); response.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); response.setHeader('Access-Control-Allow-Origin', '*'); const { prepend, append } = meta; const contentType = typeFrom(meta); const contentDisposition = dispositionFrom(meta); const contentEncoding = encodingFrom(headers); () => files.map((file) => ezs.metaFile(file)).reduce((prev, cur) => merge(cur, prev), {})); const meta = ezs.memoize(`executePipeline>${files}`, ); `PID ${process.pid} will execute ${pathName} commands with ${sizeof(query)}B of global parameters`, debug('ezs:debug')( } return false; triggerError(new Error(`Cannot find ${pathName}`), 404); if (files.length === 0) { .filter((file) => isFile(file))); .map((file) => join(request.serverPath, dirname(file), basename(file, '.ini').concat('.ini'))) .split(',') .slice(1) () => pathName const files = ezs.memoize(`knownPipeline>${pathName}`, const triggerError = errorHandler(ezs, request, response); debug('ezs:info')(`Create middleware 'knownPipeline' for ${method} ${pathName}`); const { query } = request.urlParsed; const { headers, fusible, method, pathName } = request; request.catched = true; } return next(); ) { || !request.isPipeline() || request.serverPath === false || !request.methodMatch(['POST', 'OPTIONS', 'HEAD']) if (request.catchedconst knownPipeline = (ezs) => (request, response, next) => {const onlyOne = (item) => (Array.isArray(item) ? item.shift() : item);const typeFrom = ({ mimeType }) => (mimeType || 'application/json');); && headers['accept-encoding'].match(/\bgzip\b/) ? 'gzip' : 'identity' && headers['accept-encoding']const encodingFrom = (headers) => (headersconst dispositionFrom = ({ extension }) => (extension ? `attachment; filename="dump.${extension}"` : 'inline');import settings from '../settings.js';import breaker from '../statements/breaker.js';import { isFile } from '../file.js';import errorHandler from './errorHandler.js';import { metricsHandle } from './metrics.js';import cloneDeep from 'lodash/cloneDeep.js';import merge from 'lodash/merge.js';import once from 'once';import { pipeline } from 'stream';import { PassThrough } from 'readable-stream';import sizeof from 'object-sizeof';import debug from 'debug';import { join, basename, dirname } from 'path';adpXQ6E?& q k 8  s 3 a  I +  p N -  dN=(_B7j$ psnHexport default knownPipeline;export default knownPipeline;}; export default knownPipelinexport default knownPipeline;}; requesexport default knownPipeline;}; exexport default knownPipeline;}; request.resume(); request.pipe(rawStream); }); rawStream.end(); .once('end', () => { }) } //transformedStream.destroy(new Error('No Content')); if (emptyStream) { .once('close', () => { }) triggerError(e, 500); rawStream.end(); request.unpipe(rawStream); .on('error', (e) => { }) rawStream.end(); request.unpipe(rawStream); .once('aborted', () => { request ); } } triggerError(e, 500); outputStream.unpipe(response); if (e) { (e) => { outputStream, ezs.compress(response.getHeaders()), ezs.toBuffer(), transformedStream, pipeline( }); transformedStream.destroy(); decodedStream.destroy(); rawStream.destroy(); triggerError(e, 400); outputStream.unpipe(response); .on('error', (e) => { .pipe(ezs.catch((e) => e)) }) rawStream.end(); request.unpipe(rawStream); .on('unpipe', () => { const transformedStream = ezs.createPipeline(decodedStream, statements) outputStream.pipe(response); const outputStream = new PassThrough(); .pipe(ezs.uncompress(request.headers)); .pipe(ezs('truncate', { length: request.headers['content-length'] })) const decodedStream = rawStream })); return feed.send(data); emptyStream = false; } response.writeHead(200); } response.writeContinue(); if (request.headers['expect'] === '100-continue') { if (!response.headersSent) { statements.push(ezs((data, feed) => { let emptyStream = true; const rawStream = new PassThrough(); statements.push(ezs(breaker, { fusible })); statements.unshift(ezs(breaker, { fusible })); } statements.push(ezs('metrics', { bucket: 'output' })); statements.unshift(ezs('metrics', { bucket: 'input' })); ezs.use({metrics: metricsHandle(pathName)}); if (metricsEnable) { } statements.push(ezs('tracer', { print: '.', last: '!' })); statements.unshift(ezs('tracer', { print: '-', last: '>' })); if (tracerEnable) { } statements.push(ezs.createCommand(append2Pipeline, environment)); if (append2Pipeline) { const append2Pipeline = ezs.parseCommand(onlyOne(append)); } statements.unshift(ezs.createCommand(prepend2Pipeline, environment)); if (prepend2Pipeline) {