fluxion-ts 0.0.11 → 0.0.12

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.
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
+ import path from 'node:path';
1
2
  import fs, { existsSync } from 'node:fs';
2
3
  import cluster from 'node:cluster';
3
4
  import os from 'node:os';
4
5
  import http from 'node:http';
5
- import path from 'node:path';
6
6
  import { pathToFileURL } from 'node:url';
7
7
 
8
8
  const ANSI_BACKGROUND_OFFSET = 10;
@@ -496,8 +496,15 @@ function dtm(dt = new Date()) {
496
496
  const $stringify = JSON.stringify;
497
497
  const $keys = Object.keys;
498
498
 
499
+ let logger = null;
500
+ let fluxionOptions = null;
501
+ const initializeGlobalState = (_options, _logger) => {
502
+ fluxionOptions = _options;
503
+ logger = _logger;
504
+ };
505
+
499
506
  function loadFunction(config) {
500
- return import(config.modulePath).then((m) => {
507
+ return import(path.join(fluxionOptions.moduleDir, config.modulePath)).then((m) => {
501
508
  if (typeof m.default !== 'function') {
502
509
  throw new Error(`[FluxionTs error] The default export of ${config.modulePath} should be a function`);
503
510
  }
@@ -693,14 +700,7 @@ function normalizeOptions(options) {
693
700
  };
694
701
  }
695
702
 
696
- let logger = null;
697
- let fluxionOptions = null;
698
- const initializeGlobalState = (_options, _logger) => {
699
- fluxionOptions = _options;
700
- logger = _logger;
701
- };
702
-
703
- const INJECTION_KEY = Symbol('fluxion.injection');
703
+ const INJECTION_KEY = Symbol.for('fluxion.injection');
704
704
  const isPrimaryMessage = (v) => [100 /* PrimaryAction.Ping */].includes(v?.type);
705
705
  const isWorkerMessage = (v) => [202 /* WorkerAction.Pong */, 200 /* WorkerAction.Created */, 201 /* WorkerAction.Ready */, 203 /* WorkerAction.Stats */].includes(v?.type);
706
706
 
@@ -1350,10 +1350,10 @@ const inject = async () => {
1350
1350
  const o = {};
1351
1351
  Reflect.set(globalThis, INJECTION_KEY, o);
1352
1352
  for (let i = 0; i < fluxionOptions.injections.length; i++) {
1353
- const { name, modulePath } = fluxionOptions.injections[i];
1354
- const factory = await import(path.join(fluxionOptions.moduleDir, modulePath)).then((m) => m.default);
1353
+ const injection = fluxionOptions.injections[i];
1354
+ const factory = await loadFunction(injection);
1355
1355
  const instance = await Promise.try(factory);
1356
- o[name] = instance;
1356
+ o[injection.name] = instance;
1357
1357
  }
1358
1358
  logger.info(`[worker ${process.pid}] injections loaded`, Object.keys(o));
1359
1359
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js","../src/common/dtm.ts","../src/common/native.ts","../src/common/injector.ts","../src/common/logger.ts","../src/common/expect.ts","../src/core/utils/options.ts","../src/core/cluster/global-state.ts","../src/core/cluster/consts.ts","../src/core/cluster/communicate.ts","../src/common/consts.ts","../src/core/utils/respond.ts","../src/core/cluster/meta-api.ts","../src/core/cluster/primary.ts","../src/core/utils/headers.ts","../src/core/utils/request.ts","../src/core/utils/query.ts","../src/core/utils/body.ts","../src/core/cluster/file-runtime.ts","../src/core/cluster/server.ts","../src/core/cluster/worker.ts","../src/core/fluxion.ts"],"sourcesContent":["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","export function dtm(dt = new Date()) {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, '0');\n const d = String(dt.getDate()).padStart(2, '0');\n const hh = String(dt.getHours()).padStart(2, '0');\n const mm = String(dt.getMinutes()).padStart(2, '0');\n const ss = String(dt.getSeconds()).padStart(2, '0');\n const ms = String(dt.getMilliseconds()).padStart(3, '0');\n return `${y}.${m}.${d} ${hh}:${mm}:${ss}.${ms}`;\n}\n","export const $stringify = JSON.stringify;\n\nexport const $keys = Object.keys;\n","import type { InjectionConfig } from '@/common/types.js';\n\nexport function loadFunction(config: InjectionConfig): Promise<Function> {\n return import(config.modulePath).then((m) => {\n if (typeof m.default !== 'function') {\n $throw(`The default export of ${config.modulePath} should be a function`);\n }\n return m.default;\n });\n}\n","import chalk from 'chalk';\nimport type { otherstring, InjectionConfig } from '@/common/types.js';\n\nimport { dtm } from './dtm.js';\nimport { $keys, $stringify } from './native.js';\nimport { loadFunction } from './injector.js';\n\ntype LogLevel = 'INFO' | 'WARN' | 'ERROR' | 'SUCC' | 'DEBUG' | 'VERBOSE' | otherstring;\n\ninterface LogEntry {\n timestamp: string;\n level: LogLevel;\n event: string;\n message?: string;\n [key: string]: unknown;\n}\n\ntype LoggerSink = (entry: LogEntry) => void;\n\nexport type LoggerOption = 'one-line' | 'json-line' | InjectionConfig;\n\nexport interface FluxionLogger {\n /**\n * [WARN] We assert that `fields` is an object or undefined.\n */\n write(level: LogLevel, event: string, fields?: object): void;\n info(event: string, fields?: object): void;\n warn(event: string, fields?: object): void;\n error(event: string, fields?: object): void;\n succ(event: string, fields?: object): void;\n debug(event: string, fields?: object): void;\n verbose(event: string, fields?: object): void;\n}\n\nconst safeStringify = (value: unknown): string => {\n try {\n return $stringify(value);\n } catch {\n return '[unserializable]';\n }\n};\n\nconst ColoredLevels: Record<LogLevel, string> = {\n INFO: chalk.hex('#0386e3')('INFO'),\n WARN: chalk.hex('#fb923c')('WARN'),\n ERROR: chalk.hex('#ef4444')('ERROR'),\n SUCC: chalk.hex('#22c55e')('SUCC'),\n DEBUG: chalk.hex('#d327e0')('DEBUG'),\n VERBOSE: chalk.hex('#36ffeb')('SUCC'),\n};\nconst TimestampColor = chalk.hex('#166534');\n\nexport const oneLineLogger: LoggerSink = (entry: LogEntry) => {\n const { level: rawLevel, timestamp: rawTimestamp, event: rawEvent, message: rawMessage, ...fields } = entry;\n\n const timestamp = TimestampColor(`[${rawTimestamp}]`);\n const level = ColoredLevels[rawLevel] ?? rawLevel;\n const body = rawMessage ?? rawEvent;\n const fieldsText = $keys(fields).length > 0 ? ` ${chalk.dim(safeStringify(fields))}` : '';\n\n console.log(`${timestamp} ${level} ${body}${fieldsText}`);\n};\n\n/**\n * & Logger Options here is checked by normalizeOptions function.\n */\nasync function resolveLoggerSink(option: LoggerOption | undefined): Promise<LoggerSink> {\n if (option === undefined || option === 'one-line') {\n return oneLineLogger;\n }\n\n if (option === 'json-line') {\n return (entry: LogEntry) => console.log(safeStringify(entry));\n }\n\n return loadFunction(option) as Promise<LoggerSink>;\n}\n\nexport async function createLogger(option: LoggerOption | undefined = 'one-line'): Promise<FluxionLogger> {\n const sink = await resolveLoggerSink(option);\n\n const logger: FluxionLogger = {\n write(level: LogLevel, event: string, fields: Record<string, unknown> = {}): void {\n const entry: LogEntry = {\n ...fields,\n timestamp: dtm(),\n level,\n event,\n };\n\n try {\n sink(entry);\n } catch {\n // Ignore logger sink failures to avoid breaking request handling.\n }\n },\n info(event: string, fields?: Record<string, unknown>): void {\n this.write('INFO', event, fields);\n },\n warn(event: string, fields?: Record<string, unknown>): void {\n this.write('WARN', event, fields);\n },\n error(event: string, fields?: Record<string, unknown>): void {\n this.write('ERROR', event, fields);\n },\n succ(event: string, fields?: Record<string, unknown>): void {\n this.write('SUCC', event, fields);\n },\n debug(event: string, fields?: Record<string, unknown>): void {\n this.write('DEBUG', event, fields);\n },\n verbose(event: string, fields?: Record<string, unknown>): void {\n this.write('VERBOSE', event, fields);\n },\n };\n\n return logger;\n}\n\n/**\n * ! Error.isError needs Node.js 24\n */\nexport const getErrorMessage = (error: unknown): string => (Error.isError(error) ? error.message : String(error));\n","export namespace whether {\n export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n };\n}\n\nexport namespace expect {\n export function isObject<T = Record<string, unknown>>(o: unknown, message: string): asserts o is T {\n if (typeof o !== 'object' || o === null) {\n $throw(message);\n }\n }\n\n export function isString(s: unknown, message: string): asserts s is string {\n if (typeof s !== 'string') {\n $throw(message);\n }\n }\n\n export function isNumber(n: unknown, message: string): asserts n is number {\n if (typeof n !== 'number') {\n $throw(message);\n }\n }\n\n export function isPositiveInteger(n: unknown, message: string): asserts n is number {\n if (typeof n !== 'number' || n <= 0 || !Number.isSafeInteger(n)) {\n $throw(message);\n }\n }\n\n export function isObjectArray<T = Record<string, unknown>>(arr: unknown, message: string): asserts arr is T[] {\n if (!Array.isArray(arr) || arr.some((item) => typeof item !== 'object' || item === null)) {\n $throw(message);\n }\n }\n}\n","import fs, { existsSync } from 'node:fs';\nimport type { LoggerOption } from '@/common/logger.js';\nimport type { InjectionConfig } from '@/common/types.js';\nimport { expect } from '@/common/expect.js';\n\nimport type { WorkerOptions, FluxionOptions, NormalizedFluxionOptions } from '../types.js';\n\n/**\n * Resolves runtime options with framework defaults.\n */\nfunction resolveWorkerOptions(options: Partial<WorkerOptions>): WorkerOptions {\n return {\n maxWorkerCount: options.maxWorkerCount ?? 4,\n requestTimeoutMs: options.requestTimeoutMs ?? 3000,\n maxInflight: options.maxInflight ?? 64,\n memorySoftLimitMb: options.memorySoftLimitMb ?? 96,\n memoryHardLimitMb: options.memoryHardLimitMb ?? 128,\n memorySampleIntervalMs: options.memorySampleIntervalMs ?? 5000,\n maxOldGenerationSizeMb: options.maxOldGenerationSizeMb ?? 128,\n maxYoungGenerationSizeMb: options.maxYoungGenerationSizeMb ?? 32,\n stackSizeMb: options.stackSizeMb ?? 4,\n maxResponseBytes: options.maxResponseBytes ?? 2 * 1024 * 1024,\n };\n}\n\nfunction expectLoggerOption(o: InjectionConfig | LoggerOption) {\n if (o === 'one-line' || o === 'json-line') {\n return;\n }\n if (typeof o === 'object' && o !== null && typeof o.modulePath === 'string' && typeof o.name === 'string') {\n return;\n }\n $throw(`Invalid logger option, must be 'one-line', 'json-line' or { modulePath: string; name: string; }`);\n}\n\n/**\n * Normalize options and create necessary resources like the dynamic directory and logger.\n */\nexport function normalizeOptions(options: FluxionOptions): NormalizedFluxionOptions {\n expect.isObject(options, 'FluxionOptions must be an object');\n\n let {\n dir,\n host,\n port,\n metaPort,\n injections = [],\n moduleDir = process.cwd(),\n workerOptions = {},\n maxRequestBytes = 8_000_000,\n } = options as FluxionOptions;\n const logger = options.logger ?? 'one-line';\n expectLoggerOption(logger);\n\n expect.isString(dir, 'FluxionOptions.dir must be a string');\n expect.isString(moduleDir, 'FluxionOptions.moduleDir must be a string');\n expect.isString(host, 'FluxionOptions.host must be a string');\n expect.isPositiveInteger(port, 'FluxionOptions.port must be a positive integer');\n if (port > 65535) {\n $throw('FluxionOptions.port must be less than or equal to 65535');\n }\n metaPort ??= port + 1;\n expect.isPositiveInteger(metaPort, 'FluxionOptions.metaPort must be a positive integer');\n if (metaPort > 65535) {\n $throw('FluxionOptions.metaPort must be less than or equal to 65535');\n }\n if (metaPort === port) {\n $throw('FluxionOptions.metaPort must be different from FluxionOptions.port');\n }\n expect.isObjectArray<InjectionConfig>(injections, 'FluxionOptions.injections must be an array of objects');\n expect.isObject(workerOptions, 'FluxionOptions.workerOptions must be an object');\n expect.isPositiveInteger(maxRequestBytes, 'FluxionOptions.maxRequestBytes must be a positive integer');\n\n if (!existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n return {\n dir,\n host,\n port,\n metaPort,\n injections,\n moduleDir,\n workerOptions: resolveWorkerOptions(workerOptions),\n maxRequestBytes,\n logger,\n };\n}\n","import type { FluxionLogger } from '@/common/logger.js';\nimport { NormalizedFluxionOptions } from '../types.js';\n\nexport let logger: FluxionLogger = null as any;\nexport let fluxionOptions: NormalizedFluxionOptions = null as any;\n\nexport const initializeGlobalState = (_options: NormalizedFluxionOptions, _logger: FluxionLogger) => {\n fluxionOptions = _options;\n logger = _logger;\n};\n","import type { PrimaryMessage as PrimaryMessage, WorkerMessage as WorkerMessage } from './types.js';\n\nexport const INJECTION_KEY = Symbol('fluxion.injection');\n\nexport const enum PrimaryAction {\n /**\n * Health check message, the worker should respond with Pong and the latency information\n */\n Ping = 100,\n}\n\nexport const enum WorkerAction {\n /**\n * Just created\n */\n Created = 200,\n\n /**\n * Ready for tasks\n * - fluxion options are injected\n */\n Ready,\n\n /**\n * Response to Ping, used for health check and latency measurement\n */\n Pong,\n\n /**\n * Runtime telemetry snapshot from worker process.\n */\n Stats,\n}\n\nexport const isPrimaryMessage = (v: PrimaryMessage): v is PrimaryMessage => [PrimaryAction.Ping].includes(v?.type);\n\nexport const isWorkerMessage = (v: WorkerMessage): v is WorkerMessage =>\n [WorkerAction.Pong, WorkerAction.Created, WorkerAction.Ready, WorkerAction.Stats].includes(v?.type);\n","import type cluster from 'node:cluster';\nimport type { PrimaryMessage, WorkerMessage } from './types.js';\n\nexport const sendToPrimary = (message: WorkerMessage) => process.send?.(message);\n\nexport const sendToWorker = (worker: cluster.Worker, message: PrimaryMessage) => worker.send(message);\n","export const DUMMY_BASE_URL = 'http://fluxion.local';\nexport const META_PREFIX = '/_fluxion';\n\nexport const STATIC_CONTENT_TYPES: Record<string, string> = {\n '.css': 'text/css; charset=utf-8',\n '.html': 'text/html; charset=utf-8',\n '.ico': 'image/x-icon',\n '.js': 'text/javascript; charset=utf-8',\n '.json': 'application/json; charset=utf-8',\n '.map': 'application/json; charset=utf-8',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.svg': 'image/svg+xml',\n '.txt': 'text/plain; charset=utf-8',\n '.webp': 'image/webp',\n};\n\nexport const enum HttpCode {\n Ok = 200,\n BadRequest = 400,\n PayloadTooLarge = 413,\n NotFound = 404,\n InternalServerError = 500,\n}\n\nexport const enum HandlerResult {\n NotFound,\n Handled,\n}\n","import type { ServerResponse } from 'node:http';\nimport { HttpCode } from '@/common/consts.js';\n\nexport function sendJson(res: ServerResponse, payload: unknown, statusCode: HttpCode = HttpCode.Ok): void {\n res.statusCode = statusCode;\n res.setHeader('Content-Type', 'application/json; charset=utf-8');\n res.end(JSON.stringify(payload));\n}\n\nexport function safeSendJson(res: ServerResponse, payload: unknown, statusCode: HttpCode = HttpCode.Ok): void {\n if (res.writableEnded) {\n return;\n }\n\n if (res.headersSent) {\n res.end();\n return;\n }\n\n sendJson(res, payload, statusCode);\n}\n","import http from 'node:http';\n\nimport type { FluxionLogger } from '@/common/logger.js';\nimport { getErrorMessage } from '@/common/logger.js';\nimport { HttpCode, META_PREFIX } from '@/common/consts.js';\nimport { sendJson } from '../utils/respond.js';\n\nexport interface PrimaryMetaApiOptions {\n host: string;\n port: number;\n logger: FluxionLogger;\n getWorkersSnapshot: () => unknown;\n}\n\nexport function createPrimaryMetaApiServer(options: PrimaryMetaApiOptions): http.Server {\n const server = http.createServer((req, res) => {\n const method = req.method ?? 'GET';\n\n let pathname = '/';\n try {\n pathname = new URL(req.url ?? '/', 'http://fluxion.local').pathname;\n } catch {\n sendJson(res, { message: 'Bad Request: invalid url' }, HttpCode.BadRequest);\n return;\n }\n\n if (method === 'GET' && pathname === META_PREFIX + '/healthz') {\n sendJson(res, {\n ok: true,\n role: 'primary',\n pid: process.pid,\n now: Date.now(),\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n });\n return;\n }\n\n if (method === 'GET' && pathname === META_PREFIX + '/workers') {\n sendJson(res, {\n ok: true,\n now: Date.now(),\n workers: options.getWorkersSnapshot(),\n });\n return;\n }\n\n sendJson(res, { message: 'Not Found' }, HttpCode.NotFound);\n });\n\n server.on('listening', () => {\n options.logger.info('MetaApiStarted', {\n pid: process.pid,\n host: options.host,\n port: options.port,\n prefix: META_PREFIX,\n });\n });\n\n server.on('error', (error) => {\n options.logger.error('MetaApiError', {\n host: options.host,\n port: options.port,\n error: getErrorMessage(error),\n });\n process.exit(1);\n });\n\n server.listen(options.port, options.host);\n return server;\n}\n","import os from 'node:os';\nimport cluster from 'node:cluster';\n\nimport type { WorkerMessage, WorkerState } from './types.js';\nimport { fluxionOptions, logger } from './global-state.js';\nimport { isWorkerMessage, WorkerAction, PrimaryAction } from './consts.js';\nimport { sendToWorker } from './communicate.js';\nimport { createPrimaryMetaApiServer } from './meta-api.js';\n\nconst bytesToMb = (bytes: number) => Number((bytes / 1024 / 1024).toFixed(2));\n\nexport function initPrimary() {\n if (!cluster.isPrimary) {\n $throw('createPrimary should only be called in primary process');\n }\n\n const { workerOptions } = fluxionOptions;\n const cpuCount = Math.max(1, os.cpus().length);\n const workerCount = Math.max(1, Math.min(workerOptions.maxWorkerCount ?? Math.min(2, cpuCount), cpuCount));\n\n logger.info('PrimaryStarted', {\n pid: process.pid,\n workers: workerCount,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n metaPort: fluxionOptions.metaPort,\n });\n\n const workers = new Map<number, WorkerState>();\n\n const getWorkersSnapshot = () => {\n return {\n primaryPid: process.pid,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n metaPort: fluxionOptions.metaPort,\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n workers: Array.from(workers.entries()).map(([workerId, info]) => {\n const { instance } = info;\n const stats = info.lastStats;\n return {\n workerId,\n pid: info.pid ?? instance.process.pid ?? null,\n state: info.state,\n createdAt: info.createdAt,\n readyAt: info.readyAt ?? null,\n connected: instance.isConnected(),\n dead: instance.isDead(),\n exitedAfterDisconnect: instance.exitedAfterDisconnect,\n lastPongAt: info.lastPongAt ?? null,\n lastRttMs: info.lastRttMs ?? null,\n stats:\n stats === undefined\n ? null\n : {\n at: stats.at,\n uptimeSeconds: stats.uptimeSeconds,\n cpu: stats.cpu,\n memory: {\n ...stats.memory,\n rssMb: bytesToMb(stats.memory.rss),\n heapTotalMb: bytesToMb(stats.memory.heapTotal),\n heapUsedMb: bytesToMb(stats.memory.heapUsed),\n externalMb: bytesToMb(stats.memory.external),\n arrayBuffersMb: bytesToMb(stats.memory.arrayBuffers),\n },\n },\n };\n }),\n };\n };\n\n createPrimaryMetaApiServer({\n host: fluxionOptions.host,\n port: fluxionOptions.metaPort,\n logger,\n getWorkersSnapshot,\n });\n\n const attachWorker = (worker: cluster.Worker): void => {\n const workerInfo: WorkerState = {\n state: 'creating',\n pid: worker.process.pid,\n createdAt: Date.now(),\n instance: worker,\n };\n workers.set(worker.id, workerInfo);\n\n worker.on('message', (raw: WorkerMessage) => {\n if (!isWorkerMessage(raw)) {\n return;\n }\n\n if (raw.type === WorkerAction.Pong) {\n const rtt = Date.now() - raw.sentAt;\n workerInfo.pid = raw.pid;\n workerInfo.lastPongAt = Date.now();\n workerInfo.lastRttMs = rtt;\n return;\n }\n\n if (raw.type === WorkerAction.Ready) {\n workerInfo.state = 'ready';\n workerInfo.pid = raw.pid;\n workerInfo.readyAt = Date.now();\n logger.info('WorkerReady', { workerId: worker.id, pid: raw.pid });\n return;\n }\n\n if (raw.type === WorkerAction.Created) {\n workerInfo.state = 'created';\n workerInfo.pid = raw.pid;\n logger.info('WorkerCreated', { workerId: worker.id, pid: raw.pid });\n return;\n }\n\n if (raw.type === WorkerAction.Stats) {\n workerInfo.pid = raw.pid;\n workerInfo.lastStats = raw.stats;\n }\n });\n\n worker.on('exit', (code, signal) => {\n workers.delete(worker.id);\n logger.warn('WorkerExited', {\n workerId: worker.id,\n pid: worker.process.pid ?? 'unknown',\n code,\n signal: signal ?? 'none',\n });\n });\n };\n\n for (let i = 0; i < workerCount; i++) {\n attachWorker(cluster.fork({ WORKER_ID: String(i + 1) }));\n }\n\n const pingTimer = setInterval(() => {\n const sentAt = Date.now();\n for (const info of workers.values()) {\n if (!info.instance.isConnected()) {\n continue;\n }\n try {\n sendToWorker(info.instance, { type: PrimaryAction.Ping, sentAt });\n } catch {\n // Ignore transient IPC errors; worker lifecycle events will reconcile state.\n }\n }\n }, 5000);\n pingTimer.unref();\n}\n","import type { IncomingMessage } from 'node:http';\n\nexport function getRealIp(req: IncomingMessage): string {\n const forwardedFor = req.headersDistinct['x-forwarded-for'];\n if (forwardedFor) {\n const firstForwarded = forwardedFor[0]?.split(',')[0]?.trim();\n if (firstForwarded && firstForwarded.length > 0) {\n return firstForwarded;\n }\n }\n\n const realIp = req.headersDistinct['x-real-ip']?.[0].trim();\n if (realIp !== undefined) {\n return realIp;\n }\n\n return req.socket.remoteAddress ?? 'unknown';\n}\n\nexport function isTextualContentType(contentType: string | undefined): boolean {\n if (contentType === undefined) {\n return false;\n }\n\n const normalized = contentType.toLowerCase();\n\n return (\n normalized.startsWith('text/') ||\n normalized.includes('json') ||\n normalized.includes('xml') ||\n normalized.includes('x-www-form-urlencoded') ||\n normalized.includes('javascript')\n );\n}\n","import { DUMMY_BASE_URL } from '@/common/consts.js';\n\nexport function toURL(rawUrl: string | undefined): URL | undefined {\n if (rawUrl === undefined) {\n return undefined;\n }\n\n try {\n return new URL(rawUrl, DUMMY_BASE_URL);\n } catch {\n return undefined;\n }\n}\n","export function parseQuery(searchParams: URLSearchParams): Record<string, string | string[]> {\n const query: Record<string, string | string[]> = {};\n\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key];\n\n if (existing === undefined) {\n query[key] = value;\n continue;\n }\n\n if (Array.isArray(existing)) {\n existing.push(value);\n continue;\n }\n\n query[key] = [existing, value];\n }\n\n return query;\n}\n","import type http from 'node:http';\n\nimport { isTextualContentType } from './headers.js';\nimport { parseQuery } from './query.js';\n\nexport interface BodyPreview {\n exists: boolean;\n value?: string;\n bytes: number;\n truncated: boolean;\n}\n\nfunction createRequestBodyTooLargeError(receivedBytes: number, maxBytes: number): NodeJS.ErrnoException {\n const sizeError = new Error(\n `request body too large: ${receivedBytes.toString()} bytes exceeds ${maxBytes.toString()} bytes`,\n ) as NodeJS.ErrnoException;\n\n sizeError.code = 'REQUEST_BODY_TOO_LARGE';\n\n return sizeError;\n}\n\nfunction getHeaderValue(headerValue: string | string[] | undefined): string | undefined {\n return Array.isArray(headerValue) ? headerValue[0] : headerValue;\n}\n\nfunction createEmptyPreview(): BodyPreview {\n return {\n exists: false,\n bytes: 0,\n truncated: false,\n };\n}\n\nfunction createPreview(\n previewBuffer: Buffer,\n totalBytes: number,\n contentType: string | undefined,\n truncated: boolean,\n): BodyPreview {\n if (totalBytes === 0) {\n return createEmptyPreview();\n }\n\n if (isTextualContentType(contentType)) {\n return {\n exists: true,\n value: previewBuffer.toString('utf8'),\n bytes: totalBytes,\n truncated,\n };\n }\n\n return {\n exists: true,\n value: `<binary body: ${totalBytes} bytes>`,\n bytes: totalBytes,\n truncated,\n };\n}\n\nasync function readRequestBodyWithPreview(\n req: http.IncomingMessage,\n method: string,\n maxBytes: number,\n previewMaxBytes = 8192,\n): Promise<{ rawBody: Buffer | undefined; preview: BodyPreview }> {\n if (method === 'GET' || method === 'HEAD') {\n return {\n rawBody: undefined,\n preview: createEmptyPreview(),\n };\n }\n\n if (req.readableEnded) {\n return {\n rawBody: undefined,\n preview: createEmptyPreview(),\n };\n }\n\n const contentLengthRaw = getHeaderValue(req.headers['content-length']);\n const declaredBytes = contentLengthRaw !== undefined ? Number.parseInt(contentLengthRaw, 10) : NaN;\n\n if (Number.isFinite(declaredBytes) && declaredBytes > maxBytes) {\n throw createRequestBodyTooLargeError(declaredBytes, maxBytes);\n }\n\n return new Promise((resolve, reject) => {\n const rawBodyChunks: Buffer[] = [];\n const previewChunks: Buffer[] = [];\n let totalBytes = 0;\n let previewBytes = 0;\n let previewTruncated = false;\n let settled = false;\n\n const cleanup = (): void => {\n req.off('data', onData);\n req.off('end', onEnd);\n req.off('error', onError);\n req.off('aborted', onAborted);\n };\n\n const settle = (action: () => void): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n action();\n };\n\n const onData = (chunk: Buffer | string | Uint8Array): void => {\n const bufferChunk = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n totalBytes += bufferChunk.byteLength;\n\n if (totalBytes > maxBytes) {\n cleanup();\n req.resume();\n settle(() => {\n reject(createRequestBodyTooLargeError(totalBytes, maxBytes));\n });\n return;\n }\n\n rawBodyChunks.push(bufferChunk);\n\n if (previewBytes < previewMaxBytes) {\n const remaining = previewMaxBytes - previewBytes;\n const nextSlice = bufferChunk.subarray(0, remaining);\n previewChunks.push(nextSlice);\n previewBytes += nextSlice.length;\n\n if (nextSlice.length < bufferChunk.length) {\n previewTruncated = true;\n }\n } else {\n previewTruncated = true;\n }\n };\n\n const onEnd = (): void => {\n cleanup();\n settle(() => {\n const rawBody = rawBodyChunks.length > 0 ? Buffer.concat(rawBodyChunks) : undefined;\n const previewBuffer = previewChunks.length > 0 ? Buffer.concat(previewChunks) : Buffer.alloc(0);\n\n resolve({\n rawBody,\n preview: createPreview(\n previewBuffer,\n rawBody?.byteLength ?? 0,\n getHeaderValue(req.headers['content-type']),\n previewTruncated,\n ),\n });\n });\n };\n\n const onError = (error: Error): void => {\n cleanup();\n settle(() => {\n reject(error);\n });\n };\n\n const onAborted = (): void => {\n cleanup();\n settle(() => {\n reject(new Error('request aborted while reading body'));\n });\n };\n\n req.on('data', onData);\n req.once('end', onEnd);\n req.once('error', onError);\n req.once('aborted', onAborted);\n });\n}\n\nexport async function parseBody(\n req: http.IncomingMessage,\n method: string,\n maxBytes: number,\n): Promise<{ body: Record<string, any>; preview: BodyPreview }> {\n const { rawBody, preview } = await readRequestBodyWithPreview(req, method, maxBytes);\n\n if (rawBody === undefined || rawBody.byteLength === 0) {\n return {\n body: {},\n preview,\n };\n }\n\n const contentType = getHeaderValue(req.headers['content-type'])?.toLowerCase() ?? '';\n\n if (contentType.includes('json')) {\n const textBody = rawBody.toString('utf8').trim();\n\n if (textBody.length === 0) {\n return {\n body: {},\n preview,\n };\n }\n\n try {\n const parsed = JSON.parse(textBody) as unknown;\n\n if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return {\n body: parsed as Record<string, any>,\n preview,\n };\n }\n\n return {\n body: { value: parsed },\n preview,\n };\n } catch {\n return {\n body: { raw: textBody },\n preview,\n };\n }\n }\n\n if (contentType.includes('x-www-form-urlencoded')) {\n return {\n body: parseQuery(new URLSearchParams(rawBody.toString('utf8'))),\n preview,\n };\n }\n\n if (isTextualContentType(contentType)) {\n return {\n body: { raw: rawBody.toString('utf8') },\n preview,\n };\n }\n\n return {\n body: {},\n preview,\n };\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport http from 'node:http';\nimport cluster from 'node:cluster';\nimport { pathToFileURL } from 'node:url';\n\nimport { STATIC_CONTENT_TYPES } from '@/common/consts.js';\nimport type { FluxionHandler, NormalizedRequest } from '../types.js';\nimport { fluxionOptions } from './global-state.js';\n\nconst parsePathname = (dir: string, pathname: string) => {\n const parts = pathname.split('/');\n if (parts.length === 0) {\n $throw(`Invalid pathname: ${pathname}`);\n }\n\n parts[0] = dir;\n const name = parts.at(-1) as string;\n return { rawPath: path.join(...parts), filename: name };\n};\n\n/**\n * ! Make sure `fullpath` exists before calling this function\n */\nconst importHandler = async (fullpath: string, stat?: fs.Stats): Promise<FluxionHandler> => {\n stat ??= fs.statSync(fullpath);\n const source = `${pathToFileURL(fullpath).href}?v=${stat.mtimeMs}:${stat.size}`;\n const o = await import(source);\n\n if (typeof o.default === 'function') {\n return o.default as FluxionHandler;\n }\n if (typeof o.handler === 'function') {\n return o.handler as FluxionHandler;\n }\n\n $throw(\n `Invalid JS Module '${fullpath}', make sure it has a default export or named export called \"handler\" which is a function`,\n );\n};\n\nconst replyStaticResources = <\n Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,\n Response extends typeof http.ServerResponse = typeof http.ServerResponse,\n>(\n req: InstanceType<Request>,\n res: InstanceType<Response> & { req: InstanceType<Request> },\n normalized: NormalizedRequest,\n fullpath: string,\n filename?: string,\n): any => {\n filename ??= path.basename(fullpath);\n if (normalized.method !== 'GET' && normalized.method !== 'HEAD') {\n res.statusCode = 405;\n res.setHeader('Allow', 'GET, HEAD');\n res.end();\n return;\n }\n\n const stat = fs.statSync(fullpath);\n if (!stat.isFile()) {\n $throw(`${filename} is not a file`);\n }\n\n const extension = path.extname(filename).toLowerCase();\n const contentType = STATIC_CONTENT_TYPES[extension] ?? 'application/octet-stream';\n\n res.statusCode = 200;\n res.setHeader('Content-Type', contentType);\n res.setHeader('Content-Length', String(stat.size));\n\n if (normalized.method === 'HEAD') {\n res.end();\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n const stream = fs.createReadStream(fullpath);\n stream.on('error', reject);\n stream.on('end', resolve);\n stream.pipe(res);\n });\n};\n\nconst findFromMjs = (fullpath: string): Promise<FluxionHandler> => {\n const stat = fs.statSync(fullpath);\n if (!stat.isFile()) {\n $throw(`${path.dirname(fullpath)} is not a file`);\n }\n return importHandler(fullpath);\n};\n\nexport async function findHandler(url: URL): Promise<FluxionHandler> {\n if (cluster.isPrimary) {\n $throw('createFileRuntime should only be called in worker process');\n }\n const { rawPath, filename } = parsePathname(fluxionOptions.dir, url.pathname);\n\n if (fs.existsSync(rawPath)) {\n const stat = fs.statSync(rawPath);\n if (stat.isFile()) {\n if (/\\.mjs/i.test(filename)) {\n return importHandler(rawPath, stat);\n } else {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, rawPath);\n }\n }\n\n if (stat.isDirectory()) {\n const mjsPath = path.join(rawPath, 'index.mjs');\n if (fs.existsSync(mjsPath)) {\n return findFromMjs(mjsPath);\n }\n\n const htmlPath = path.join(rawPath, 'index.html');\n if (fs.existsSync(htmlPath)) {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, htmlPath, 'index.html');\n }\n\n $throw(`${filename} is a directory, but has no valid index.mjs/index.html inside`);\n }\n\n $throw(`${filename} is not a file nor a directory`);\n }\n\n const rawPathMjs = rawPath + '.mjs';\n if (fs.existsSync(rawPathMjs)) {\n return findFromMjs(rawPathMjs);\n }\n\n const rawPathHtml = rawPath + '.html';\n if (fs.existsSync(rawPathHtml)) {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, rawPathHtml);\n }\n\n $throw('Not Found');\n}\n","import http from 'node:http';\n\nimport type { NormalizedRequest } from '../types.js';\nimport { $keys } from '@/common/native.js';\nimport { HttpCode, META_PREFIX } from '@/common/consts.js';\nimport { getErrorMessage } from '@/common/logger.js';\nimport { fluxionOptions, logger } from './global-state.js';\n\nimport { getRealIp } from '../utils/headers.js';\nimport { toURL } from '../utils/request.js';\nimport { safeSendJson } from '../utils/respond.js';\nimport { parseBody, type BodyPreview } from '../utils/body.js';\nimport { parseQuery } from '../utils/query.js';\nimport { findHandler } from './file-runtime.js';\n\nexport function createWorkerServer(): http.Server {\n const server = http.createServer(async (req, res) => {\n const method = req.method ?? 'GET';\n const ip = getRealIp(req);\n const url = toURL(req.url);\n if (url === undefined) {\n safeSendJson(res, { message: 'Bad Request: req.url is undefined' }, HttpCode.BadRequest);\n return;\n }\n\n const normalized: NormalizedRequest = {\n method,\n ip,\n url,\n query: parseQuery(url.searchParams),\n body: {},\n };\n\n let bodyPreview: BodyPreview = {\n exists: false,\n bytes: 0,\n truncated: false,\n };\n\n logger.info('Req', { method, ip, path: url.pathname });\n\n const start = performance.now();\n res.once('finish', () => {\n const fields: Record<string, unknown> = {\n workerId: process.env.WORKER_ID ?? '[primary]',\n method,\n ip,\n path: url.pathname,\n status: res.statusCode,\n duration: (performance.now() - start).toFixed(4),\n };\n\n if ($keys(normalized.query).length > 0) {\n fields.query = normalized.query;\n }\n\n if (bodyPreview.exists) {\n fields.body = bodyPreview.value;\n fields.bodyBytes = bodyPreview.bytes;\n fields.bodyTruncated = bodyPreview.truncated;\n }\n\n logger.info('Res', fields);\n });\n\n // * Start request handling\n try {\n if (normalized.url.pathname.startsWith(META_PREFIX + '/')) {\n safeSendJson(res, { message: `Meta APIs are available on port ${fluxionOptions.metaPort}` }, HttpCode.NotFound);\n return;\n }\n\n const parsed = await parseBody(req, normalized.method, fluxionOptions.maxRequestBytes);\n normalized.body = parsed.body;\n bodyPreview = parsed.preview;\n\n const handler = await findHandler(url);\n const result = await Promise.try(handler, req, res, normalized);\n safeSendJson(res, result);\n } catch (error) {\n logger.error('RequestFailed', {\n method: normalized.method,\n ip: normalized.ip,\n path: normalized.url.pathname,\n error: getErrorMessage(error),\n });\n\n if ((error as NodeJS.ErrnoException).code === 'REQUEST_BODY_TOO_LARGE') {\n safeSendJson(res, { message: getErrorMessage(error) }, HttpCode.PayloadTooLarge);\n } else {\n safeSendJson(res, { message: 'Internal Server Error' }, HttpCode.InternalServerError);\n }\n }\n });\n\n server.on('close', () => {\n logger.info('ServerClosed', {\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n });\n });\n\n server.listen(fluxionOptions.port, fluxionOptions.host, () => {\n logger.info('ServerStarted', {\n pid: process.pid,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n });\n logger.info('DynamicDirectory', { directory: fluxionOptions.dir });\n });\n\n server.on('error', (error) => {\n logger.error('ServerError', {\n error: getErrorMessage(error),\n });\n });\n\n return server;\n}\n","import path from 'node:path';\nimport cluster from 'node:cluster';\nimport type { PrimaryMessage } from './types.js';\n\nimport { getErrorMessage } from '@/common/logger.js';\nimport { logger, fluxionOptions } from './global-state.js';\nimport { WorkerAction, PrimaryAction, isPrimaryMessage, INJECTION_KEY } from './consts.js';\nimport { sendToPrimary } from './communicate.js';\nimport { createWorkerServer } from './server.js';\n\nconst inject = async () => {\n const o = {} as any;\n Reflect.set(globalThis, INJECTION_KEY, o);\n for (let i = 0; i < fluxionOptions.injections.length; i++) {\n const { name, modulePath } = fluxionOptions.injections[i];\n const factory = await import(path.join(fluxionOptions.moduleDir, modulePath)).then((m) => m.default);\n const instance = await Promise.try(factory);\n o[name] = instance;\n }\n logger.info(`[worker ${process.pid}] injections loaded`, Object.keys(o));\n};\n\nconst startStatsReporter = () => {\n let previousCpuUsage = process.cpuUsage();\n let previousAt = Date.now();\n\n const interval = setInterval(() => {\n const now = Date.now();\n const elapsedMicros = Math.max(1, (now - previousAt) * 1000);\n const cpuDelta = process.cpuUsage(previousCpuUsage);\n const cpuPercent = Number((((cpuDelta.user + cpuDelta.system) / elapsedMicros) * 100).toFixed(2));\n\n previousCpuUsage = process.cpuUsage();\n previousAt = now;\n\n const memoryUsage = process.memoryUsage();\n sendToPrimary({\n type: WorkerAction.Stats,\n pid: process.pid,\n stats: {\n at: now,\n pid: process.pid,\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n cpu: {\n userMicros: cpuDelta.user,\n systemMicros: cpuDelta.system,\n percent: cpuPercent,\n },\n memory: {\n rss: memoryUsage.rss,\n heapTotal: memoryUsage.heapTotal,\n heapUsed: memoryUsage.heapUsed,\n external: memoryUsage.external,\n arrayBuffers: memoryUsage.arrayBuffers,\n },\n },\n });\n }, 2000);\n\n interval.unref();\n};\n\nexport function initWorker() {\n if (cluster.isPrimary) {\n $throw('createWorker should only be called in worker process');\n }\n\n process.on('message', (raw: PrimaryMessage) => {\n if (!isPrimaryMessage(raw)) {\n return;\n }\n\n if (raw.type === PrimaryAction.Ping) {\n sendToPrimary({ type: WorkerAction.Pong, pid: process.pid, sentAt: raw.sentAt, receivedAt: Date.now() });\n return;\n }\n });\n\n sendToPrimary({ type: WorkerAction.Created, pid: process.pid });\n startStatsReporter();\n\n Promise.try(async () => {\n await inject();\n createWorkerServer();\n sendToPrimary({ type: WorkerAction.Ready, pid: process.pid });\n }).catch((error) => {\n logger.error('WorkerBootstrapFailed', {\n pid: process.pid,\n error: getErrorMessage(error),\n });\n process.exit(1);\n });\n}\n","import type { FluxionOptions } from './types.js';\n\nimport { createLogger } from '@/common/logger.js';\nimport { normalizeOptions } from './utils/options.js';\nimport { initializeGlobalState } from './cluster/global-state.js';\nimport cluster from 'node:cluster';\nimport { initPrimary } from './cluster/primary.js';\nimport { initWorker } from './cluster/worker.js';\n\nexport async function fluxion(options: FluxionOptions) {\n const normalized = normalizeOptions(options);\n\n const logger = await createLogger(normalized.logger);\n initializeGlobalState(normalized, logger);\n\n if (cluster.isPrimary) {\n initPrimary();\n } else {\n initWorker();\n }\n}\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"index.mjs","sources":["../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/utilities.js","../node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js","../src/common/dtm.ts","../src/common/native.ts","../src/core/cluster/global-state.ts","../src/common/injector.ts","../src/common/logger.ts","../src/common/expect.ts","../src/core/utils/options.ts","../src/core/cluster/consts.ts","../src/core/cluster/communicate.ts","../src/common/consts.ts","../src/core/utils/respond.ts","../src/core/cluster/meta-api.ts","../src/core/cluster/primary.ts","../src/core/utils/headers.ts","../src/core/utils/request.ts","../src/core/utils/query.ts","../src/core/utils/body.ts","../src/core/cluster/file-runtime.ts","../src/core/cluster/server.ts","../src/core/cluster/worker.ts","../src/core/fluxion.ts"],"sourcesContent":["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","export function dtm(dt = new Date()) {\n const y = dt.getFullYear();\n const m = String(dt.getMonth() + 1).padStart(2, '0');\n const d = String(dt.getDate()).padStart(2, '0');\n const hh = String(dt.getHours()).padStart(2, '0');\n const mm = String(dt.getMinutes()).padStart(2, '0');\n const ss = String(dt.getSeconds()).padStart(2, '0');\n const ms = String(dt.getMilliseconds()).padStart(3, '0');\n return `${y}.${m}.${d} ${hh}:${mm}:${ss}.${ms}`;\n}\n","export const $stringify = JSON.stringify;\n\nexport const $keys = Object.keys;\n","import type { FluxionLogger } from '@/common/logger.js';\nimport { NormalizedFluxionOptions } from '../types.js';\n\nexport let logger: FluxionLogger = null as any;\nexport let fluxionOptions: NormalizedFluxionOptions = null as any;\n\nexport const initializeGlobalState = (_options: NormalizedFluxionOptions, _logger: FluxionLogger) => {\n fluxionOptions = _options;\n logger = _logger;\n};\n","import path from 'node:path';\nimport type { InjectionConfig } from '@/common/types.js';\nimport { fluxionOptions } from '@/core/cluster/global-state.js';\n\nexport function loadFunction(config: InjectionConfig): Promise<(...args: any[]) => any> {\n return import(path.join(fluxionOptions.moduleDir, config.modulePath)).then((m) => {\n if (typeof m.default !== 'function') {\n $throw(`The default export of ${config.modulePath} should be a function`);\n }\n return m.default;\n });\n}\n","import chalk from 'chalk';\nimport type { otherstring, InjectionConfig } from '@/common/types.js';\n\nimport { dtm } from './dtm.js';\nimport { $keys, $stringify } from './native.js';\nimport { loadFunction } from './injector.js';\n\ntype LogLevel = 'INFO' | 'WARN' | 'ERROR' | 'SUCC' | 'DEBUG' | 'VERBOSE' | otherstring;\n\ninterface LogEntry {\n timestamp: string;\n level: LogLevel;\n event: string;\n message?: string;\n [key: string]: unknown;\n}\n\ntype LoggerSink = (entry: LogEntry) => void;\n\nexport type LoggerOption = 'one-line' | 'json-line' | InjectionConfig;\n\nexport interface FluxionLogger {\n /**\n * [WARN] We assert that `fields` is an object or undefined.\n */\n write(level: LogLevel, event: string, fields?: object): void;\n info(event: string, fields?: object): void;\n warn(event: string, fields?: object): void;\n error(event: string, fields?: object): void;\n succ(event: string, fields?: object): void;\n debug(event: string, fields?: object): void;\n verbose(event: string, fields?: object): void;\n}\n\nconst safeStringify = (value: unknown): string => {\n try {\n return $stringify(value);\n } catch {\n return '[unserializable]';\n }\n};\n\nconst ColoredLevels: Record<LogLevel, string> = {\n INFO: chalk.hex('#0386e3')('INFO'),\n WARN: chalk.hex('#fb923c')('WARN'),\n ERROR: chalk.hex('#ef4444')('ERROR'),\n SUCC: chalk.hex('#22c55e')('SUCC'),\n DEBUG: chalk.hex('#d327e0')('DEBUG'),\n VERBOSE: chalk.hex('#36ffeb')('SUCC'),\n};\nconst TimestampColor = chalk.hex('#166534');\n\nexport const oneLineLogger: LoggerSink = (entry: LogEntry) => {\n const { level: rawLevel, timestamp: rawTimestamp, event: rawEvent, message: rawMessage, ...fields } = entry;\n\n const timestamp = TimestampColor(`[${rawTimestamp}]`);\n const level = ColoredLevels[rawLevel] ?? rawLevel;\n const body = rawMessage ?? rawEvent;\n const fieldsText = $keys(fields).length > 0 ? ` ${chalk.dim(safeStringify(fields))}` : '';\n\n console.log(`${timestamp} ${level} ${body}${fieldsText}`);\n};\n\n/**\n * & Logger Options here is checked by normalizeOptions function.\n */\nasync function resolveLoggerSink(option: LoggerOption | undefined): Promise<LoggerSink> {\n if (option === undefined || option === 'one-line') {\n return oneLineLogger;\n }\n\n if (option === 'json-line') {\n return (entry: LogEntry) => console.log(safeStringify(entry));\n }\n\n return loadFunction(option) as Promise<LoggerSink>;\n}\n\nexport async function createLogger(option: LoggerOption | undefined = 'one-line'): Promise<FluxionLogger> {\n const sink = await resolveLoggerSink(option);\n\n const logger: FluxionLogger = {\n write(level: LogLevel, event: string, fields: Record<string, unknown> = {}): void {\n const entry: LogEntry = {\n ...fields,\n timestamp: dtm(),\n level,\n event,\n };\n\n try {\n sink(entry);\n } catch {\n // Ignore logger sink failures to avoid breaking request handling.\n }\n },\n info(event: string, fields?: Record<string, unknown>): void {\n this.write('INFO', event, fields);\n },\n warn(event: string, fields?: Record<string, unknown>): void {\n this.write('WARN', event, fields);\n },\n error(event: string, fields?: Record<string, unknown>): void {\n this.write('ERROR', event, fields);\n },\n succ(event: string, fields?: Record<string, unknown>): void {\n this.write('SUCC', event, fields);\n },\n debug(event: string, fields?: Record<string, unknown>): void {\n this.write('DEBUG', event, fields);\n },\n verbose(event: string, fields?: Record<string, unknown>): void {\n this.write('VERBOSE', event, fields);\n },\n };\n\n return logger;\n}\n\n/**\n * ! Error.isError needs Node.js 24\n */\nexport const getErrorMessage = (error: unknown): string => (Error.isError(error) ? error.message : String(error));\n","export namespace whether {\n export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n };\n}\n\nexport namespace expect {\n export function isObject<T = Record<string, unknown>>(o: unknown, message: string): asserts o is T {\n if (typeof o !== 'object' || o === null) {\n $throw(message);\n }\n }\n\n export function isString(s: unknown, message: string): asserts s is string {\n if (typeof s !== 'string') {\n $throw(message);\n }\n }\n\n export function isNumber(n: unknown, message: string): asserts n is number {\n if (typeof n !== 'number') {\n $throw(message);\n }\n }\n\n export function isPositiveInteger(n: unknown, message: string): asserts n is number {\n if (typeof n !== 'number' || n <= 0 || !Number.isSafeInteger(n)) {\n $throw(message);\n }\n }\n\n export function isObjectArray<T = Record<string, unknown>>(arr: unknown, message: string): asserts arr is T[] {\n if (!Array.isArray(arr) || arr.some((item) => typeof item !== 'object' || item === null)) {\n $throw(message);\n }\n }\n}\n","import fs, { existsSync } from 'node:fs';\nimport type { LoggerOption } from '@/common/logger.js';\nimport type { InjectionConfig } from '@/common/types.js';\nimport { expect } from '@/common/expect.js';\n\nimport type { WorkerOptions, FluxionOptions, NormalizedFluxionOptions } from '../types.js';\n\n/**\n * Resolves runtime options with framework defaults.\n */\nfunction resolveWorkerOptions(options: Partial<WorkerOptions>): WorkerOptions {\n return {\n maxWorkerCount: options.maxWorkerCount ?? 4,\n requestTimeoutMs: options.requestTimeoutMs ?? 3000,\n maxInflight: options.maxInflight ?? 64,\n memorySoftLimitMb: options.memorySoftLimitMb ?? 96,\n memoryHardLimitMb: options.memoryHardLimitMb ?? 128,\n memorySampleIntervalMs: options.memorySampleIntervalMs ?? 5000,\n maxOldGenerationSizeMb: options.maxOldGenerationSizeMb ?? 128,\n maxYoungGenerationSizeMb: options.maxYoungGenerationSizeMb ?? 32,\n stackSizeMb: options.stackSizeMb ?? 4,\n maxResponseBytes: options.maxResponseBytes ?? 2 * 1024 * 1024,\n };\n}\n\nfunction expectLoggerOption(o: InjectionConfig | LoggerOption) {\n if (o === 'one-line' || o === 'json-line') {\n return;\n }\n if (typeof o === 'object' && o !== null && typeof o.modulePath === 'string' && typeof o.name === 'string') {\n return;\n }\n $throw(`Invalid logger option, must be 'one-line', 'json-line' or { modulePath: string; name: string; }`);\n}\n\n/**\n * Normalize options and create necessary resources like the dynamic directory and logger.\n */\nexport function normalizeOptions(options: FluxionOptions): NormalizedFluxionOptions {\n expect.isObject(options, 'FluxionOptions must be an object');\n\n let {\n dir,\n host,\n port,\n metaPort,\n injections = [],\n moduleDir = process.cwd(),\n workerOptions = {},\n maxRequestBytes = 8_000_000,\n } = options as FluxionOptions;\n const logger = options.logger ?? 'one-line';\n expectLoggerOption(logger);\n\n expect.isString(dir, 'FluxionOptions.dir must be a string');\n expect.isString(moduleDir, 'FluxionOptions.moduleDir must be a string');\n expect.isString(host, 'FluxionOptions.host must be a string');\n expect.isPositiveInteger(port, 'FluxionOptions.port must be a positive integer');\n if (port > 65535) {\n $throw('FluxionOptions.port must be less than or equal to 65535');\n }\n metaPort ??= port + 1;\n expect.isPositiveInteger(metaPort, 'FluxionOptions.metaPort must be a positive integer');\n if (metaPort > 65535) {\n $throw('FluxionOptions.metaPort must be less than or equal to 65535');\n }\n if (metaPort === port) {\n $throw('FluxionOptions.metaPort must be different from FluxionOptions.port');\n }\n expect.isObjectArray<InjectionConfig>(injections, 'FluxionOptions.injections must be an array of objects');\n expect.isObject(workerOptions, 'FluxionOptions.workerOptions must be an object');\n expect.isPositiveInteger(maxRequestBytes, 'FluxionOptions.maxRequestBytes must be a positive integer');\n\n if (!existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n return {\n dir,\n host,\n port,\n metaPort,\n injections,\n moduleDir,\n workerOptions: resolveWorkerOptions(workerOptions),\n maxRequestBytes,\n logger,\n };\n}\n","import type { PrimaryMessage as PrimaryMessage, WorkerMessage as WorkerMessage } from './types.js';\n\nexport const INJECTION_KEY = Symbol.for('fluxion.injection');\n\nexport const enum PrimaryAction {\n /**\n * Health check message, the worker should respond with Pong and the latency information\n */\n Ping = 100,\n}\n\nexport const enum WorkerAction {\n /**\n * Just created\n */\n Created = 200,\n\n /**\n * Ready for tasks\n * - fluxion options are injected\n */\n Ready,\n\n /**\n * Response to Ping, used for health check and latency measurement\n */\n Pong,\n\n /**\n * Runtime telemetry snapshot from worker process.\n */\n Stats,\n}\n\nexport const isPrimaryMessage = (v: PrimaryMessage): v is PrimaryMessage => [PrimaryAction.Ping].includes(v?.type);\n\nexport const isWorkerMessage = (v: WorkerMessage): v is WorkerMessage =>\n [WorkerAction.Pong, WorkerAction.Created, WorkerAction.Ready, WorkerAction.Stats].includes(v?.type);\n","import type cluster from 'node:cluster';\nimport type { PrimaryMessage, WorkerMessage } from './types.js';\n\nexport const sendToPrimary = (message: WorkerMessage) => process.send?.(message);\n\nexport const sendToWorker = (worker: cluster.Worker, message: PrimaryMessage) => worker.send(message);\n","export const DUMMY_BASE_URL = 'http://fluxion.local';\nexport const META_PREFIX = '/_fluxion';\n\nexport const STATIC_CONTENT_TYPES: Record<string, string> = {\n '.css': 'text/css; charset=utf-8',\n '.html': 'text/html; charset=utf-8',\n '.ico': 'image/x-icon',\n '.js': 'text/javascript; charset=utf-8',\n '.json': 'application/json; charset=utf-8',\n '.map': 'application/json; charset=utf-8',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.svg': 'image/svg+xml',\n '.txt': 'text/plain; charset=utf-8',\n '.webp': 'image/webp',\n};\n\nexport const enum HttpCode {\n Ok = 200,\n BadRequest = 400,\n PayloadTooLarge = 413,\n NotFound = 404,\n InternalServerError = 500,\n}\n\nexport const enum HandlerResult {\n NotFound,\n Handled,\n}\n","import type { ServerResponse } from 'node:http';\nimport { HttpCode } from '@/common/consts.js';\n\nexport function sendJson(res: ServerResponse, payload: unknown, statusCode: HttpCode = HttpCode.Ok): void {\n res.statusCode = statusCode;\n res.setHeader('Content-Type', 'application/json; charset=utf-8');\n res.end(JSON.stringify(payload));\n}\n\nexport function safeSendJson(res: ServerResponse, payload: unknown, statusCode: HttpCode = HttpCode.Ok): void {\n if (res.writableEnded) {\n return;\n }\n\n if (res.headersSent) {\n res.end();\n return;\n }\n\n sendJson(res, payload, statusCode);\n}\n","import http from 'node:http';\n\nimport type { FluxionLogger } from '@/common/logger.js';\nimport { getErrorMessage } from '@/common/logger.js';\nimport { HttpCode, META_PREFIX } from '@/common/consts.js';\nimport { sendJson } from '../utils/respond.js';\n\nexport interface PrimaryMetaApiOptions {\n host: string;\n port: number;\n logger: FluxionLogger;\n getWorkersSnapshot: () => unknown;\n}\n\nexport function createPrimaryMetaApiServer(options: PrimaryMetaApiOptions): http.Server {\n const server = http.createServer((req, res) => {\n const method = req.method ?? 'GET';\n\n let pathname = '/';\n try {\n pathname = new URL(req.url ?? '/', 'http://fluxion.local').pathname;\n } catch {\n sendJson(res, { message: 'Bad Request: invalid url' }, HttpCode.BadRequest);\n return;\n }\n\n if (method === 'GET' && pathname === META_PREFIX + '/healthz') {\n sendJson(res, {\n ok: true,\n role: 'primary',\n pid: process.pid,\n now: Date.now(),\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n });\n return;\n }\n\n if (method === 'GET' && pathname === META_PREFIX + '/workers') {\n sendJson(res, {\n ok: true,\n now: Date.now(),\n workers: options.getWorkersSnapshot(),\n });\n return;\n }\n\n sendJson(res, { message: 'Not Found' }, HttpCode.NotFound);\n });\n\n server.on('listening', () => {\n options.logger.info('MetaApiStarted', {\n pid: process.pid,\n host: options.host,\n port: options.port,\n prefix: META_PREFIX,\n });\n });\n\n server.on('error', (error) => {\n options.logger.error('MetaApiError', {\n host: options.host,\n port: options.port,\n error: getErrorMessage(error),\n });\n process.exit(1);\n });\n\n server.listen(options.port, options.host);\n return server;\n}\n","import os from 'node:os';\nimport cluster from 'node:cluster';\n\nimport type { WorkerMessage, WorkerState } from './types.js';\nimport { fluxionOptions, logger } from './global-state.js';\nimport { isWorkerMessage, WorkerAction, PrimaryAction } from './consts.js';\nimport { sendToWorker } from './communicate.js';\nimport { createPrimaryMetaApiServer } from './meta-api.js';\n\nconst bytesToMb = (bytes: number) => Number((bytes / 1024 / 1024).toFixed(2));\n\nexport function initPrimary() {\n if (!cluster.isPrimary) {\n $throw('createPrimary should only be called in primary process');\n }\n\n const { workerOptions } = fluxionOptions;\n const cpuCount = Math.max(1, os.cpus().length);\n const workerCount = Math.max(1, Math.min(workerOptions.maxWorkerCount ?? Math.min(2, cpuCount), cpuCount));\n\n logger.info('PrimaryStarted', {\n pid: process.pid,\n workers: workerCount,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n metaPort: fluxionOptions.metaPort,\n });\n\n const workers = new Map<number, WorkerState>();\n\n const getWorkersSnapshot = () => {\n return {\n primaryPid: process.pid,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n metaPort: fluxionOptions.metaPort,\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n workers: Array.from(workers.entries()).map(([workerId, info]) => {\n const { instance } = info;\n const stats = info.lastStats;\n return {\n workerId,\n pid: info.pid ?? instance.process.pid ?? null,\n state: info.state,\n createdAt: info.createdAt,\n readyAt: info.readyAt ?? null,\n connected: instance.isConnected(),\n dead: instance.isDead(),\n exitedAfterDisconnect: instance.exitedAfterDisconnect,\n lastPongAt: info.lastPongAt ?? null,\n lastRttMs: info.lastRttMs ?? null,\n stats:\n stats === undefined\n ? null\n : {\n at: stats.at,\n uptimeSeconds: stats.uptimeSeconds,\n cpu: stats.cpu,\n memory: {\n ...stats.memory,\n rssMb: bytesToMb(stats.memory.rss),\n heapTotalMb: bytesToMb(stats.memory.heapTotal),\n heapUsedMb: bytesToMb(stats.memory.heapUsed),\n externalMb: bytesToMb(stats.memory.external),\n arrayBuffersMb: bytesToMb(stats.memory.arrayBuffers),\n },\n },\n };\n }),\n };\n };\n\n createPrimaryMetaApiServer({\n host: fluxionOptions.host,\n port: fluxionOptions.metaPort,\n logger,\n getWorkersSnapshot,\n });\n\n const attachWorker = (worker: cluster.Worker): void => {\n const workerInfo: WorkerState = {\n state: 'creating',\n pid: worker.process.pid,\n createdAt: Date.now(),\n instance: worker,\n };\n workers.set(worker.id, workerInfo);\n\n worker.on('message', (raw: WorkerMessage) => {\n if (!isWorkerMessage(raw)) {\n return;\n }\n\n if (raw.type === WorkerAction.Pong) {\n const rtt = Date.now() - raw.sentAt;\n workerInfo.pid = raw.pid;\n workerInfo.lastPongAt = Date.now();\n workerInfo.lastRttMs = rtt;\n return;\n }\n\n if (raw.type === WorkerAction.Ready) {\n workerInfo.state = 'ready';\n workerInfo.pid = raw.pid;\n workerInfo.readyAt = Date.now();\n logger.info('WorkerReady', { workerId: worker.id, pid: raw.pid });\n return;\n }\n\n if (raw.type === WorkerAction.Created) {\n workerInfo.state = 'created';\n workerInfo.pid = raw.pid;\n logger.info('WorkerCreated', { workerId: worker.id, pid: raw.pid });\n return;\n }\n\n if (raw.type === WorkerAction.Stats) {\n workerInfo.pid = raw.pid;\n workerInfo.lastStats = raw.stats;\n }\n });\n\n worker.on('exit', (code, signal) => {\n workers.delete(worker.id);\n logger.warn('WorkerExited', {\n workerId: worker.id,\n pid: worker.process.pid ?? 'unknown',\n code,\n signal: signal ?? 'none',\n });\n });\n };\n\n for (let i = 0; i < workerCount; i++) {\n attachWorker(cluster.fork({ WORKER_ID: String(i + 1) }));\n }\n\n const pingTimer = setInterval(() => {\n const sentAt = Date.now();\n for (const info of workers.values()) {\n if (!info.instance.isConnected()) {\n continue;\n }\n try {\n sendToWorker(info.instance, { type: PrimaryAction.Ping, sentAt });\n } catch {\n // Ignore transient IPC errors; worker lifecycle events will reconcile state.\n }\n }\n }, 5000);\n pingTimer.unref();\n}\n","import type { IncomingMessage } from 'node:http';\n\nexport function getRealIp(req: IncomingMessage): string {\n const forwardedFor = req.headersDistinct['x-forwarded-for'];\n if (forwardedFor) {\n const firstForwarded = forwardedFor[0]?.split(',')[0]?.trim();\n if (firstForwarded && firstForwarded.length > 0) {\n return firstForwarded;\n }\n }\n\n const realIp = req.headersDistinct['x-real-ip']?.[0].trim();\n if (realIp !== undefined) {\n return realIp;\n }\n\n return req.socket.remoteAddress ?? 'unknown';\n}\n\nexport function isTextualContentType(contentType: string | undefined): boolean {\n if (contentType === undefined) {\n return false;\n }\n\n const normalized = contentType.toLowerCase();\n\n return (\n normalized.startsWith('text/') ||\n normalized.includes('json') ||\n normalized.includes('xml') ||\n normalized.includes('x-www-form-urlencoded') ||\n normalized.includes('javascript')\n );\n}\n","import { DUMMY_BASE_URL } from '@/common/consts.js';\n\nexport function toURL(rawUrl: string | undefined): URL | undefined {\n if (rawUrl === undefined) {\n return undefined;\n }\n\n try {\n return new URL(rawUrl, DUMMY_BASE_URL);\n } catch {\n return undefined;\n }\n}\n","export function parseQuery(searchParams: URLSearchParams): Record<string, string | string[]> {\n const query: Record<string, string | string[]> = {};\n\n for (const [key, value] of searchParams.entries()) {\n const existing = query[key];\n\n if (existing === undefined) {\n query[key] = value;\n continue;\n }\n\n if (Array.isArray(existing)) {\n existing.push(value);\n continue;\n }\n\n query[key] = [existing, value];\n }\n\n return query;\n}\n","import type http from 'node:http';\n\nimport { isTextualContentType } from './headers.js';\nimport { parseQuery } from './query.js';\n\nexport interface BodyPreview {\n exists: boolean;\n value?: string;\n bytes: number;\n truncated: boolean;\n}\n\nfunction createRequestBodyTooLargeError(receivedBytes: number, maxBytes: number): NodeJS.ErrnoException {\n const sizeError = new Error(\n `request body too large: ${receivedBytes.toString()} bytes exceeds ${maxBytes.toString()} bytes`,\n ) as NodeJS.ErrnoException;\n\n sizeError.code = 'REQUEST_BODY_TOO_LARGE';\n\n return sizeError;\n}\n\nfunction getHeaderValue(headerValue: string | string[] | undefined): string | undefined {\n return Array.isArray(headerValue) ? headerValue[0] : headerValue;\n}\n\nfunction createEmptyPreview(): BodyPreview {\n return {\n exists: false,\n bytes: 0,\n truncated: false,\n };\n}\n\nfunction createPreview(\n previewBuffer: Buffer,\n totalBytes: number,\n contentType: string | undefined,\n truncated: boolean,\n): BodyPreview {\n if (totalBytes === 0) {\n return createEmptyPreview();\n }\n\n if (isTextualContentType(contentType)) {\n return {\n exists: true,\n value: previewBuffer.toString('utf8'),\n bytes: totalBytes,\n truncated,\n };\n }\n\n return {\n exists: true,\n value: `<binary body: ${totalBytes} bytes>`,\n bytes: totalBytes,\n truncated,\n };\n}\n\nasync function readRequestBodyWithPreview(\n req: http.IncomingMessage,\n method: string,\n maxBytes: number,\n previewMaxBytes = 8192,\n): Promise<{ rawBody: Buffer | undefined; preview: BodyPreview }> {\n if (method === 'GET' || method === 'HEAD') {\n return {\n rawBody: undefined,\n preview: createEmptyPreview(),\n };\n }\n\n if (req.readableEnded) {\n return {\n rawBody: undefined,\n preview: createEmptyPreview(),\n };\n }\n\n const contentLengthRaw = getHeaderValue(req.headers['content-length']);\n const declaredBytes = contentLengthRaw !== undefined ? Number.parseInt(contentLengthRaw, 10) : NaN;\n\n if (Number.isFinite(declaredBytes) && declaredBytes > maxBytes) {\n throw createRequestBodyTooLargeError(declaredBytes, maxBytes);\n }\n\n return new Promise((resolve, reject) => {\n const rawBodyChunks: Buffer[] = [];\n const previewChunks: Buffer[] = [];\n let totalBytes = 0;\n let previewBytes = 0;\n let previewTruncated = false;\n let settled = false;\n\n const cleanup = (): void => {\n req.off('data', onData);\n req.off('end', onEnd);\n req.off('error', onError);\n req.off('aborted', onAborted);\n };\n\n const settle = (action: () => void): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n action();\n };\n\n const onData = (chunk: Buffer | string | Uint8Array): void => {\n const bufferChunk = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n totalBytes += bufferChunk.byteLength;\n\n if (totalBytes > maxBytes) {\n cleanup();\n req.resume();\n settle(() => {\n reject(createRequestBodyTooLargeError(totalBytes, maxBytes));\n });\n return;\n }\n\n rawBodyChunks.push(bufferChunk);\n\n if (previewBytes < previewMaxBytes) {\n const remaining = previewMaxBytes - previewBytes;\n const nextSlice = bufferChunk.subarray(0, remaining);\n previewChunks.push(nextSlice);\n previewBytes += nextSlice.length;\n\n if (nextSlice.length < bufferChunk.length) {\n previewTruncated = true;\n }\n } else {\n previewTruncated = true;\n }\n };\n\n const onEnd = (): void => {\n cleanup();\n settle(() => {\n const rawBody = rawBodyChunks.length > 0 ? Buffer.concat(rawBodyChunks) : undefined;\n const previewBuffer = previewChunks.length > 0 ? Buffer.concat(previewChunks) : Buffer.alloc(0);\n\n resolve({\n rawBody,\n preview: createPreview(\n previewBuffer,\n rawBody?.byteLength ?? 0,\n getHeaderValue(req.headers['content-type']),\n previewTruncated,\n ),\n });\n });\n };\n\n const onError = (error: Error): void => {\n cleanup();\n settle(() => {\n reject(error);\n });\n };\n\n const onAborted = (): void => {\n cleanup();\n settle(() => {\n reject(new Error('request aborted while reading body'));\n });\n };\n\n req.on('data', onData);\n req.once('end', onEnd);\n req.once('error', onError);\n req.once('aborted', onAborted);\n });\n}\n\nexport async function parseBody(\n req: http.IncomingMessage,\n method: string,\n maxBytes: number,\n): Promise<{ body: Record<string, any>; preview: BodyPreview }> {\n const { rawBody, preview } = await readRequestBodyWithPreview(req, method, maxBytes);\n\n if (rawBody === undefined || rawBody.byteLength === 0) {\n return {\n body: {},\n preview,\n };\n }\n\n const contentType = getHeaderValue(req.headers['content-type'])?.toLowerCase() ?? '';\n\n if (contentType.includes('json')) {\n const textBody = rawBody.toString('utf8').trim();\n\n if (textBody.length === 0) {\n return {\n body: {},\n preview,\n };\n }\n\n try {\n const parsed = JSON.parse(textBody) as unknown;\n\n if (parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)) {\n return {\n body: parsed as Record<string, any>,\n preview,\n };\n }\n\n return {\n body: { value: parsed },\n preview,\n };\n } catch {\n return {\n body: { raw: textBody },\n preview,\n };\n }\n }\n\n if (contentType.includes('x-www-form-urlencoded')) {\n return {\n body: parseQuery(new URLSearchParams(rawBody.toString('utf8'))),\n preview,\n };\n }\n\n if (isTextualContentType(contentType)) {\n return {\n body: { raw: rawBody.toString('utf8') },\n preview,\n };\n }\n\n return {\n body: {},\n preview,\n };\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport http from 'node:http';\nimport cluster from 'node:cluster';\nimport { pathToFileURL } from 'node:url';\n\nimport { STATIC_CONTENT_TYPES } from '@/common/consts.js';\nimport type { FluxionHandler, NormalizedRequest } from '../types.js';\nimport { fluxionOptions } from './global-state.js';\n\nconst parsePathname = (dir: string, pathname: string) => {\n const parts = pathname.split('/');\n if (parts.length === 0) {\n $throw(`Invalid pathname: ${pathname}`);\n }\n\n parts[0] = dir;\n const name = parts.at(-1) as string;\n return { rawPath: path.join(...parts), filename: name };\n};\n\n/**\n * ! Make sure `fullpath` exists before calling this function\n */\nconst importHandler = async (fullpath: string, stat?: fs.Stats): Promise<FluxionHandler> => {\n stat ??= fs.statSync(fullpath);\n const source = `${pathToFileURL(fullpath).href}?v=${stat.mtimeMs}:${stat.size}`;\n const o = await import(source);\n\n if (typeof o.default === 'function') {\n return o.default as FluxionHandler;\n }\n if (typeof o.handler === 'function') {\n return o.handler as FluxionHandler;\n }\n\n $throw(\n `Invalid JS Module '${fullpath}', make sure it has a default export or named export called \"handler\" which is a function`,\n );\n};\n\nconst replyStaticResources = <\n Request extends typeof http.IncomingMessage = typeof http.IncomingMessage,\n Response extends typeof http.ServerResponse = typeof http.ServerResponse,\n>(\n req: InstanceType<Request>,\n res: InstanceType<Response> & { req: InstanceType<Request> },\n normalized: NormalizedRequest,\n fullpath: string,\n filename?: string,\n): any => {\n filename ??= path.basename(fullpath);\n if (normalized.method !== 'GET' && normalized.method !== 'HEAD') {\n res.statusCode = 405;\n res.setHeader('Allow', 'GET, HEAD');\n res.end();\n return;\n }\n\n const stat = fs.statSync(fullpath);\n if (!stat.isFile()) {\n $throw(`${filename} is not a file`);\n }\n\n const extension = path.extname(filename).toLowerCase();\n const contentType = STATIC_CONTENT_TYPES[extension] ?? 'application/octet-stream';\n\n res.statusCode = 200;\n res.setHeader('Content-Type', contentType);\n res.setHeader('Content-Length', String(stat.size));\n\n if (normalized.method === 'HEAD') {\n res.end();\n return;\n }\n\n return new Promise<void>((resolve, reject) => {\n const stream = fs.createReadStream(fullpath);\n stream.on('error', reject);\n stream.on('end', resolve);\n stream.pipe(res);\n });\n};\n\nconst findFromMjs = (fullpath: string): Promise<FluxionHandler> => {\n const stat = fs.statSync(fullpath);\n if (!stat.isFile()) {\n $throw(`${path.dirname(fullpath)} is not a file`);\n }\n return importHandler(fullpath);\n};\n\nexport async function findHandler(url: URL): Promise<FluxionHandler> {\n if (cluster.isPrimary) {\n $throw('createFileRuntime should only be called in worker process');\n }\n const { rawPath, filename } = parsePathname(fluxionOptions.dir, url.pathname);\n\n if (fs.existsSync(rawPath)) {\n const stat = fs.statSync(rawPath);\n if (stat.isFile()) {\n if (/\\.mjs/i.test(filename)) {\n return importHandler(rawPath, stat);\n } else {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, rawPath);\n }\n }\n\n if (stat.isDirectory()) {\n const mjsPath = path.join(rawPath, 'index.mjs');\n if (fs.existsSync(mjsPath)) {\n return findFromMjs(mjsPath);\n }\n\n const htmlPath = path.join(rawPath, 'index.html');\n if (fs.existsSync(htmlPath)) {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, htmlPath, 'index.html');\n }\n\n $throw(`${filename} is a directory, but has no valid index.mjs/index.html inside`);\n }\n\n $throw(`${filename} is not a file nor a directory`);\n }\n\n const rawPathMjs = rawPath + '.mjs';\n if (fs.existsSync(rawPathMjs)) {\n return findFromMjs(rawPathMjs);\n }\n\n const rawPathHtml = rawPath + '.html';\n if (fs.existsSync(rawPathHtml)) {\n return (req, res, normalized) => replyStaticResources(req, res, normalized, rawPathHtml);\n }\n\n $throw('Not Found');\n}\n","import http from 'node:http';\n\nimport type { NormalizedRequest } from '../types.js';\nimport { $keys } from '@/common/native.js';\nimport { HttpCode, META_PREFIX } from '@/common/consts.js';\nimport { getErrorMessage } from '@/common/logger.js';\nimport { fluxionOptions, logger } from './global-state.js';\n\nimport { getRealIp } from '../utils/headers.js';\nimport { toURL } from '../utils/request.js';\nimport { safeSendJson } from '../utils/respond.js';\nimport { parseBody, type BodyPreview } from '../utils/body.js';\nimport { parseQuery } from '../utils/query.js';\nimport { findHandler } from './file-runtime.js';\n\nexport function createWorkerServer(): http.Server {\n const server = http.createServer(async (req, res) => {\n const method = req.method ?? 'GET';\n const ip = getRealIp(req);\n const url = toURL(req.url);\n if (url === undefined) {\n safeSendJson(res, { message: 'Bad Request: req.url is undefined' }, HttpCode.BadRequest);\n return;\n }\n\n const normalized: NormalizedRequest = {\n method,\n ip,\n url,\n query: parseQuery(url.searchParams),\n body: {},\n };\n\n let bodyPreview: BodyPreview = {\n exists: false,\n bytes: 0,\n truncated: false,\n };\n\n logger.info('Req', { method, ip, path: url.pathname });\n\n const start = performance.now();\n res.once('finish', () => {\n const fields: Record<string, unknown> = {\n workerId: process.env.WORKER_ID ?? '[primary]',\n method,\n ip,\n path: url.pathname,\n status: res.statusCode,\n duration: (performance.now() - start).toFixed(4),\n };\n\n if ($keys(normalized.query).length > 0) {\n fields.query = normalized.query;\n }\n\n if (bodyPreview.exists) {\n fields.body = bodyPreview.value;\n fields.bodyBytes = bodyPreview.bytes;\n fields.bodyTruncated = bodyPreview.truncated;\n }\n\n logger.info('Res', fields);\n });\n\n // * Start request handling\n try {\n if (normalized.url.pathname.startsWith(META_PREFIX + '/')) {\n safeSendJson(res, { message: `Meta APIs are available on port ${fluxionOptions.metaPort}` }, HttpCode.NotFound);\n return;\n }\n\n const parsed = await parseBody(req, normalized.method, fluxionOptions.maxRequestBytes);\n normalized.body = parsed.body;\n bodyPreview = parsed.preview;\n\n const handler = await findHandler(url);\n const result = await Promise.try(handler, req, res, normalized);\n safeSendJson(res, result);\n } catch (error) {\n logger.error('RequestFailed', {\n method: normalized.method,\n ip: normalized.ip,\n path: normalized.url.pathname,\n error: getErrorMessage(error),\n });\n\n if ((error as NodeJS.ErrnoException).code === 'REQUEST_BODY_TOO_LARGE') {\n safeSendJson(res, { message: getErrorMessage(error) }, HttpCode.PayloadTooLarge);\n } else {\n safeSendJson(res, { message: 'Internal Server Error' }, HttpCode.InternalServerError);\n }\n }\n });\n\n server.on('close', () => {\n logger.info('ServerClosed', {\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n });\n });\n\n server.listen(fluxionOptions.port, fluxionOptions.host, () => {\n logger.info('ServerStarted', {\n pid: process.pid,\n host: fluxionOptions.host,\n port: fluxionOptions.port,\n });\n logger.info('DynamicDirectory', { directory: fluxionOptions.dir });\n });\n\n server.on('error', (error) => {\n logger.error('ServerError', {\n error: getErrorMessage(error),\n });\n });\n\n return server;\n}\n","import cluster from 'node:cluster';\nimport type { PrimaryMessage } from './types.js';\n\nimport { getErrorMessage } from '@/common/logger.js';\nimport { loadFunction } from '@/common/injector.js';\nimport { logger, fluxionOptions } from './global-state.js';\nimport { WorkerAction, PrimaryAction, isPrimaryMessage, INJECTION_KEY } from './consts.js';\nimport { sendToPrimary } from './communicate.js';\nimport { createWorkerServer } from './server.js';\n\nconst inject = async () => {\n const o = {} as any;\n Reflect.set(globalThis, INJECTION_KEY, o);\n for (let i = 0; i < fluxionOptions.injections.length; i++) {\n const injection = fluxionOptions.injections[i];\n const factory = await loadFunction(injection);\n const instance = await Promise.try(factory);\n o[injection.name] = instance;\n }\n logger.info(`[worker ${process.pid}] injections loaded`, Object.keys(o));\n};\n\nconst startStatsReporter = () => {\n let previousCpuUsage = process.cpuUsage();\n let previousAt = Date.now();\n\n const interval = setInterval(() => {\n const now = Date.now();\n const elapsedMicros = Math.max(1, (now - previousAt) * 1000);\n const cpuDelta = process.cpuUsage(previousCpuUsage);\n const cpuPercent = Number((((cpuDelta.user + cpuDelta.system) / elapsedMicros) * 100).toFixed(2));\n\n previousCpuUsage = process.cpuUsage();\n previousAt = now;\n\n const memoryUsage = process.memoryUsage();\n sendToPrimary({\n type: WorkerAction.Stats,\n pid: process.pid,\n stats: {\n at: now,\n pid: process.pid,\n uptimeSeconds: Number(process.uptime().toFixed(3)),\n cpu: {\n userMicros: cpuDelta.user,\n systemMicros: cpuDelta.system,\n percent: cpuPercent,\n },\n memory: {\n rss: memoryUsage.rss,\n heapTotal: memoryUsage.heapTotal,\n heapUsed: memoryUsage.heapUsed,\n external: memoryUsage.external,\n arrayBuffers: memoryUsage.arrayBuffers,\n },\n },\n });\n }, 2000);\n\n interval.unref();\n};\n\nexport function initWorker() {\n if (cluster.isPrimary) {\n $throw('createWorker should only be called in worker process');\n }\n\n process.on('message', (raw: PrimaryMessage) => {\n if (!isPrimaryMessage(raw)) {\n return;\n }\n\n if (raw.type === PrimaryAction.Ping) {\n sendToPrimary({ type: WorkerAction.Pong, pid: process.pid, sentAt: raw.sentAt, receivedAt: Date.now() });\n return;\n }\n });\n\n sendToPrimary({ type: WorkerAction.Created, pid: process.pid });\n startStatsReporter();\n\n Promise.try(async () => {\n await inject();\n createWorkerServer();\n sendToPrimary({ type: WorkerAction.Ready, pid: process.pid });\n }).catch((error) => {\n logger.error('WorkerBootstrapFailed', {\n pid: process.pid,\n error: getErrorMessage(error),\n });\n process.exit(1);\n });\n}\n","import type { FluxionOptions } from './types.js';\n\nimport { createLogger } from '@/common/logger.js';\nimport { normalizeOptions } from './utils/options.js';\nimport { initializeGlobalState } from './cluster/global-state.js';\nimport cluster from 'node:cluster';\nimport { initPrimary } from './cluster/primary.js';\nimport { initWorker } from './cluster/worker.js';\n\nexport async function fluxion(options: FluxionOptions) {\n const normalized = normalizeOptions(options);\n\n const logger = await createLogger(normalized.logger);\n initializeGlobalState(normalized, logger);\n\n if (cluster.isPrimary) {\n initPrimary();\n } else {\n initWorker();\n }\n}\n"],"names":["styles"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluxion-ts",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "author": {
5
5
  "name": "Kasukabe Tsumugi",
6
6
  "email": "futami16237@gmail.com"