@kosdev-code/kos-ui-plugin 2.1.18 → 2.1.19

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.
Files changed (58) hide show
  1. package/documentation-generator-CAlVz5vA.cjs +266 -0
  2. package/documentation-generator-CAlVz5vA.cjs.map +1 -0
  3. package/documentation-generator-Di4c9D9P.js +2337 -0
  4. package/documentation-generator-Di4c9D9P.js.map +1 -0
  5. package/index.cjs +69 -69
  6. package/index.cjs.map +1 -1
  7. package/index.d.ts +1 -0
  8. package/index.d.ts.map +1 -1
  9. package/index.js +817 -753
  10. package/index.js.map +1 -1
  11. package/lib/components/dynamic-component/dynamic-component.d.ts +69 -0
  12. package/lib/components/dynamic-component/dynamic-component.d.ts.map +1 -1
  13. package/lib/contexts/index.d.ts +1 -0
  14. package/lib/contexts/index.d.ts.map +1 -1
  15. package/lib/contexts/plugins-provider/plugins-provider.d.ts.map +1 -1
  16. package/lib/contexts/reactive-extension-registry-context.d.ts +10 -0
  17. package/lib/contexts/reactive-extension-registry-context.d.ts.map +1 -0
  18. package/lib/hooks/index.d.ts +4 -2
  19. package/lib/hooks/index.d.ts.map +1 -1
  20. package/lib/hooks/use-dynamic-component.d.ts +12 -1
  21. package/lib/hooks/use-dynamic-component.d.ts.map +1 -1
  22. package/lib/hooks/use-extension-point.d.ts +95 -0
  23. package/lib/hooks/use-extension-point.d.ts.map +1 -0
  24. package/lib/hooks/use-reactive-extension-registry.d.ts +20 -0
  25. package/lib/hooks/use-reactive-extension-registry.d.ts.map +1 -0
  26. package/lib/hooks/use-typed-extensions.d.ts.map +1 -1
  27. package/lib/utils/contribution-registry.d.ts +170 -0
  28. package/lib/utils/contribution-registry.d.ts.map +1 -0
  29. package/lib/utils/extension-points/extension-point-registry.d.ts.map +1 -1
  30. package/lib/utils/extension-points/extension-point-schemas.d.ts +4 -4
  31. package/lib/utils/index.d.ts +3 -0
  32. package/lib/utils/index.d.ts.map +1 -1
  33. package/lib/utils/plugin-system/plugin-extension-manager.d.ts.map +1 -1
  34. package/lib/utils/processors/initialize-plugins.d.ts.map +1 -1
  35. package/lib/utils/reactive-extension-registry.d.ts +140 -0
  36. package/lib/utils/reactive-extension-registry.d.ts.map +1 -0
  37. package/lib/webpack/index.d.ts +2 -0
  38. package/lib/webpack/index.d.ts.map +1 -1
  39. package/lib/webpack/with-plugin-dev-aggregator.d.ts +94 -0
  40. package/lib/webpack/with-plugin-dev-aggregator.d.ts.map +1 -0
  41. package/lib/webpack/with-plugin-dev-server.d.ts +113 -0
  42. package/lib/webpack/with-plugin-dev-server.d.ts.map +1 -0
  43. package/package.json +2 -2
  44. package/types/contribution-enablement.d.ts +293 -0
  45. package/types/contribution-enablement.d.ts.map +1 -0
  46. package/types/plugins.d.ts +8 -0
  47. package/utils.cjs +1 -1
  48. package/utils.cjs.map +1 -1
  49. package/utils.js +29 -291
  50. package/utils.js.map +1 -1
  51. package/webpack.cjs +3 -12
  52. package/webpack.cjs.map +1 -1
  53. package/webpack.js +455 -727
  54. package/webpack.js.map +1 -1
  55. package/documentation-generator-DFaIDo0E.cjs +0 -266
  56. package/documentation-generator-DFaIDo0E.cjs.map +0 -1
  57. package/documentation-generator-auruIa_o.js +0 -1560
  58. package/documentation-generator-auruIa_o.js.map +0 -1
package/webpack.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"webpack.js","sources":["../../../../__vite-browser-external","../../../../node_modules/path/node_modules/util/support/isBufferBrowser.js","../../../../node_modules/path/node_modules/inherits/inherits_browser.js","../../../../node_modules/path/node_modules/util/util.js","../../../../node_modules/path/path.js","../../../../node_modules/dotenv/lib/main.js","../../../../packages/sdk/kos-ui-plugin/src/lib/webpack/with-kos-config.ts"],"sourcesContent":["export default {}","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","// Copyright Joyent, Inc. and other Node contributors.\r\n//\r\n// Permission is hereby granted, free of charge, to any person obtaining a\r\n// copy of this software and associated documentation files (the\r\n// \"Software\"), to deal in the Software without restriction, including\r\n// without limitation the rights to use, copy, modify, merge, publish,\r\n// distribute, sublicense, and/or sell copies of the Software, and to permit\r\n// persons to whom the Software is furnished to do so, subject to the\r\n// following conditions:\r\n//\r\n// The above copyright notice and this permission notice shall be included\r\n// in all copies or substantial portions of the Software.\r\n//\r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n'use strict';\r\n\r\n\r\nvar isWindows = process.platform === 'win32';\r\nvar util = require('util');\r\n\r\n\r\n// resolves . and .. elements in a path array with directory names there\r\n// must be no slashes or device names (c:\\) in the array\r\n// (so also no leading and trailing slashes - it does not distinguish\r\n// relative and absolute paths)\r\nfunction normalizeArray(parts, allowAboveRoot) {\r\n var res = [];\r\n for (var i = 0; i < parts.length; i++) {\r\n var p = parts[i];\r\n\r\n // ignore empty parts\r\n if (!p || p === '.')\r\n continue;\r\n\r\n if (p === '..') {\r\n if (res.length && res[res.length - 1] !== '..') {\r\n res.pop();\r\n } else if (allowAboveRoot) {\r\n res.push('..');\r\n }\r\n } else {\r\n res.push(p);\r\n }\r\n }\r\n\r\n return res;\r\n}\r\n\r\n// returns an array with empty elements removed from either end of the input\r\n// array or the original array if no elements need to be removed\r\nfunction trimArray(arr) {\r\n var lastIndex = arr.length - 1;\r\n var start = 0;\r\n for (; start <= lastIndex; start++) {\r\n if (arr[start])\r\n break;\r\n }\r\n\r\n var end = lastIndex;\r\n for (; end >= 0; end--) {\r\n if (arr[end])\r\n break;\r\n }\r\n\r\n if (start === 0 && end === lastIndex)\r\n return arr;\r\n if (start > end)\r\n return [];\r\n return arr.slice(start, end + 1);\r\n}\r\n\r\n// Regex to split a windows path into three parts: [*, device, slash,\r\n// tail] windows-only\r\nvar splitDeviceRe =\r\n /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\r\n\r\n// Regex to split the tail part of the above into [*, dir, basename, ext]\r\nvar splitTailRe =\r\n /^([\\s\\S]*?)((?:\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))(?:[\\\\\\/]*)$/;\r\n\r\nvar win32 = {};\r\n\r\n// Function to split a filename into [root, dir, basename, ext]\r\nfunction win32SplitPath(filename) {\r\n // Separate device+slash from tail\r\n var result = splitDeviceRe.exec(filename),\r\n device = (result[1] || '') + (result[2] || ''),\r\n tail = result[3] || '';\r\n // Split the tail into dir, basename and extension\r\n var result2 = splitTailRe.exec(tail),\r\n dir = result2[1],\r\n basename = result2[2],\r\n ext = result2[3];\r\n return [device, dir, basename, ext];\r\n}\r\n\r\nfunction win32StatPath(path) {\r\n var result = splitDeviceRe.exec(path),\r\n device = result[1] || '',\r\n isUnc = !!device && device[1] !== ':';\r\n return {\r\n device: device,\r\n isUnc: isUnc,\r\n isAbsolute: isUnc || !!result[2], // UNC paths are always absolute\r\n tail: result[3]\r\n };\r\n}\r\n\r\nfunction normalizeUNCRoot(device) {\r\n return '\\\\\\\\' + device.replace(/^[\\\\\\/]+/, '').replace(/[\\\\\\/]+/g, '\\\\');\r\n}\r\n\r\n// path.resolve([from ...], to)\r\nwin32.resolve = function() {\r\n var resolvedDevice = '',\r\n resolvedTail = '',\r\n resolvedAbsolute = false;\r\n\r\n for (var i = arguments.length - 1; i >= -1; i--) {\r\n var path;\r\n if (i >= 0) {\r\n path = arguments[i];\r\n } else if (!resolvedDevice) {\r\n path = process.cwd();\r\n } else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive. We're sure the device is not\r\n // an unc path at this points, because unc paths are always absolute.\r\n path = process.env['=' + resolvedDevice];\r\n // Verify that a drive-local cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (!path || path.substr(0, 3).toLowerCase() !==\r\n resolvedDevice.toLowerCase() + '\\\\') {\r\n path = resolvedDevice + '\\\\';\r\n }\r\n }\r\n\r\n // Skip empty and invalid entries\r\n if (!util.isString(path)) {\r\n throw new TypeError('Arguments to path.resolve must be strings');\r\n } else if (!path) {\r\n continue;\r\n }\r\n\r\n var result = win32StatPath(path),\r\n device = result.device,\r\n isUnc = result.isUnc,\r\n isAbsolute = result.isAbsolute,\r\n tail = result.tail;\r\n\r\n if (device &&\r\n resolvedDevice &&\r\n device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n\r\n if (!resolvedDevice) {\r\n resolvedDevice = device;\r\n }\r\n if (!resolvedAbsolute) {\r\n resolvedTail = tail + '\\\\' + resolvedTail;\r\n resolvedAbsolute = isAbsolute;\r\n }\r\n\r\n if (resolvedDevice && resolvedAbsolute) {\r\n break;\r\n }\r\n }\r\n\r\n // Convert slashes to backslashes when `resolvedDevice` points to an UNC\r\n // root. Also squash multiple slashes into a single one where appropriate.\r\n if (isUnc) {\r\n resolvedDevice = normalizeUNCRoot(resolvedDevice);\r\n }\r\n\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n\r\n // Normalize the tail path\r\n resolvedTail = normalizeArray(resolvedTail.split(/[\\\\\\/]+/),\r\n !resolvedAbsolute).join('\\\\');\r\n\r\n return (resolvedDevice + (resolvedAbsolute ? '\\\\' : '') + resolvedTail) ||\r\n '.';\r\n};\r\n\r\n\r\nwin32.normalize = function(path) {\r\n var result = win32StatPath(path),\r\n device = result.device,\r\n isUnc = result.isUnc,\r\n isAbsolute = result.isAbsolute,\r\n tail = result.tail,\r\n trailingSlash = /[\\\\\\/]$/.test(tail);\r\n\r\n // Normalize the tail path\r\n tail = normalizeArray(tail.split(/[\\\\\\/]+/), !isAbsolute).join('\\\\');\r\n\r\n if (!tail && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail && trailingSlash) {\r\n tail += '\\\\';\r\n }\r\n\r\n // Convert slashes to backslashes when `device` points to an UNC root.\r\n // Also squash multiple slashes into a single one where appropriate.\r\n if (isUnc) {\r\n device = normalizeUNCRoot(device);\r\n }\r\n\r\n return device + (isAbsolute ? '\\\\' : '') + tail;\r\n};\r\n\r\n\r\nwin32.isAbsolute = function(path) {\r\n return win32StatPath(path).isAbsolute;\r\n};\r\n\r\nwin32.join = function() {\r\n var paths = [];\r\n for (var i = 0; i < arguments.length; i++) {\r\n var arg = arguments[i];\r\n if (!util.isString(arg)) {\r\n throw new TypeError('Arguments to path.join must be strings');\r\n }\r\n if (arg) {\r\n paths.push(arg);\r\n }\r\n }\r\n\r\n var joined = paths.join('\\\\');\r\n\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\')\r\n if (!/^[\\\\\\/]{2}[^\\\\\\/]/.test(paths[0])) {\r\n joined = joined.replace(/^[\\\\\\/]{2,}/, '\\\\');\r\n }\r\n\r\n return win32.normalize(joined);\r\n};\r\n\r\n\r\n// path.relative(from, to)\r\n// it will solve the relative path from 'from' to 'to', for instance:\r\n// from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n// to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n// The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\nwin32.relative = function(from, to) {\r\n from = win32.resolve(from);\r\n to = win32.resolve(to);\r\n\r\n // windows is not case sensitive\r\n var lowerFrom = from.toLowerCase();\r\n var lowerTo = to.toLowerCase();\r\n\r\n var toParts = trimArray(to.split('\\\\'));\r\n\r\n var lowerFromParts = trimArray(lowerFrom.split('\\\\'));\r\n var lowerToParts = trimArray(lowerTo.split('\\\\'));\r\n\r\n var length = Math.min(lowerFromParts.length, lowerToParts.length);\r\n var samePartsLength = length;\r\n for (var i = 0; i < length; i++) {\r\n if (lowerFromParts[i] !== lowerToParts[i]) {\r\n samePartsLength = i;\r\n break;\r\n }\r\n }\r\n\r\n if (samePartsLength == 0) {\r\n return to;\r\n }\r\n\r\n var outputParts = [];\r\n for (var i = samePartsLength; i < lowerFromParts.length; i++) {\r\n outputParts.push('..');\r\n }\r\n\r\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\r\n\r\n return outputParts.join('\\\\');\r\n};\r\n\r\n\r\nwin32._makeLong = function(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (!util.isString(path))\r\n return path;\r\n\r\n if (!path) {\r\n return '';\r\n }\r\n\r\n var resolvedPath = win32.resolve(path);\r\n\r\n if (/^[a-zA-Z]\\:\\\\/.test(resolvedPath)) {\r\n // path is local filesystem path, which needs to be converted\r\n // to long UNC path.\r\n return '\\\\\\\\?\\\\' + resolvedPath;\r\n } else if (/^\\\\\\\\[^?.]/.test(resolvedPath)) {\r\n // path is network UNC path, which needs to be converted\r\n // to long UNC path.\r\n return '\\\\\\\\?\\\\UNC\\\\' + resolvedPath.substring(2);\r\n }\r\n\r\n return path;\r\n};\r\n\r\n\r\nwin32.dirname = function(path) {\r\n var result = win32SplitPath(path),\r\n root = result[0],\r\n dir = result[1];\r\n\r\n if (!root && !dir) {\r\n // No dirname whatsoever\r\n return '.';\r\n }\r\n\r\n if (dir) {\r\n // It has a dirname, strip trailing slash\r\n dir = dir.substr(0, dir.length - 1);\r\n }\r\n\r\n return root + dir;\r\n};\r\n\r\n\r\nwin32.basename = function(path, ext) {\r\n var f = win32SplitPath(path)[2];\r\n // TODO: make this comparison case-insensitive on windows?\r\n if (ext && f.substr(-1 * ext.length) === ext) {\r\n f = f.substr(0, f.length - ext.length);\r\n }\r\n return f;\r\n};\r\n\r\n\r\nwin32.extname = function(path) {\r\n return win32SplitPath(path)[3];\r\n};\r\n\r\n\r\nwin32.format = function(pathObject) {\r\n if (!util.isObject(pathObject)) {\r\n throw new TypeError(\r\n \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\r\n );\r\n }\r\n\r\n var root = pathObject.root || '';\r\n\r\n if (!util.isString(root)) {\r\n throw new TypeError(\r\n \"'pathObject.root' must be a string or undefined, not \" +\r\n typeof pathObject.root\r\n );\r\n }\r\n\r\n var dir = pathObject.dir;\r\n var base = pathObject.base || '';\r\n if (!dir) {\r\n return base;\r\n }\r\n if (dir[dir.length - 1] === win32.sep) {\r\n return dir + base;\r\n }\r\n return dir + win32.sep + base;\r\n};\r\n\r\n\r\nwin32.parse = function(pathString) {\r\n if (!util.isString(pathString)) {\r\n throw new TypeError(\r\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\r\n );\r\n }\r\n var allParts = win32SplitPath(pathString);\r\n if (!allParts || allParts.length !== 4) {\r\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\r\n }\r\n return {\r\n root: allParts[0],\r\n dir: allParts[0] + allParts[1].slice(0, -1),\r\n base: allParts[2],\r\n ext: allParts[3],\r\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\r\n };\r\n};\r\n\r\n\r\nwin32.sep = '\\\\';\r\nwin32.delimiter = ';';\r\n\r\n\r\n// Split a filename into [root, dir, basename, ext], unix version\r\n// 'root' is just a slash, or nothing.\r\nvar splitPathRe =\r\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\r\nvar posix = {};\r\n\r\n\r\nfunction posixSplitPath(filename) {\r\n return splitPathRe.exec(filename).slice(1);\r\n}\r\n\r\n\r\n// path.resolve([from ...], to)\r\n// posix version\r\nposix.resolve = function() {\r\n var resolvedPath = '',\r\n resolvedAbsolute = false;\r\n\r\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n var path = (i >= 0) ? arguments[i] : process.cwd();\r\n\r\n // Skip empty and invalid entries\r\n if (!util.isString(path)) {\r\n throw new TypeError('Arguments to path.resolve must be strings');\r\n } else if (!path) {\r\n continue;\r\n }\r\n\r\n resolvedPath = path + '/' + resolvedPath;\r\n resolvedAbsolute = path[0] === '/';\r\n }\r\n\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n\r\n // Normalize the path\r\n resolvedPath = normalizeArray(resolvedPath.split('/'),\r\n !resolvedAbsolute).join('/');\r\n\r\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\r\n};\r\n\r\n// path.normalize(path)\r\n// posix version\r\nposix.normalize = function(path) {\r\n var isAbsolute = posix.isAbsolute(path),\r\n trailingSlash = path && path[path.length - 1] === '/';\r\n\r\n // Normalize the path\r\n path = normalizeArray(path.split('/'), !isAbsolute).join('/');\r\n\r\n if (!path && !isAbsolute) {\r\n path = '.';\r\n }\r\n if (path && trailingSlash) {\r\n path += '/';\r\n }\r\n\r\n return (isAbsolute ? '/' : '') + path;\r\n};\r\n\r\n// posix version\r\nposix.isAbsolute = function(path) {\r\n return path.charAt(0) === '/';\r\n};\r\n\r\n// posix version\r\nposix.join = function() {\r\n var path = '';\r\n for (var i = 0; i < arguments.length; i++) {\r\n var segment = arguments[i];\r\n if (!util.isString(segment)) {\r\n throw new TypeError('Arguments to path.join must be strings');\r\n }\r\n if (segment) {\r\n if (!path) {\r\n path += segment;\r\n } else {\r\n path += '/' + segment;\r\n }\r\n }\r\n }\r\n return posix.normalize(path);\r\n};\r\n\r\n\r\n// path.relative(from, to)\r\n// posix version\r\nposix.relative = function(from, to) {\r\n from = posix.resolve(from).substr(1);\r\n to = posix.resolve(to).substr(1);\r\n\r\n var fromParts = trimArray(from.split('/'));\r\n var toParts = trimArray(to.split('/'));\r\n\r\n var length = Math.min(fromParts.length, toParts.length);\r\n var samePartsLength = length;\r\n for (var i = 0; i < length; i++) {\r\n if (fromParts[i] !== toParts[i]) {\r\n samePartsLength = i;\r\n break;\r\n }\r\n }\r\n\r\n var outputParts = [];\r\n for (var i = samePartsLength; i < fromParts.length; i++) {\r\n outputParts.push('..');\r\n }\r\n\r\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\r\n\r\n return outputParts.join('/');\r\n};\r\n\r\n\r\nposix._makeLong = function(path) {\r\n return path;\r\n};\r\n\r\n\r\nposix.dirname = function(path) {\r\n var result = posixSplitPath(path),\r\n root = result[0],\r\n dir = result[1];\r\n\r\n if (!root && !dir) {\r\n // No dirname whatsoever\r\n return '.';\r\n }\r\n\r\n if (dir) {\r\n // It has a dirname, strip trailing slash\r\n dir = dir.substr(0, dir.length - 1);\r\n }\r\n\r\n return root + dir;\r\n};\r\n\r\n\r\nposix.basename = function(path, ext) {\r\n var f = posixSplitPath(path)[2];\r\n // TODO: make this comparison case-insensitive on windows?\r\n if (ext && f.substr(-1 * ext.length) === ext) {\r\n f = f.substr(0, f.length - ext.length);\r\n }\r\n return f;\r\n};\r\n\r\n\r\nposix.extname = function(path) {\r\n return posixSplitPath(path)[3];\r\n};\r\n\r\n\r\nposix.format = function(pathObject) {\r\n if (!util.isObject(pathObject)) {\r\n throw new TypeError(\r\n \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\r\n );\r\n }\r\n\r\n var root = pathObject.root || '';\r\n\r\n if (!util.isString(root)) {\r\n throw new TypeError(\r\n \"'pathObject.root' must be a string or undefined, not \" +\r\n typeof pathObject.root\r\n );\r\n }\r\n\r\n var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\r\n var base = pathObject.base || '';\r\n return dir + base;\r\n};\r\n\r\n\r\nposix.parse = function(pathString) {\r\n if (!util.isString(pathString)) {\r\n throw new TypeError(\r\n \"Parameter 'pathString' must be a string, not \" + typeof pathString\r\n );\r\n }\r\n var allParts = posixSplitPath(pathString);\r\n if (!allParts || allParts.length !== 4) {\r\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\r\n }\r\n allParts[1] = allParts[1] || '';\r\n allParts[2] = allParts[2] || '';\r\n allParts[3] = allParts[3] || '';\r\n\r\n return {\r\n root: allParts[0],\r\n dir: allParts[0] + allParts[1].slice(0, -1),\r\n base: allParts[2],\r\n ext: allParts[3],\r\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\r\n };\r\n};\r\n\r\n\r\nposix.sep = '/';\r\nposix.delimiter = ':';\r\n\r\n\r\nif (isWindows)\r\n module.exports = win32;\r\nelse /* posix */\r\n module.exports = posix;\r\n\r\nmodule.exports.posix = posix;\r\nmodule.exports.win32 = win32;\r\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (debug || !quiet) {\n _log('Loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsedAll, options)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(parsedAll).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injecting env (${keysCount}) from ${shortPaths.join(',')}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n }\n }\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","import * as dotenv from \"dotenv\";\nfunction getKosEnv() {\n const kosKeys = Object.keys(process.env).filter((key) =>\n key.startsWith(\"KOS_\")\n );\n return kosKeys;\n}\ndotenv.config({\n path: \".env\",\n});\nexport const withKosConfig = (webpack) => (config) => {\n if (config) {\n config.resolve = config.resolve || {};\n config.resolve.fallback = {\n ...config.resolve.fallback,\n path: false,\n };\n }\n config.mode = (process.env.NODE_ENV || config.mode) as any;\n // customize webpack config here\n config?.plugins?.push(\n new webpack.EnvironmentPlugin([\"NODE_ENV\", ...getKosEnv()])\n );\n return config;\n};\n"],"names":["__viteBrowserExternal","isBufferBrowser","arg","inherits_browserModule","ctor","superCtor","TempCtor","formatRegExp","exports","f","isString","objects","i","inspect","args","len","str","x","isNull","isObject","fn","msg","isUndefined","global","warned","deprecated","debugs","debugEnviron","set","pid","obj","opts","ctx","stylizeNoColor","isBoolean","stylizeWithColor","formatValue","styleType","style","arrayToHash","array","hash","val","idx","value","recurseTimes","isFunction","ret","primitive","formatPrimitive","keys","visibleKeys","isError","formatError","name","isRegExp","isDate","base","braces","isArray","n","output","formatArray","key","formatProperty","reduceToSingleString","simple","isNumber","l","hasOwnProperty","desc","line","length","prev","cur","ar","isNullOrUndefined","isSymbol","re","objectToString","d","e","isPrimitive","require$$0","o","pad","months","timestamp","time","require$$1","origin","add","prop","isWindows","util","normalizeArray","parts","allowAboveRoot","res","p","trimArray","arr","lastIndex","start","end","splitDeviceRe","splitTailRe","win32","win32SplitPath","filename","result","device","tail","result2","dir","basename","ext","win32StatPath","path","isUnc","normalizeUNCRoot","resolvedDevice","resolvedTail","resolvedAbsolute","isAbsolute","trailingSlash","paths","joined","from","to","lowerFrom","lowerTo","toParts","lowerFromParts","lowerToParts","samePartsLength","outputParts","resolvedPath","root","pathObject","pathString","allParts","splitPathRe","posix","posixSplitPath","segment","fromParts","pathModule","fs","os","require$$2","crypto","require$$3","packageJson","require$$4","version","LINE","parse","src","lines","match","maybeQuote","_parseVault","options","vaultPath","_vaultPath","DotenvModule","err","_dotenvKey","decrypted","attrs","_instructions","error","_warn","message","_debug","_log","dotenvKey","uri","environment","environmentKey","ciphertext","possibleVaultPath","filepath","_resolveHome","envPath","_configVault","debug","quiet","parsed","processEnv","configDotenv","dotenvPath","encoding","optionPaths","lastError","parsedAll","keysCount","shortPaths","filePath","relative","config","decrypt","encrypted","keyStr","nonce","authTag","aesgcm","isRange","invalidKeyLength","decryptionFailed","populate","override","mainModule","config_1","getKosEnv","dotenv.config","withKosConfig","webpack","_a"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5]}
1
+ {"version":3,"file":"webpack.js","sources":["../../../../node_modules/dotenv/lib/main.js","../../../../packages/sdk/kos-ui-plugin/src/lib/webpack/with-kos-config.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/webpack/with-plugin-dev-server.ts","../../../../packages/sdk/kos-ui-plugin/src/lib/webpack/with-plugin-dev-aggregator.ts"],"sourcesContent":["const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n const obj = {}\n\n // Convert buffer to string\n let lines = src.toString()\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n let match\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1]\n\n // Default undefined or null to empty string\n let value = (match[2] || '')\n\n // Remove whitespace\n value = value.trim()\n\n // Check if double quoted\n const maybeQuote = value[0]\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n')\n value = value.replace(/\\\\r/g, '\\r')\n }\n\n // Add to object\n obj[key] = value\n }\n\n return obj\n}\n\nfunction _parseVault (options) {\n options = options || {}\n\n const vaultPath = _vaultPath(options)\n options.path = vaultPath // parse .env.vault\n const result = DotenvModule.configDotenv(options)\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n err.code = 'MISSING_DATA'\n throw err\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',')\n const length = keys.length\n\n let decrypted\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim()\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key)\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n break\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY\n }\n\n // fallback to empty string\n return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri\n try {\n uri = new URL(dotenvKey)\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n throw error\n }\n\n // Get decrypt key\n const key = uri.password\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment')\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n throw err\n }\n\n return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n let possibleVaultPath = null\n\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n }\n\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath\n }\n\n return null\n}\n\nfunction _resolveHome (envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (debug || !quiet) {\n _log('Loading env from encrypted .env.vault')\n }\n\n const parsed = DotenvModule._parseVault(options)\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsed, options)\n\n return { parsed }\n}\n\nfunction configDotenv (options) {\n const dotenvPath = path.resolve(process.cwd(), '.env')\n let encoding = 'utf8'\n const debug = Boolean(options && options.debug)\n const quiet = options && 'quiet' in options ? options.quiet : true\n\n if (options && options.encoding) {\n encoding = options.encoding\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default')\n }\n }\n\n let optionPaths = [dotenvPath] // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)]\n } else {\n optionPaths = [] // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath))\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError\n const parsedAll = {}\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n DotenvModule.populate(parsedAll, parsed, options)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`)\n }\n lastError = e\n }\n }\n\n let processEnv = process.env\n if (options && options.processEnv != null) {\n processEnv = options.processEnv\n }\n\n DotenvModule.populate(processEnv, parsedAll, options)\n\n if (debug || !quiet) {\n const keysCount = Object.keys(parsedAll).length\n const shortPaths = []\n for (const filePath of optionPaths) {\n try {\n const relative = path.relative(process.cwd(), filePath)\n shortPaths.push(relative)\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${filePath} ${e.message}`)\n }\n lastError = e\n }\n }\n\n _log(`injecting env (${keysCount}) from ${shortPaths.join(',')}`)\n }\n\n if (lastError) {\n return { parsed: parsedAll, error: lastError }\n } else {\n return { parsed: parsedAll }\n }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options)\n }\n\n const vaultPath = _vaultPath(options)\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n return DotenvModule.configDotenv(options)\n }\n\n return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex')\n let ciphertext = Buffer.from(encrypted, 'base64')\n\n const nonce = ciphertext.subarray(0, 12)\n const authTag = ciphertext.subarray(-16)\n ciphertext = ciphertext.subarray(12, -16)\n\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n aesgcm.setAuthTag(authTag)\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n } catch (error) {\n const isRange = error instanceof RangeError\n const invalidKeyLength = error.message === 'Invalid key length'\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n err.code = 'INVALID_DOTENV_KEY'\n throw err\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n err.code = 'DECRYPTION_FAILED'\n throw err\n } else {\n throw error\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n const debug = Boolean(options && options.debug)\n const override = Boolean(options && options.override)\n\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n err.code = 'OBJECT_REQUIRED'\n throw err\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key]\n }\n\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`)\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`)\n }\n }\n } else {\n processEnv[key] = parsed[key]\n }\n }\n}\n\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","import * as dotenv from \"dotenv\";\nfunction getKosEnv() {\n const kosKeys = Object.keys(process.env).filter((key) =>\n key.startsWith(\"KOS_\")\n );\n return kosKeys;\n}\ndotenv.config({\n path: \".env\",\n});\nexport const withKosConfig = (webpack) => (config) => {\n if (config) {\n config.resolve = config.resolve || {};\n config.resolve.fallback = {\n ...config.resolve.fallback,\n path: false,\n };\n }\n config.mode = (process.env.NODE_ENV || config.mode) as any;\n // customize webpack config here\n config?.plugins?.push(\n new webpack.EnvironmentPlugin([\"NODE_ENV\", ...getKosEnv()])\n );\n return config;\n};\n","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { v4 as uuidv4 } from \"uuid\";\n\n/**\n * Configuration options for plugin development server middleware\n */\nexport interface PluginDevServerOptions {\n /**\n * Path to .kos.json file, relative to project root.\n * Default: '.kos.json'\n */\n kosJsonPath?: string;\n\n /**\n * Project root directory. Used to resolve kosJsonPath.\n * Default: process.cwd()\n */\n projectRoot?: string;\n\n /**\n * Default plugin context if not specified in .kos.json test section.\n * Default: 'kosdev.ddk'\n */\n defaultContext?: string;\n\n /**\n * Enable verbose logging for debugging.\n * Default: false\n */\n verbose?: boolean;\n}\n\n/**\n * Webpack plugin composable that adds plugin development server middleware.\n *\n * This middleware serves the `/api/kos/ui/plugins/contexts` endpoint, mimicking\n * the backend KOS plugin API response format. It enables local plugin development\n * without requiring backend deployment.\n *\n * @example\n * ```typescript\n * // webpack.config.ts\n * import { withKosConfig, withPluginDevServer } from '@kosdev-code/kos-ui-plugin/webpack';\n * import { composePlugins, withNx } from '@nx/webpack';\n *\n * export default composePlugins(\n * withNx(),\n * withReact({}),\n * withKosConfig(webpack),\n * withPluginDevServer() // ← Add plugin dev server\n * );\n * ```\n *\n * @example With options\n * ```typescript\n * export default composePlugins(\n * withNx(),\n * withReact({}),\n * withKosConfig(webpack),\n * withPluginDevServer({\n * kosJsonPath: '.kos.json',\n * defaultContext: 'kosdev.ddk',\n * verbose: true\n * })\n * );\n * ```\n *\n * ## .kos.json Structure\n *\n * The middleware reads two sections from .kos.json:\n *\n * ```json\n * {\n * \"kos\": {\n * \"ui\": {\n * \"plugin\": {\n * \"id\": \"MyPlugin\",\n * \"extensions\": [...],\n * \"contributes\": {...}\n * }\n * }\n * },\n * \"test\": {\n * \"plugin\": {\n * \"context\": \"kosdev.ddk\"\n * }\n * }\n * }\n * ```\n *\n * - `kos.ui.plugin`: Production plugin descriptor (becomes API `descriptor`)\n * - `test.plugin.context`: Development plugin context/group name\n *\n * ## Response Format\n *\n * The middleware returns the same format as the backend `/api/kos/ui/plugins/contexts`:\n *\n * ```json\n * {\n * \"status\": 200,\n * \"version\": {\"major\": 1, \"minor\": 0},\n * \"data\": [\n * {\n * \"name\": \"kosdev.ddk\",\n * \"plugins\": [\n * {\n * \"descriptor\": { ... },\n * \"id\": \"uuid-v4\",\n * \"path\": \"/\"\n * }\n * ]\n * }\n * ]\n * }\n * ```\n *\n * @param options - Configuration options\n */\nexport const withPluginDevServer = (options: PluginDevServerOptions = {}) => {\n const {\n kosJsonPath = \".kos.json\",\n projectRoot,\n defaultContext = \"kosdev.ddk\",\n verbose = false,\n } = options;\n\n return (config: any, context: any) => {\n // Only add middleware if devServer is configured\n if (!config.devServer) {\n if (verbose) {\n console.log(\n \"[withPluginDevServer] No devServer config found, skipping middleware\"\n );\n }\n return config;\n }\n\n // Resolve project root from context if not provided\n // In Nx webpack configs, the context is passed as the second argument\n // We need to check several possible locations for the project path:\n // - config.context (webpack context, usually the project root) - PREFERRED\n // - context.options.root + context.options.projectRoot (Nx-specific fallback)\n let effectiveProjectRoot: string = projectRoot || process.cwd();\n\n if (!projectRoot) {\n // Try config.context first (webpack's context is usually the project directory)\n if (config?.context && typeof config.context === \"string\") {\n effectiveProjectRoot = config.context;\n }\n // If that's not available, try combining workspace root with project root\n else if (context?.options?.root && context?.options?.projectRoot) {\n effectiveProjectRoot = path.join(\n context.options.root,\n context.options.projectRoot\n );\n }\n }\n\n const resolvedKosJsonPath = path.resolve(effectiveProjectRoot, kosJsonPath);\n\n if (verbose) {\n console.log(\"[withPluginDevServer] Configuration:\", {\n kosJsonPath: resolvedKosJsonPath,\n projectRoot: effectiveProjectRoot,\n defaultContext,\n });\n }\n\n // Initialize or extend setupMiddlewares\n const originalSetupMiddlewares = config.devServer.setupMiddlewares;\n\n config.devServer.setupMiddlewares = (\n middlewares: any[],\n devServer: any\n ) => {\n // Call original setupMiddlewares if it exists\n if (originalSetupMiddlewares) {\n middlewares = originalSetupMiddlewares(middlewares, devServer);\n }\n\n // Add plugin metadata endpoint\n devServer.app.get(\n \"/api/kos/ui/plugins/contexts\",\n (_req: any, res: any) => {\n try {\n // Check if .kos.json exists\n if (!fs.existsSync(resolvedKosJsonPath)) {\n const errorMsg = `.kos.json not found at ${resolvedKosJsonPath}`;\n console.error(`[withPluginDevServer] ${errorMsg}`);\n return res.status(404).json({\n status: 404,\n error: errorMsg,\n hint: \"Ensure .kos.json exists in your plugin project root\",\n });\n }\n\n // Read and parse .kos.json\n const kosJsonContent = fs.readFileSync(\n resolvedKosJsonPath,\n \"utf-8\"\n );\n const kosJson = JSON.parse(kosJsonContent);\n\n // Extract production plugin descriptor\n const pluginDescriptor = kosJson.kos?.ui?.plugin;\n if (!pluginDescriptor) {\n const errorMsg = \"kos.ui.plugin section not found in .kos.json\";\n console.error(`[withPluginDevServer] ${errorMsg}`);\n return res.status(400).json({\n status: 400,\n error: errorMsg,\n hint: \"Ensure .kos.json has kos.ui.plugin section defined\",\n });\n }\n\n // Extract test configuration\n const testConfig = kosJson.test?.plugin;\n const pluginContext = testConfig?.context || defaultContext;\n\n // Generate deterministic UUID based on plugin ID\n // Using v4 for now, but could use v5 with plugin ID as namespace in future\n const pluginId = uuidv4();\n\n // Build backend-compatible response\n // Note: The 'path' field is just an identifier in dev mode.\n // The actual dev server URL should be provided via 'overrides' in KosPluginProvider\n const metadata = {\n status: 200,\n version: { major: 1, minor: 0 },\n data: [\n {\n name: pluginContext,\n plugins: [\n {\n descriptor: pluginDescriptor,\n id: pluginId,\n path: \"/\", // Simple identifier - actual URL comes from overrides\n },\n ],\n },\n ],\n };\n\n if (verbose) {\n console.log(\"[withPluginDevServer] Serving plugin metadata:\", {\n pluginId: pluginDescriptor.id,\n context: pluginContext,\n extensionsCount: pluginDescriptor.extensions?.length || 0,\n });\n }\n\n res.json(metadata);\n } catch (error) {\n console.error(\n \"[withPluginDevServer] Error serving plugin metadata:\",\n error\n );\n res.status(500).json({\n status: 500,\n error: \"Failed to serve plugin metadata\",\n details: error instanceof Error ? error.message : String(error),\n });\n }\n }\n );\n\n if (verbose) {\n console.log(\n \"[withPluginDevServer] Plugin metadata endpoint registered at /api/kos/ui/plugins/contexts\"\n );\n }\n\n return middlewares;\n };\n\n return config;\n };\n};\n","/**\n * Multi-Plugin Development Mode Aggregation Middleware\n *\n * This webpack composable aggregates metadata from multiple plugin dev servers\n * running on different ports, combining them into a single response at the\n * `/api/kos/ui/plugins/contexts` endpoint.\n *\n * This allows a host app to load multiple plugins simultaneously during development.\n */\n\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nexport interface PluginDevAggregatorOptions {\n /**\n * List of plugin dev server URLs to aggregate.\n * Example: ['http://localhost:4201', 'http://localhost:4202']\n */\n pluginServers: string[];\n\n /**\n * Include the host app's own .kos.json plugin definitions.\n * Default: true\n */\n includeHostPlugins?: boolean;\n\n /**\n * Path to the host app's .kos.json file.\n * Default: './.kos.json'\n */\n kosJsonPath?: string;\n\n /**\n * Merge backend plugins with local dev plugins.\n * When true, fetches plugins from backend and overlays local dev plugins on top.\n * Local dev plugins get overrides pointing to dev servers.\n * Backend plugins use their original URLs (no overrides).\n *\n * This is useful for third-party developers who want to:\n * - Run against a production DDK backend\n * - Load DDK base plugins from the backend\n * - Develop their own custom plugins locally\n *\n * Default: false (local-only mode)\n */\n mergeWithBackend?: boolean;\n\n /**\n * Fallback to backend if no local plugin servers are available.\n * Default: true\n */\n fallbackToBackend?: boolean;\n\n /**\n * Backend URL to fallback to when no plugin servers available.\n * Default: 'http://localhost:8081'\n */\n backendUrl?: string;\n\n /**\n * Enable verbose logging for debugging.\n * Default: false\n */\n verbose?: boolean;\n}\n\n/**\n * Webpack plugin composable that aggregates multiple plugin dev servers.\n *\n * @example\n * ```typescript\n * // Host app webpack.config.ts\n * import { withPluginDevAggregator } from '@kosdev-code/kos-ui-plugin/webpack';\n *\n * export default composePlugins(\n * withNx(),\n * withReact({}),\n * withPluginDevAggregator({\n * pluginServers: [\n * 'http://localhost:4201', // beverage-pour\n * 'http://localhost:4202' // kos-ddk-standard-plugin\n * ]\n * })\n * );\n * ```\n *\n * @example With environment variables\n * ```typescript\n * const pluginServers = [\n * process.env.PLUGIN_A_DEV === 'true' && 'http://localhost:4201',\n * process.env.PLUGIN_B_DEV === 'true' && 'http://localhost:4202',\n * ].filter(Boolean);\n *\n * export default composePlugins(\n * withNx(),\n * withReact({}),\n * withPluginDevAggregator({\n * pluginServers,\n * fallbackToBackend: pluginServers.length === 0\n * })\n * );\n * ```\n */\nexport const withPluginDevAggregator = (\n options: PluginDevAggregatorOptions\n) => {\n const {\n pluginServers,\n includeHostPlugins = true,\n kosJsonPath = \".kos.json\",\n mergeWithBackend = false,\n fallbackToBackend = true,\n backendUrl = \"http://localhost:8081\",\n verbose = false,\n } = options;\n\n return (config: any, context: any) => {\n // Resolve project root from Nx context (similar to withPluginDevServer)\n let effectiveProjectRoot: string = process.cwd();\n\n if (config?.context && typeof config.context === \"string\") {\n effectiveProjectRoot = config.context;\n } else if (context?.options?.root && context?.options?.projectRoot) {\n effectiveProjectRoot = join(\n context.options.root,\n context.options.projectRoot\n );\n }\n\n const resolvedKosJsonPath = join(effectiveProjectRoot, kosJsonPath);\n\n // Only add middleware if devServer is configured\n if (!config.devServer) {\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] No devServer config found, skipping middleware\"\n );\n }\n return config;\n }\n\n if (verbose) {\n console.log(\"[withPluginDevAggregator] Configuration:\", {\n pluginServers,\n fallbackToBackend,\n backendUrl,\n projectRoot: effectiveProjectRoot,\n kosJsonPath: resolvedKosJsonPath,\n });\n }\n\n // Initialize or extend setupMiddlewares\n const originalSetupMiddlewares = config.devServer.setupMiddlewares;\n\n config.devServer.setupMiddlewares = (\n middlewares: any[],\n devServer: any\n ) => {\n // Call original setupMiddlewares if it exists\n if (originalSetupMiddlewares) {\n middlewares = originalSetupMiddlewares(middlewares, devServer);\n }\n\n // Add aggregation endpoint\n devServer.app.get(\n \"/api/kos/ui/plugins/contexts\",\n async (_req: any, res: any) => {\n try {\n // If no plugin servers configured, fallback to backend\n if (pluginServers.length === 0) {\n if (fallbackToBackend) {\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] No plugin servers, proxying to backend:\",\n backendUrl\n );\n }\n\n // Proxy to backend\n const backendResponse = await fetch(\n `${backendUrl}/api/kos/ui/plugins/contexts`\n );\n const backendData = await backendResponse.json();\n return res.json(backendData);\n } else {\n return res.status(404).json({\n status: 404,\n error: \"No plugin servers configured\",\n hint: \"Add plugin server URLs to withPluginDevAggregator options or enable fallbackToBackend\",\n });\n }\n }\n\n // Fetch from all plugin dev servers\n const responses = await Promise.all(\n pluginServers.map(async (serverUrl) => {\n try {\n const response = await fetch(\n `${serverUrl}/api/kos/ui/plugins/contexts`\n );\n if (!response.ok) {\n if (verbose) {\n console.warn(\n `[withPluginDevAggregator] Failed to fetch from ${serverUrl}: ${response.status}`\n );\n }\n return null;\n }\n const data = await response.json();\n return { serverUrl, data };\n } catch (error) {\n if (verbose) {\n console.warn(\n `[withPluginDevAggregator] Error fetching from ${serverUrl}:`,\n error\n );\n }\n return null;\n }\n })\n );\n\n // Filter out failed requests\n const validResponses = responses.filter(\n (r) => r && r.data && r.data.status === 200\n );\n\n // If no valid responses and fallback enabled, try backend\n if (validResponses.length === 0 && fallbackToBackend) {\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] No plugin servers responded, falling back to backend\"\n );\n }\n\n try {\n const backendResponse = await fetch(\n `${backendUrl}/api/kos/ui/plugins/contexts`\n );\n const backendData = await backendResponse.json();\n return res.json(backendData);\n } catch (error) {\n return res.status(503).json({\n status: 503,\n error: \"No plugin servers available and backend unreachable\",\n details:\n error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n // Merge all plugin data from valid responses\n // Group by context name and merge plugins\n // Also build overrides map for dev server URLs\n const mergedData: Record<string, any[]> = {};\n const overridesMap: Record<string, string> = {};\n\n // Step 1: Fetch and include backend plugins if mergeWithBackend is enabled\n // Backend plugins are added WITHOUT overrides (use their production URLs)\n if (mergeWithBackend) {\n try {\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] Fetching backend plugins from:\",\n backendUrl\n );\n }\n\n const backendResponse = await fetch(\n `${backendUrl}/api/kos/ui/plugins/contexts`\n );\n if (backendResponse.ok) {\n const backendData = await backendResponse.json();\n\n if (backendData.status === 200 && backendData.data) {\n backendData.data.forEach((contextGroup: any) => {\n const contextName = contextGroup.name;\n if (!mergedData[contextName]) {\n mergedData[contextName] = [];\n }\n\n // Add backend plugins WITHOUT overrides\n // They will use their production URLs from the backend\n contextGroup.plugins.forEach((plugin: any) => {\n mergedData[contextName].push(plugin);\n\n if (verbose) {\n console.log(\n `[withPluginDevAggregator] Added backend plugin: ${plugin.descriptor?.id} (no override)`\n );\n }\n });\n });\n\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] Successfully merged backend plugins\"\n );\n }\n }\n } else {\n if (verbose) {\n console.warn(\n `[withPluginDevAggregator] Backend fetch failed: ${backendResponse.status}`\n );\n }\n }\n } catch (error) {\n if (verbose) {\n console.warn(\n \"[withPluginDevAggregator] Error fetching backend plugins:\",\n error\n );\n }\n }\n }\n\n // Step 2: Include host app's own plugin definitions if enabled\n if (includeHostPlugins) {\n try {\n const kosJsonContent = readFileSync(\n resolvedKosJsonPath,\n \"utf-8\"\n );\n const kosJson = JSON.parse(kosJsonContent);\n\n // Check for plugin definitions in kos.ui.plugin or kosdev.ddk.ncui.plugin\n const pluginDescriptor = kosJson.kos?.ui?.plugin;\n const ncuiPluginDescriptor = kosJson.kosdev?.ddk?.ncui?.plugin;\n\n // Determine context based on plugin type\n const contexts: Array<{\n name: string;\n plugin: { descriptor: any; id: string; path: string };\n }> = [];\n\n if (pluginDescriptor) {\n contexts.push({\n name: kosJson.test?.plugin?.context || \"kos.ui\",\n plugin: {\n descriptor: pluginDescriptor,\n id: uuidv4(),\n path: \"/\", // Host app plugins are served locally\n },\n });\n }\n\n if (ncuiPluginDescriptor) {\n contexts.push({\n name: \"kosdev.ddk\",\n plugin: {\n descriptor: ncuiPluginDescriptor,\n id: uuidv4(),\n path: \"/\", // Host app plugins are served locally\n },\n });\n }\n\n // Add host plugins to merged data\n contexts.forEach(({ name, plugin }) => {\n if (!mergedData[name]) {\n mergedData[name] = [];\n }\n mergedData[name].push(plugin);\n\n if (verbose) {\n console.log(\n `[withPluginDevAggregator] Added host plugin: ${plugin.descriptor.id} to context ${name}`\n );\n }\n });\n } catch (error) {\n if (verbose) {\n console.warn(\n \"[withPluginDevAggregator] Failed to read host .kos.json:\",\n error\n );\n }\n }\n }\n\n // Step 3: Add plugins from remote dev servers with overrides\n // Local dev plugins get overrides pointing to their dev server URLs\n validResponses.forEach((responseWrapper) => {\n if (!responseWrapper) return;\n const { serverUrl, data: response } = responseWrapper;\n\n response.data?.forEach((contextGroup: any) => {\n const contextName = contextGroup.name;\n if (!mergedData[contextName]) {\n mergedData[contextName] = [];\n }\n\n // Add plugins and build overrides for each plugin\n contextGroup.plugins.forEach((plugin: any) => {\n mergedData[contextName].push(plugin);\n // Map plugin ID to its dev server URL\n // This allows KosPluginProvider to use overrides to point to the right server\n overridesMap[plugin.id] = `${serverUrl}/`;\n\n if (verbose) {\n console.log(\n `[withPluginDevAggregator] Added local dev plugin: ${plugin.descriptor?.id} with override to ${serverUrl}/`\n );\n }\n });\n });\n });\n\n // Convert back to array format\n const aggregatedData = Object.entries(mergedData).map(\n ([name, plugins]) => ({\n name,\n plugins,\n })\n );\n\n const aggregatedResponse = {\n status: 200,\n version: { major: 1, minor: 0 },\n data: aggregatedData,\n // Include overrides map for dev mode\n // This allows the host app to pass these to KosPluginProvider\n overrides: overridesMap,\n };\n\n if (verbose) {\n console.log(\"[withPluginDevAggregator] Aggregated plugins:\", {\n contexts: aggregatedData.length,\n totalPlugins: aggregatedData.reduce(\n (sum, ctx) => sum + ctx.plugins.length,\n 0\n ),\n pluginIds: aggregatedData.flatMap((ctx) =>\n ctx.plugins.map((p: any) => p.descriptor?.id)\n ),\n overrides: overridesMap,\n });\n }\n\n res.json(aggregatedResponse);\n } catch (error) {\n console.error(\n \"[withPluginDevAggregator] Error aggregating plugins:\",\n error\n );\n res.status(500).json({\n status: 500,\n error: \"Failed to aggregate plugin metadata\",\n details: error instanceof Error ? error.message : String(error),\n });\n }\n }\n );\n\n if (verbose) {\n console.log(\n \"[withPluginDevAggregator] Plugin aggregation endpoint registered at /api/kos/ui/plugins/contexts\"\n );\n }\n\n return middlewares;\n };\n\n return config;\n };\n};\n"],"names":["fs","require$$0","path","require$$1","os","require$$2","crypto","require$$3","packageJson","require$$4","version","LINE","parse","src","obj","lines","match","key","value","maybeQuote","_parseVault","options","vaultPath","_vaultPath","result","DotenvModule","err","keys","_dotenvKey","length","decrypted","i","attrs","_instructions","error","_warn","message","_debug","_log","dotenvKey","uri","environment","environmentKey","ciphertext","possibleVaultPath","filepath","_resolveHome","envPath","_configVault","debug","quiet","parsed","processEnv","configDotenv","dotenvPath","encoding","optionPaths","lastError","parsedAll","e","keysCount","shortPaths","filePath","relative","config","decrypt","encrypted","keyStr","nonce","authTag","aesgcm","isRange","invalidKeyLength","decryptionFailed","populate","override","mainModule","config_1","getKosEnv","dotenv.config","withKosConfig","webpack","_a","withPluginDevServer","kosJsonPath","projectRoot","defaultContext","verbose","context","effectiveProjectRoot","_b","resolvedKosJsonPath","originalSetupMiddlewares","middlewares","devServer","_req","res","errorMsg","kosJsonContent","kosJson","pluginDescriptor","testConfig","_c","pluginContext","pluginId","uuidv4","metadata","_d","withPluginDevAggregator","pluginServers","includeHostPlugins","mergeWithBackend","fallbackToBackend","backendUrl","join","backendData","validResponses","serverUrl","response","data","r","mergedData","overridesMap","backendResponse","contextGroup","contextName","plugin","readFileSync","ncuiPluginDescriptor","_e","contexts","_g","_f","name","responseWrapper","aggregatedData","plugins","aggregatedResponse","sum","ctx","p"],"mappings":"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","x_google_ignoreList":[0]}