arcanajs 5.0.0 → 5.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"arcanajs.js","mappings":"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","sources":["webpack://arcanajs/./src/lib/server/utils/dynamicRequire.ts","webpack://arcanajs/external commonjs \"arcana-views\"","webpack://arcanajs/./node_modules/reflect-metadata/Reflect.js","webpack://arcanajs/webpack/bootstrap","webpack://arcanajs/webpack/runtime/compat get default export","webpack://arcanajs/webpack/runtime/define property getters","webpack://arcanajs/webpack/runtime/hasOwnProperty shorthand","webpack://arcanajs/webpack/runtime/make namespace object","webpack://arcanajs/external commonjs \"compression\"","webpack://arcanajs/external commonjs \"cookie-parser\"","webpack://arcanajs/external commonjs \"express\"","webpack://arcanajs/external node-commonjs \"fs\"","webpack://arcanajs/external commonjs \"helmet\"","webpack://arcanajs/external node-commonjs \"path\"","webpack://arcanajs/external commonjs \"react\"","webpack://arcanajs/./src/lib/shared/components/Body.tsx","webpack://arcanajs/./src/lib/shared/utils/createSingletonContext.ts","webpack://arcanajs/./src/lib/shared/context/HeadContext.tsx","webpack://arcanajs/./src/lib/shared/components/Head.tsx","webpack://arcanajs/./src/lib/shared/hooks/useHead.ts","webpack://arcanajs/./src/lib/shared/context/RouterContext.tsx","webpack://arcanajs/./src/lib/shared/components/Link.tsx","webpack://arcanajs/./src/lib/shared/hooks/useRouter.ts","webpack://arcanajs/./src/lib/shared/context/PageContext.tsx","webpack://arcanajs/./src/lib/shared/components/Page.tsx","webpack://arcanajs/./src/lib/shared/views/ErrorPage.tsx","webpack://arcanajs/./src/lib/shared/views/NotFoundPage.tsx","webpack://arcanajs/external commonjs \"react-dom/server\"","webpack://arcanajs/./src/lib/shared/core/ArcanaJSApp.tsx","webpack://arcanajs/./src/lib/server/ArcanaJSMiddleware.ts","webpack://arcanajs/./src/lib/server/DefaultTemplate.ts","webpack://arcanajs/external node-commonjs \"crypto\"","webpack://arcanajs/./src/lib/server/CsrfMiddleware.ts","webpack://arcanajs/./src/lib/server/ResponseHandlerMiddleware.ts","webpack://arcanajs/./src/lib/server/Container.ts","webpack://arcanajs/./src/lib/server/ArcanaJSServer.ts","webpack://arcanajs/./src/lib/server/DynamicRouter.ts","webpack://arcanajs/./src/lib/server/ControllerBinder.ts","webpack://arcanajs/./src/lib/server/MiddlewareBinder.ts","webpack://arcanajs/./src/lib/server/Router.ts","webpack://arcanajs/./src/lib/server/support/ServiceProvider.ts","webpack://arcanajs/./src/lib/index.server.ts"],"sourcesContent":["declare const __non_webpack_require__: NodeJS.Require;\n\n/**\n * Helper to dynamically require modules at runtime, bypassing Webpack bundling.\n * This is necessary for loading user configuration files, migrations, and views\n * that are not part of the framework bundle but exist in the user's project.\n */\nexport const dynamicRequire = (id: string) => {\n // Use a string lookup to access the native require function via process.mainModule\n // This prevents Webpack from seeing \"require\" and warning about critical dependencies.\n // It also ensures we get the native Node require, not Webpack's internal require.\n try {\n const _global = global as any;\n const nativeRequire = _global[\"process\"]?.[\"mainModule\"]?.[\"require\"];\n if (nativeRequire) {\n return nativeRequire(id);\n }\n } catch (e) {\n // Ignore errors during lookup\n }\n\n // Fallback to eval(\"require\") if mainModule lookup fails.\n // This might return Webpack's require in some contexts, but it's a last resort.\n return eval(\"require\")(id);\n};\n","module.exports = require(\"arcana-views\");","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"compression\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"cookie-parser\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"helmet\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","import React from \"react\";\n\ninterface BodyProps {\n children: React.ReactNode;\n}\n\nconst Body: React.FC<BodyProps> = ({ children }) => {\n return <>{children}</>;\n};\nexport default Body;\n","import React, { createContext } from \"react\";\n\n/**\n * Creates a React Context that persists across multiple module loads (Webpack bundles vs Node require).\n * This is essential for SSR applications where the server bundle and dynamically loaded views\n * might reference different instances of the \"same\" context module.\n *\n * @param key A unique string key to identify this context globally\n * @param defaultValue The default value for the context\n * @returns A React Context instance (singleton)\n */\nexport function createSingletonContext<T>(\n key: string,\n defaultValue: T\n): React.Context<T> {\n const globalAny = global as any;\n const symbolKey = Symbol.for(`ARCANAJS_CONTEXT_${key}`);\n\n if (!globalAny[symbolKey]) {\n globalAny[symbolKey] = createContext<T>(defaultValue);\n }\n\n return globalAny[symbolKey];\n}\n","import React from \"react\";\nimport { createSingletonContext } from \"../utils/createSingletonContext\";\n\nexport interface HeadManager {\n tags: React.ReactNode[];\n push: (tags: React.ReactNode) => void;\n}\n\nexport const HeadContext = createSingletonContext<HeadManager | null>(\n \"HeadContext\",\n null\n);\n","import React, { useEffect } from \"react\";\nimport { useHead } from \"../hooks/useHead\";\n\nconst Head: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const headManager = useHead();\n\n // Server-side: Push tags to context\n if (typeof window === \"undefined\" && headManager) {\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n headManager.push(\n React.cloneElement(child as React.ReactElement<any>, {\n \"data-arcanajs-head\": \"true\",\n })\n );\n }\n });\n }\n\n // Client-side: Update DOM\n useEffect(() => {\n const managedElements: HTMLElement[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n const reactElement = child as React.ReactElement<any>;\n if (reactElement.type === \"title\") {\n document.title = reactElement.props.children as string;\n } else if (reactElement.type === \"meta\") {\n const props = reactElement.props;\n // Try to find existing meta tag\n let selector = \"meta\";\n if (props.name) selector += `[name=\"${props.name}\"]`;\n if (props.property) selector += `[property=\"${props.property}\"]`;\n\n // Only select if we have a specific identifier\n if (props.name || props.property) {\n let element =\n document.querySelector(\n selector + '[data-arcanajs-head=\"true\"]'\n ) || document.querySelector(selector);\n\n if (element) {\n // Update existing\n element.setAttribute(\"content\", props.content);\n element.setAttribute(\"data-arcanajs-head\", \"true\");\n managedElements.push(element as HTMLElement);\n } else {\n // Create new\n const newMeta = document.createElement(\"meta\");\n Object.keys(props).forEach((key) => {\n newMeta.setAttribute(key, props[key]);\n });\n newMeta.setAttribute(\"data-arcanajs-head\", \"true\");\n document.head.appendChild(newMeta);\n managedElements.push(newMeta);\n }\n }\n } else if (reactElement.type === \"link\") {\n const props = reactElement.props;\n let selector = \"link\";\n if (props.rel) selector += `[rel=\"${props.rel}\"]`;\n if (props.href) selector += `[href=\"${props.href}\"]`;\n\n let element =\n document.querySelector(selector + '[data-arcanajs-head=\"true\"]') ||\n document.querySelector(selector);\n\n if (element) {\n element.setAttribute(\"data-arcanajs-head\", \"true\");\n managedElements.push(element as HTMLElement);\n } else {\n const newLink = document.createElement(\"link\");\n Object.keys(props).forEach((key) => {\n newLink.setAttribute(key, props[key]);\n });\n newLink.setAttribute(\"data-arcanajs-head\", \"true\");\n document.head.appendChild(newLink);\n managedElements.push(newLink);\n }\n }\n }\n });\n\n return () => {\n // Cleanup managed elements\n managedElements.forEach((el) => {\n // We remove the element to ensure clean state for the next page\n // Note: This might cause a momentary flicker if the next page re-adds it immediately\n el.remove();\n });\n };\n }, [children]);\n\n return null;\n};\nexport default Head;\n","import { useContext } from \"react\";\nimport { HeadContext } from \"../context/HeadContext\";\n\nexport const useHead = () => useContext(HeadContext);\n","import React from \"react\";\nimport { createSingletonContext } from \"../utils/createSingletonContext\";\n\nexport interface RouterContextType {\n navigateTo: (url: string) => void;\n // optional async variant for consumers that want a promise\n navigateToAsync?: (url: string) => Promise<void>;\n currentPage: string;\n currentUrl: string;\n params: Record<string, string>;\n csrfToken?: string;\n onNavigate?: (url: string) => void;\n isNavigating: boolean;\n}\n\nexport const RouterContext = createSingletonContext<RouterContextType | null>(\n \"RouterContext\",\n null\n);\n\nexport const RouterProvider: React.FC<{\n value: RouterContextType;\n children: React.ReactNode;\n}> = ({ value, children }) => {\n return (\n <RouterContext.Provider value={value}>{children}</RouterContext.Provider>\n );\n};\n","import React from \"react\";\nimport useRouter from \"../hooks/useRouter\";\n\ninterface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n prefetch?: boolean;\n}\n\nconst Link: React.FC<LinkProps> = ({\n href,\n children,\n prefetch = false,\n ...props\n}) => {\n const { navigateTo, navigateToAsync } = useRouter();\n\n const isExternal = /^https?:\\/\\//.test(href);\n\n const handleClick = async (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n if (isExternal) {\n // Open external links in a new tab\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (navigateToAsync) {\n await navigateToAsync(href);\n } else {\n navigateTo(href);\n }\n };\n\n const handleMouseEnter = () => {\n if (prefetch && !isExternal) {\n // Prefetch using HEAD request to warm cache\n fetch(href, { method: \"HEAD\" }).catch(() => {});\n }\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n {...props}\n >\n {children}\n </a>\n );\n};\nexport default Link;\n","import { useContext } from \"react\";\nimport { RouterContext } from \"../context/RouterContext\";\n\nconst useRouter = () => {\n const context = useContext(RouterContext);\n if (!context) {\n throw new Error(\"useRouter must be used within an ArcanaJSApp\");\n }\n return context;\n};\nexport default useRouter;\n","import { createSingletonContext } from \"../utils/createSingletonContext\";\n\n// PageContext holds the page data (may be null before hydration).\nexport const PageContext = createSingletonContext<any | null>(\n \"PageContext\",\n null\n);\n","import React from \"react\";\nimport { PageContext } from \"../context/PageContext\";\nimport Head from \"./Head\";\n\nconst Page = <T,>({\n data,\n title,\n children,\n}: {\n data?: T;\n title?: string;\n children: React.ReactNode;\n}) => {\n return (\n <PageContext.Provider value={data as unknown}>\n {title && (\n <Head>\n <title>{title}</title>\n </Head>\n )}\n {children}\n </PageContext.Provider>\n );\n};\nexport default Page;\n","import Body from \"../components/Body\";\nimport Head from \"../components/Head\";\nimport Link from \"../components/Link\";\nimport Page from \"../components/Page\";\ninterface ErrorPageProps {\n message?: string;\n statusCode?: number;\n stack?: string;\n}\n\nexport default function ErrorPage({\n message = \"Something went wrong\",\n statusCode = 500,\n stack,\n}: ErrorPageProps) {\n const isDevelopment = process.env.NODE_ENV === \"development\";\n\n return (\n <Page>\n <Head>\n <title>{statusCode} - Server Error</title>\n <meta name=\"description\" content=\"An error occurred on the server\" />\n </Head>\n <Body>\n <div className=\"relative min-h-screen overflow-hidden bg-black text-white flex flex-col justify-center items-center px-4 font-sans\">\n {/* Animated Background */}\n <div className=\"fixed inset-0 z-0 overflow-hidden pointer-events-none\">\n <div className=\"absolute inset-0 grid-pattern opacity-30\"></div>\n <div className=\"absolute top-1/4 right-1/4 w-96 h-96 bg-red-600 rounded-full opacity-20 blur-3xl animate-glow\"></div>\n <div\n className=\"absolute bottom-1/4 left-1/4 w-96 h-96 bg-orange-600 rounded-full opacity-10 blur-3xl animate-glow\"\n style={{ animationDelay: \"2s\" }}\n ></div>\n <div className=\"absolute inset-0 hero-gradient\"></div>\n </div>\n\n <div className=\"relative z-10 max-w-2xl w-full text-center animate-scale-in\">\n <div className=\"glass-card rounded-3xl p-12 border border-white/10 shadow-2xl\">\n <div className=\"mb-8\">\n <div className=\"text-6xl mb-6 animate-float\">\n <span className=\"text-red-500 drop-shadow-lg filter\">⚠️</span>\n </div>\n <h1 className=\"text-8xl font-bold text-transparent bg-clip-text bg-gradient-to-br from-red-500 to-orange-500 mb-4\">\n {statusCode}\n </h1>\n <h2 className=\"text-3xl font-bold text-white mb-4\">\n Server Error\n </h2>\n <p className=\"text-gray-400 text-lg leading-relaxed\">\n {message}\n </p>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-4 justify-center mb-8\">\n <Link\n href=\"/\"\n className=\"btn-primary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto bg-gradient-to-r from-red-600 to-orange-600 hover:from-red-500 hover:to-orange-500 border-none shadow-red-900/20\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n />\n </svg>\n Go Home\n </Link>\n\n <button\n onClick={() => window.location.reload()}\n className=\"btn-secondary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n Try Again\n </button>\n </div>\n\n {isDevelopment && stack && (\n <div className=\"mt-8 text-left animate-slide-up\">\n <details className=\"bg-black/40 border border-white/10 rounded-xl overflow-hidden group\">\n <summary className=\"cursor-pointer font-medium text-gray-300 p-4 hover:bg-white/5 transition-colors flex items-center justify-between select-none\">\n <span>Stack Trace (Development Only)</span>\n <svg\n className=\"w-5 h-5 text-gray-500 group-open:rotate-180 transition-transform\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </summary>\n <pre className=\"text-xs text-red-300/80 p-4 overflow-x-auto whitespace-pre-wrap font-mono border-t border-white/5 bg-black/20\">\n {stack}\n </pre>\n </details>\n </div>\n )}\n </div>\n\n <div className=\"mt-8 text-gray-500 text-sm\">\n If this problem persists, please{\" \"}\n <Link\n href=\"/contact\"\n className=\"text-red-400 hover:text-red-300 underline transition-colors\"\n >\n contact support\n </Link>\n .\n </div>\n </div>\n </div>\n </Body>\n </Page>\n );\n}\n","import Body from \"../components/Body\";\nimport Head from \"../components/Head\";\nimport Link from \"../components/Link\";\nimport Page from \"../components/Page\";\ninterface NotFoundPageProps {\n url?: string;\n}\n\nexport default function NotFoundPage({ url }: NotFoundPageProps) {\n return (\n <Page>\n <Head>\n <title>404 - Page Not Found</title>\n <meta\n name=\"description\"\n content=\"The page you're looking for doesn't exist\"\n />\n </Head>\n <Body>\n <div className=\"relative min-h-screen overflow-hidden bg-black text-white flex flex-col justify-center items-center px-4 font-sans\">\n {/* Animated Background */}\n <div className=\"fixed inset-0 z-0 overflow-hidden pointer-events-none\">\n <div className=\"absolute inset-0 grid-pattern opacity-30\"></div>\n <div className=\"absolute top-1/4 left-1/4 w-96 h-96 bg-orange-500 rounded-full opacity-20 blur-3xl animate-glow\"></div>\n <div\n className=\"absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500 rounded-full opacity-10 blur-3xl animate-glow\"\n style={{ animationDelay: \"2s\" }}\n ></div>\n <div className=\"absolute inset-0 hero-gradient\"></div>\n </div>\n\n <div className=\"relative z-10 max-w-lg w-full text-center animate-scale-in\">\n <div className=\"glass-card rounded-3xl p-12 border border-white/10 shadow-2xl\">\n <div className=\"mb-8\">\n <h1 className=\"text-9xl font-bold text-transparent bg-clip-text bg-gradient-to-br from-white to-gray-500 mb-4 animate-float\">\n 404\n </h1>\n <h2 className=\"text-3xl font-bold text-white mb-4\">\n Page Not Found\n </h2>\n <p className=\"text-gray-400 text-lg leading-relaxed\">\n {url ? (\n <>\n The page <span className=\"text-orange-400\">\"{url}\"</span>{\" \"}\n you're looking for doesn't exist.\n </>\n ) : (\n \"The page you're looking for doesn't exist.\"\n )}\n </p>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-4 justify-center\">\n <Link\n href=\"/\"\n className=\"btn-primary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n />\n </svg>\n Go Home\n </Link>\n\n <button\n onClick={() => window.history.back()}\n className=\"btn-secondary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n Go Back\n </button>\n </div>\n </div>\n <div className=\"mt-8 text-gray-500 text-sm\">\n If you believe this is an error, please{\" \"}\n <Link\n href=\"/contact\"\n className=\"text-orange-400 hover:text-orange-300 underline transition-colors\"\n >\n contact support\n </Link>\n .\n </div>\n </div>\n </div>\n </Body>\n </Page>\n );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom/server\");","import React, { useEffect, useState } from \"react\";\nimport Page from \"../components/Page\";\nimport { RouterProvider } from \"../context/RouterContext\";\n\nexport interface ArcanaJSAppProps<\n TData = any,\n TParams extends Record<string, string> = Record<string, string>\n> {\n initialPage: string;\n initialData: TData;\n initialParams?: TParams;\n initialUrl?: string;\n csrfToken?: string;\n views: Record<\n string,\n React.ComponentType<{\n data: TData;\n navigateTo: (url: string) => Promise<void>;\n params: TParams;\n }>\n >;\n layout?: React.FC<{ children: React.ReactNode }>;\n onNavigate?: (url: string) => void;\n /** Maximum number of entries to keep in the navigation cache */\n cacheLimit?: number;\n}\n\nexport const ArcanaJSApp = <\n TData = any,\n TParams extends Record<string, string> = Record<string, string>\n>(\n props: ArcanaJSAppProps<TData, TParams>\n) => {\n const {\n initialPage,\n initialData,\n initialParams = {} as TParams,\n initialUrl,\n csrfToken,\n views,\n layout: Layout,\n onNavigate,\n cacheLimit = 50,\n } = props;\n\n const [page, setPage] = useState<string>(initialPage);\n const [data, setData] = useState<TData>(initialData);\n const [params, setParams] = useState<TParams>(initialParams);\n const [url, setUrl] = useState<string>(\n initialUrl ||\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\")\n );\n const [isNavigating, setIsNavigating] = useState(false);\n\n // Navigation cache to store previously visited pages (LRU via Map ordering)\n const navigationCache = React.useRef(\n new Map<string, { page: string; data: TData; params: TParams }>()\n );\n\n // Abort controller for in-flight navigation fetch\n const currentAbort = React.useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (typeof window !== \"undefined\" && !window.history.state) {\n window.history.replaceState(\n { page: initialPage, data: initialData, params: initialParams },\n \"\",\n window.location.href\n );\n }\n\n const handlePopState = (event: PopStateEvent) => {\n if (event.state) {\n setPage(event.state.page);\n setData(event.state.data);\n setParams(event.state.params || ({} as TParams));\n setUrl(window.location.pathname);\n } else {\n // Try to fetch the page state instead of hard reload\n const path = window.location.pathname;\n void navigateTo(path).catch(() => {\n window.location.reload();\n });\n }\n };\n\n window.addEventListener(\"popstate\", handlePopState);\n return () => {\n window.removeEventListener(\"popstate\", handlePopState);\n currentAbort.current?.abort();\n };\n }, []);\n\n const setCache = (\n key: string,\n value: { page: string; data: TData; params: TParams }\n ) => {\n const map = navigationCache.current;\n if (map.has(key)) map.delete(key);\n map.set(key, value);\n if (map.size > cacheLimit) {\n const firstKey = map.keys().next().value;\n if (firstKey !== undefined) map.delete(firstKey);\n }\n };\n\n const navigateTo = async (newUrl: string): Promise<void> => {\n // Check cache first for instant navigation\n const map = navigationCache.current;\n if (map.has(newUrl)) {\n const cached = map.get(newUrl)!;\n setPage(cached.page);\n setData(cached.data);\n setParams(cached.params || ({} as TParams));\n setUrl(newUrl);\n window.history.pushState(cached, \"\", newUrl);\n\n if (typeof window !== \"undefined\") {\n try {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } catch {\n // ignore in non-browser env or when smooth not supported\n }\n }\n\n if (onNavigate) onNavigate(newUrl);\n return;\n }\n\n setIsNavigating(true);\n\n // Abort previous request\n currentAbort.current?.abort();\n const controller = new AbortController();\n currentAbort.current = controller;\n\n try {\n const response = await fetch(newUrl, {\n headers: { \"X-ArcanaJS-Request\": \"true\" },\n cache: \"no-store\",\n signal: controller.signal,\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n setPage(\"NotFoundPage\");\n setUrl(newUrl);\n window.history.pushState(\n { page: \"NotFoundPage\", data: {} },\n \"\",\n newUrl\n );\n return;\n }\n throw new Error(\n `Navigation failed: ${response.status} ${response.statusText}`\n );\n }\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n if (!contentType.includes(\"application/json\")) {\n window.location.href = newUrl;\n return;\n }\n\n const json = await response.json();\n\n const payload = {\n page: json.page as string,\n data: json.data as TData,\n params: (json.params || {}) as TParams,\n };\n setCache(newUrl, payload);\n\n window.history.pushState(\n { page: payload.page, data: payload.data, params: payload.params },\n \"\",\n newUrl\n );\n\n setPage(payload.page);\n setData(payload.data);\n setParams(payload.params || ({} as TParams));\n setUrl(newUrl);\n\n if (typeof window !== \"undefined\") {\n try {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } catch {\n // ignore\n }\n }\n\n if (onNavigate) onNavigate(newUrl);\n } catch (err: any) {\n if (err?.name === \"AbortError\") return;\n console.error(\"Navigation failed\", err);\n throw err;\n } finally {\n // Clear abort controller if it's still the one we set\n if (currentAbort.current === controller) currentAbort.current = null;\n setIsNavigating(false);\n }\n };\n\n const renderPage = () => {\n const Component = (views[page] ||\n views[\"NotFoundPage\"] ||\n (() => <div>404 Not Found</div>)) as React.ComponentType<{\n data: TData;\n navigateTo: (url: string) => Promise<void>;\n params: TParams;\n }>;\n\n return (\n <Page data={data}>\n <Component data={data} navigateTo={navigateTo} params={params} />\n </Page>\n );\n };\n\n const content = renderPage();\n\n return (\n <RouterProvider\n value={{\n // keep backward-compatible wrapper that doesn't return a promise\n navigateTo: (...args: any[]) => {\n void navigateTo(args[0]);\n },\n // new async API consumers can use `navigateToAsync` when available\n navigateToAsync: navigateTo,\n currentPage: page,\n currentUrl: url,\n params,\n csrfToken,\n onNavigate,\n isNavigating,\n }}\n >\n {Layout ? <Layout>{content}</Layout> : <>{content}</>}\n </RouterProvider>\n );\n};\n","import { NextFunction, Request, Response } from \"express\";\nimport fs from \"fs\";\nimport React from \"react\";\nimport { renderToString } from \"react-dom/server\";\nimport { HeadContext, HeadManager } from \"../shared/context/HeadContext\";\nimport { ArcanaJSApp } from \"../shared/core/ArcanaJSApp\";\nimport { defaultHtmlTemplate } from \"./DefaultTemplate\";\n\nconst DEFAULT_HTML_TEMPLATE = defaultHtmlTemplate;\n\n// Extend Express Response interface\ndeclare global {\n namespace Express {\n interface Response {\n /**\n * Renders a React page using ArcanaJS SSR.\n *\n * @param page - The name of the page component to render.\n * @param data - Initial data to pass to the page component (default: {}).\n * @param params - Route parameters (default: {}).\n * @returns The Express Response object.\n */\n renderPage(\n page: string,\n data?: any,\n params?: Record<string, string>\n ): Response;\n }\n }\n}\n\ninterface ArcanaJSOptions {\n views: Record<string, React.FC<any>>;\n indexFile?: string;\n layout?: React.FC<any>;\n}\n\n// Helper to prevent XSS in initial data\nconst safeStringify = (obj: any) => {\n return JSON.stringify(obj).replace(/</g, \"\\\\u003c\");\n};\n\nexport const createArcanaJSMiddleware = (options: ArcanaJSOptions) => {\n const { views, indexFile, layout } = options;\n let cachedIndexHtml: string | null = null;\n\n const getIndexHtml = (\n callback: (err: NodeJS.ErrnoException | null, data: string) => void\n ) => {\n if (process.env.NODE_ENV === \"production\" && cachedIndexHtml) {\n return callback(null, cachedIndexHtml);\n }\n\n if (indexFile && fs.existsSync(indexFile)) {\n fs.readFile(indexFile, \"utf8\", (err, htmlData) => {\n if (!err && process.env.NODE_ENV === \"production\") {\n cachedIndexHtml = htmlData;\n }\n callback(err, htmlData);\n });\n } else {\n if (process.env.NODE_ENV === \"production\") {\n cachedIndexHtml = DEFAULT_HTML_TEMPLATE;\n }\n callback(null, DEFAULT_HTML_TEMPLATE);\n }\n };\n\n return (req: Request, res: Response, next: NextFunction) => {\n res.renderPage = (\n page: string,\n data: any = {},\n params: Record<string, string> = {}\n ) => {\n const csrfToken = res.locals.csrfToken;\n\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n return res.json({ page, data, params, csrfToken });\n }\n try {\n const headTags: React.ReactNode[] = [];\n const headManager: HeadManager = {\n tags: headTags,\n push: (nodes) => headTags.push(nodes),\n };\n\n const appHtml = renderToString(\n React.createElement(\n HeadContext.Provider,\n { value: headManager },\n React.createElement(ArcanaJSApp, {\n initialPage: page,\n initialData: data,\n initialParams: params,\n initialUrl: req.path,\n csrfToken: csrfToken,\n views: views,\n layout: layout,\n })\n )\n );\n\n const headHtml = renderToString(\n React.createElement(React.Fragment, null, ...headTags)\n );\n\n getIndexHtml((err, htmlData) => {\n if (err) {\n console.error(\"Error reading index.html\", err);\n return res.status(500).send(\"Server Error\");\n }\n\n const scriptContent = safeStringify({\n page,\n data,\n params,\n csrfToken,\n });\n const scriptTag = `<script id=\"__ARCANAJS_DATA__\" type=\"application/json\">${scriptContent}</script>`;\n\n const hmrScript = process.env.ARCANA_HMR_PORT\n ? `\n <script>\n (function() {\n const socket = new WebSocket(\"ws://localhost:${process.env.ARCANA_HMR_PORT}\");\n socket.onmessage = function(event) {\n const data = JSON.parse(event.data);\n if (data.type === \"reload\") {\n window.location.reload();\n }\n };\n })();\n </script>`\n : \"\";\n\n const html = htmlData\n .replace(\"<!--HEAD_CONTENT-->\", headHtml)\n .replace(\"<!--APP_CONTENT-->\", appHtml)\n .replace(\"<!--ARCANAJS_DATA_SCRIPT-->\", scriptTag + hmrScript);\n\n res.send(html);\n });\n } catch (error) {\n console.error(\"SSR Error:\", error);\n return res.status(500).send(\"Internal Server Error\");\n }\n return res;\n };\n next();\n };\n};\n","export const defaultHtmlTemplate = `<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <!--HEAD_CONTENT-->\n </head>\n <body>\n <div id=\"root\"><!--APP_CONTENT--></div>\n <!--ARCANAJS_DATA_SCRIPT-->\n </body>\n</html>`;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","import crypto from \"crypto\";\nimport { NextFunction, Request, Response } from \"express\";\n\nconst CSRF_COOKIE_NAME = \"_csrf\";\n\nexport const createCsrfMiddleware = () => {\n return (req: Request, res: Response, next: NextFunction) => {\n // 1. Generate or retrieve token\n let token = req.cookies[CSRF_COOKIE_NAME];\n\n if (!token) {\n token = crypto.randomBytes(32).toString(\"hex\");\n res.cookie(CSRF_COOKIE_NAME, token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === \"production\",\n sameSite: \"strict\",\n });\n }\n\n // 2. Expose token to the response locals (for injection into the view)\n res.locals.csrfToken = token;\n\n // 3. Verify token on state-changing methods\n const method = req.method.toUpperCase();\n if ([\"POST\", \"PUT\", \"DELETE\", \"PATCH\"].includes(method)) {\n const headerToken = req.headers[\"x-csrf-token\"];\n\n if (!headerToken || headerToken !== token) {\n return res.status(403).json({ error: \"Invalid CSRF Token\" });\n }\n }\n\n next();\n };\n};\n","import type { NextFunction, Request, Response } from \"express\";\n\nexport const responseHandler = (\n req: Request,\n res: Response,\n next: NextFunction\n) => {\n res.success = (\n data: string | object | null = {},\n message: string = \"Success\",\n status: number = 200\n ) => {\n return res.status(status).json({\n success: true,\n message,\n data,\n error: null,\n });\n };\n\n res.error = (\n message: string = \"Error\",\n status: number = 500,\n error: string | object | null | undefined | unknown = null,\n data: string | object | null = null\n ) => {\n const errorResponse: string | object | null = error\n ? typeof error === \"object\" && error !== null\n ? error instanceof Error\n ? error.toString()\n : error\n : error.toString()\n : null;\n\n return res.status(status).json({\n success: false,\n message,\n data,\n error: errorResponse,\n });\n };\n\n next();\n};\n","import \"reflect-metadata\";\n\nexport type ClassConstructor<T = any> = new (...args: any[]) => T;\nexport type FactoryFunction<T = any> = (container: Container) => T;\n\nexport class Container {\n private static instance: Container;\n private bindings: Map<string | ClassConstructor, FactoryFunction> = new Map();\n private singletons: Map<string | ClassConstructor, any> = new Map();\n\n constructor() {\n if (!Container.instance) {\n Container.instance = this;\n }\n }\n\n /**\n * Get the global container instance\n */\n public static getInstance(): Container {\n if (!Container.instance) {\n Container.instance = new Container();\n }\n return Container.instance;\n }\n\n /**\n * Bind a class or factory to the container\n */\n public bind<T>(\n key: string | ClassConstructor<T>,\n value: ClassConstructor<T> | FactoryFunction<T>\n ): void {\n if (this.isConstructor(value)) {\n this.bindings.set(key, () => this.build(value));\n } else {\n this.bindings.set(key, value as FactoryFunction<T>);\n }\n }\n\n /**\n * Bind a singleton to the container\n */\n public singleton<T>(\n key: string | ClassConstructor<T>,\n value: ClassConstructor<T> | FactoryFunction<T>\n ): void {\n const factory = this.isConstructor(value)\n ? () => this.build(value)\n : (value as FactoryFunction<T>);\n\n this.bindings.set(key, () => {\n if (!this.singletons.has(key)) {\n this.singletons.set(key, factory(this));\n }\n return this.singletons.get(key);\n });\n }\n\n /**\n * Resolve a dependency from the container\n */\n public make<T>(key: string | ClassConstructor<T>): T {\n if (this.bindings.has(key)) {\n return this.bindings.get(key)!(this);\n }\n\n // If it's a class and not bound, try to build it directly\n if (this.isConstructor(key)) {\n return this.build(key);\n }\n\n throw new Error(`Service not found: ${key.toString()}`);\n }\n\n /**\n * Check if a service is registered in the container\n */\n public has(key: string | ClassConstructor): boolean {\n return this.bindings.has(key);\n }\n\n /**\n * Alias for make() - resolve a dependency from the container\n */\n public resolve<T>(key: string | ClassConstructor<T>): T {\n return this.make(key);\n }\n\n /**\n * Instantiate a class, resolving its dependencies\n */\n private build<T>(target: ClassConstructor<T>): T {\n // Get constructor parameters using reflect-metadata\n const params = Reflect.getMetadata(\"design:paramtypes\", target) || [];\n\n const injections = params.map((param: any) => {\n return this.make(param);\n });\n\n return new target(...injections);\n }\n\n private isConstructor(obj: any): obj is ClassConstructor {\n return !!obj.prototype && !!obj.prototype.constructor.name;\n }\n}\n\nexport const container = Container.getInstance();\n","import compression from \"compression\";\nimport cookieParser from \"cookie-parser\";\nimport express, { Express, RequestHandler } from \"express\";\nimport fs from \"fs\";\nimport helmet from \"helmet\";\nimport path from \"path\";\nimport React from \"react\";\nimport ErrorPage from \"../shared/views/ErrorPage\";\nimport NotFoundPage from \"../shared/views/NotFoundPage\";\nimport { createArcanaJSMiddleware } from \"./ArcanaJSMiddleware\";\nimport { createCsrfMiddleware } from \"./CsrfMiddleware\";\nimport { createDynamicRouter } from \"./DynamicRouter\";\nimport { responseHandler } from \"./ResponseHandlerMiddleware\";\nimport { dynamicRequire } from \"./utils/dynamicRequire\";\n\nimport { ServiceProvider } from \"./support/ServiceProvider\";\n\nexport interface ArcanaJSConfig {\n port?: number | string;\n views?: Record<string, React.FC<any>>;\n viewsDir?: string;\n viewsContext?: any;\n routes?: RequestHandler | RequestHandler[];\n /** API routes can be provided separately from web routes */\n apiRoutes?: RequestHandler | RequestHandler[];\n /** Base path under which API routes will be mounted (default: '/api') */\n apiBase?: string;\n staticDir?: string;\n distDir?: string;\n indexFile?: string;\n layout?: React.FC<any>;\n /** Automatically register SIGINT/SIGTERM handlers to call stop(). Default: true */\n autoHandleSignals?: boolean;\n /** Auth configuration */\n auth?: any;\n /** Mail configuration */\n mail?: any;\n /** Database configuration */\n database?: any;\n /** Service providers to load */\n providers?: (new (app: ArcanaJSServer) => ServiceProvider)[];\n}\n\ndeclare global {\n namespace Express {\n interface Response {\n /**\n * Sends a success response with a standard format.\n *\n * @param data - The data payload to include in the response (default: {}).\n * @param message - A descriptive message for the success (default: \"Success\").\n * @param status - The HTTP status code to return (default: 200).\n * @returns The Express Response object.\n */\n success: (\n data?: string | object | null,\n message?: string,\n status?: number\n ) => Response;\n\n /**\n * Sends an error response with a standard format.\n *\n * @param message - A descriptive message for the error (default: \"Error\").\n * @param status - The HTTP status code to return (default: 500).\n * @param error - Additional error details or object (default: null).\n * @param data - Optional data payload to include in the error response (default: null).\n * @returns The Express Response object.\n */\n error: (\n message?: string,\n status?: number,\n error?: string | object | null | undefined | unknown,\n data?: string | object | null\n ) => Response;\n\n /**\n * Renders a React page using ArcanaJS SSR.\n *\n * @param page - The name of the page component to render.\n * @param data - Initial data to pass to the page component (default: {}).\n * @param params - Route parameters (default: {}).\n * @returns The Express Response object.\n */\n renderPage(\n page: string,\n data?: any,\n params?: Record<string, string>\n ): Response;\n }\n }\n}\n\nimport { Container } from \"./Container\";\n\nclass ArcanaJSServer {\n public app: Express;\n public container: Container;\n private config: ArcanaJSConfig;\n private serverInstance?: import(\"http\").Server;\n private _sigintHandler?: () => void;\n private _sigtermHandler?: () => void;\n private providers: ServiceProvider[] = [];\n\n private initialized = false;\n\n constructor(config: ArcanaJSConfig) {\n this.config = config;\n this.app = express();\n this.container = Container.getInstance();\n this.setupMiddleware();\n }\n\n private async initializeAsync() {\n if (this.initialized) return;\n\n await this.loadConfigurations();\n await this.registerProviders();\n await this.bootProviders();\n\n this.initialized = true;\n }\n\n private async loadConfigurations() {\n // Register configs passed via constructor\n if (this.config.auth) {\n this.container.singleton(\"AuthConfig\", () => this.config.auth);\n }\n\n if (this.config.mail) {\n this.container.singleton(\"MailConfig\", () => this.config.mail);\n }\n\n if (this.config.database) {\n this.container.singleton(\"DatabaseConfig\", () => this.config.database);\n }\n }\n\n private async registerProviders() {\n if (this.config.providers) {\n for (const ProviderClass of this.config.providers) {\n const provider = new ProviderClass(this);\n await provider.register();\n this.providers.push(provider);\n }\n }\n }\n\n private async bootProviders() {\n for (const provider of this.providers) {\n await provider.boot();\n }\n }\n\n private setupMiddleware() {\n const {\n staticDir = \"public\",\n distDir = \"dist/public\",\n indexFile = \"dist/public/index.html\",\n views,\n viewsContext,\n routes,\n layout,\n apiRoutes,\n apiBase = \"/api\",\n } = this.config;\n\n const root = process.cwd();\n\n // 1. Resolve views once and in priority order\n let resolvedViews = views;\n if (!resolvedViews && viewsContext)\n resolvedViews = this.loadViewsFromContext(viewsContext);\n if (!resolvedViews) resolvedViews = this.loadViewsFromAlias();\n if (!resolvedViews) resolvedViews = this.discoverViews();\n if (!resolvedViews || Object.keys(resolvedViews).length === 0) {\n console.warn(\"No views found. Please check your views directory.\");\n resolvedViews = {} as Record<string, React.FC<any>>;\n }\n resolvedViews.NotFoundPage = resolvedViews.NotFoundPage || NotFoundPage;\n resolvedViews.ErrorPage = resolvedViews.ErrorPage || ErrorPage;\n\n // Security headers\n this.app.use(helmet({ contentSecurityPolicy: false }));\n this.app.use(cookieParser());\n this.app.use(express.json());\n this.app.use(express.urlencoded({ extended: true }));\n this.app.use(createCsrfMiddleware());\n this.app.use(responseHandler);\n\n // Static files: resolve and dedupe paths, serve before compression to avoid recompressing static files\n const isProduction = process.env.NODE_ENV === \"production\";\n const staticOptions = { index: false, maxAge: isProduction ? \"1y\" : \"0\" };\n const staticPaths = [\n path.resolve(root, distDir),\n path.resolve(root, staticDir),\n ].filter((p, i, a) => a.indexOf(p) === i);\n for (const p of staticPaths) {\n this.app.use(express.static(p, staticOptions));\n }\n\n // Compression for dynamic responses (after static middleware)\n this.app.use(compression());\n\n // ArcanaJS Middleware\n this.app.use(\n createArcanaJSMiddleware({\n views: resolvedViews,\n indexFile: path.resolve(root, indexFile),\n layout,\n })\n );\n\n // Helper to mount arrays or single route objects\n const mount = (target: any, base?: string) => {\n if (!target) return;\n const items = Array.isArray(target) ? target : [target];\n for (const r of items) {\n if (!r) continue;\n if (typeof r.getRouter === \"function\") {\n this.app.use(base || \"/\", r.getRouter());\n } else {\n this.app.use(base || \"/\", r as RequestHandler);\n }\n }\n };\n\n try {\n mount(apiRoutes, apiBase);\n if (apiRoutes) console.log(`API routes mounted at ${apiBase}`);\n } catch (err) {\n console.error(\"Error mounting apiRoutes:\", err);\n }\n\n try {\n mount(routes);\n } catch (err) {\n console.error(\"Error mounting routes:\", err);\n }\n\n // Dynamic Router\n this.app.use(createDynamicRouter(resolvedViews));\n\n // 404 and error handlers\n this.app.use((req, res) => {\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n res.status(404).json({\n page: \"NotFoundPage\",\n data: { url: req.url },\n params: {},\n csrfToken: res.locals.csrfToken,\n });\n } else {\n res.status(404).renderPage(\"NotFoundPage\", { url: req.url });\n }\n });\n\n this.app.use(\n (\n err: any,\n req: express.Request,\n res: express.Response,\n next: express.NextFunction\n ) => {\n console.error(err);\n const message =\n process.env.NODE_ENV === \"production\"\n ? \"Internal Server Error\"\n : err.message;\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n res.status(500).json({\n page: \"ErrorPage\",\n data: { message },\n params: {},\n csrfToken: res.locals.csrfToken,\n });\n } else {\n res.status(500).renderPage(\"ErrorPage\", { message });\n }\n }\n );\n }\n\n private loadViewsFromContext(context: any): Record<string, React.FC<any>> {\n const views: Record<string, React.FC<any>> = {};\n context.keys().forEach((key: string) => {\n const viewName = key.replace(/^\\.\\/(.*)\\.tsx$/, \"$1\");\n views[viewName] = context(key).default;\n });\n return views;\n }\n\n private loadViewsFromAlias(): Record<string, React.FC<any>> | undefined {\n try {\n // @ts-ignore - This alias is injected by Webpack\n const injectedViews = require(\"arcana-views\");\n if (injectedViews) {\n return this.loadViewsFromContext(injectedViews);\n }\n } catch (e) {\n // Ignore\n }\n return undefined;\n }\n\n private discoverViews(): Record<string, React.FC<any>> {\n const views: Record<string, React.FC<any>> = {};\n const viewsDir = this.config.viewsDir\n ? path.resolve(process.cwd(), this.config.viewsDir)\n : path.resolve(process.cwd(), \"src/resources/views\");\n\n if (!fs.existsSync(viewsDir)) return views;\n\n const traverse = (dir: string) => {\n const files = fs.readdirSync(dir);\n files.forEach((file) => {\n const fullPath = path.join(dir, file);\n const stat = fs.statSync(fullPath);\n\n if (stat.isDirectory()) {\n traverse(fullPath);\n } else if (file.endsWith(\".tsx\") || file.endsWith(\".jsx\")) {\n const relativePath = path.relative(viewsDir, fullPath);\n const viewName = relativePath.replace(/\\.(tsx|jsx)$/, \"\");\n try {\n // Use __non_webpack_require__ if available to avoid Webpack bundling issues\n // or standard require if running in Node directly\n\n // Register ts-node if needed\n if (file.endsWith(\".tsx\") || file.endsWith(\".ts\")) {\n try {\n dynamicRequire(\"ts-node/register\");\n } catch (e) {\n // Ignore\n }\n }\n\n const pageModule = dynamicRequire(fullPath);\n views[viewName] = pageModule.default || pageModule;\n } catch (error) {\n console.error(`Failed to load view ${viewName}:`, error);\n }\n }\n });\n };\n\n traverse(viewsDir);\n return views;\n }\n\n public async start() {\n // Initialize async components first\n await this.initializeAsync();\n\n const PORT = this.config.port || process.env.PORT || 3000;\n\n // Prevent multiple server instances\n if (this.serverInstance) {\n console.warn(\n \"Server is already running. Call stop() before starting again.\"\n );\n return;\n }\n\n this.serverInstance = this.app.listen(PORT, () => {\n console.log(`✓ Server is running on http://localhost:${PORT}`);\n });\n\n // Handle server errors\n this.serverInstance.on(\"error\", (error: any) => {\n if (error.code === \"EADDRINUSE\") {\n console.error(`✗ Port ${PORT} is already in use`);\n process.exit(1);\n } else {\n console.error(\"✗ Server error:\", error);\n }\n });\n\n // Optionally register process signal handlers per-instance to gracefully shutdown\n const autoHandle = this.config.autoHandleSignals !== false;\n if (autoHandle) {\n const shutdown = async (signal: string) => {\n console.log(`\\n⚠ Received ${signal}, shutting down gracefully...`);\n try {\n await this.stop();\n console.log(\"✓ Shutdown complete\");\n process.exit(0);\n } catch (err) {\n console.error(\"✗ Error during shutdown:\", err);\n process.exit(1);\n }\n };\n\n this._sigintHandler = () => shutdown(\"SIGINT\");\n this._sigtermHandler = () => shutdown(\"SIGTERM\");\n\n process.on(\"SIGINT\", this._sigintHandler);\n process.on(\"SIGTERM\", this._sigtermHandler);\n\n console.log(\"✓ Signal handlers registered (Ctrl+C to stop)\");\n }\n }\n\n /**\n * Stop the HTTP server and close DB connection if present.\n */\n public async stop(): Promise<void> {\n // Close HTTP server\n if (this.serverInstance) {\n console.log(\"⏳ Stopping HTTP server...\");\n await new Promise<void>((resolve, reject) => {\n this.serverInstance!.close((err) => {\n if (err) {\n console.error(\"✗ Error closing HTTP server:\", err);\n return reject(err);\n }\n resolve();\n });\n });\n this.serverInstance = undefined;\n console.log(\"✓ HTTP server stopped\");\n } else {\n console.log(\"ℹ HTTP server is not running\");\n }\n\n // Shutdown all providers\n if (this.providers.length > 0) {\n console.log(\"⏳ Shutting down providers...\");\n for (const provider of this.providers) {\n if (provider.shutdown) {\n try {\n await provider.shutdown();\n console.log(`✓ ${provider.constructor.name} shut down`);\n } catch (err) {\n console.error(\n `✗ Error shutting down provider ${provider.constructor.name}:`,\n err\n );\n }\n }\n }\n }\n\n // Remove signal handlers registered by this instance\n try {\n if (this._sigintHandler) {\n process.removeListener(\"SIGINT\", this._sigintHandler);\n this._sigintHandler = undefined;\n }\n if (this._sigtermHandler) {\n process.removeListener(\"SIGTERM\", this._sigtermHandler);\n this._sigtermHandler = undefined;\n }\n } catch (err) {\n // ignore errors while removing listeners\n }\n }\n}\nexport default ArcanaJSServer;\n","import { NextFunction, Request, Response } from \"express\";\n\nexport const createDynamicRouter = (views: Record<string, any>) => {\n return (req: Request, res: Response, next: NextFunction) => {\n // Remove leading slash\n let path = req.path.substring(1);\n\n // Handle root path mapping to \"index\" if not handled elsewhere\n if (path === \"\") {\n path = \"index\";\n }\n\n // 1. Exact match\n if (views[path]) {\n return res.renderPage(path, {});\n }\n\n // 2. Dynamic match\n for (const viewName of Object.keys(views)) {\n if (!viewName.includes(\"[\")) continue;\n\n // Convert view path to regex\n // e.g., \"users/[id]\" -> \"^users/([^/]+)$\"\n // We need to escape special regex characters first, but keep [ and ] for our logic\n // Actually, simpler: split by '/' and match segments\n\n const pageParts = viewName.split(\"/\");\n const pathParts = path.split(\"/\");\n\n if (pageParts.length !== pathParts.length) continue;\n\n let match = true;\n const params: Record<string, string> = {};\n\n for (let i = 0; i < pageParts.length; i++) {\n const pagePart = pageParts[i];\n const pathPart = pathParts[i];\n\n if (pagePart.startsWith(\"[\") && pagePart.endsWith(\"]\")) {\n const paramName = pagePart.slice(1, -1);\n params[paramName] = pathPart;\n } else if (pagePart !== pathPart) {\n match = false;\n break;\n }\n }\n\n if (match) {\n return res.renderPage(viewName, {}, params);\n }\n }\n\n // If not found, pass to the next middleware (usually 404 handler)\n next();\n };\n};\n","import { NextFunction, Request, Response } from \"express\";\n\nimport { container } from \"./Container\";\n\nexport default class ControllerBinder {\n static handle(controller: any, method: string) {\n // Instantiate the controller once (Singleton pattern) for performance\n // This assumes controllers are stateless, which is best practice.\n let instance: any;\n try {\n instance = container.make(controller);\n } catch (e) {\n // Fallback if controller is not a class or fails to instantiate\n console.warn(`Failed to instantiate controller ${controller.name}`, e);\n instance = controller;\n }\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n // Call the method\n if (typeof instance[method] === \"function\") {\n await instance[method](req, res, next);\n } else {\n throw new Error(\n `Method ${method} not found on controller ${controller.name}`\n );\n }\n } catch (error) {\n next(error);\n }\n };\n }\n}\n","import { NextFunction, Request, Response } from \"express\";\n\nimport { container } from \"./Container\";\n\nexport default class MiddlewareBinder {\n static handle(middleware: any, method: string = \"handle\") {\n // Instantiate the middleware once (Singleton pattern) for performance\n let instance: any;\n try {\n instance = container.make(middleware);\n } catch (e) {\n // Fallback if middleware is not a class or fails to instantiate\n instance = middleware;\n }\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n // Call the method\n if (typeof instance[method] === \"function\") {\n await instance[method](req, res, next);\n } else {\n throw new Error(\n `Method ${method} not found on middleware ${middleware.name}`\n );\n }\n } catch (error) {\n next(error);\n }\n };\n }\n}\n","import express, { Router as ExpressRouter, RequestHandler, Router } from \"express\";\nimport ControllerBinder from \"./ControllerBinder\";\nimport MiddlewareBinder from \"./MiddlewareBinder\";\n\n/**\n * Provides Routing syntax for defining routes with prefixes, middlewares, and groups for ArcanaJS Framework\n */\nexport class ArcanaJSRouter {\n private router: ExpressRouter;\n private middlewareStack: RequestHandler[];\n private prefixStack: string[];\n\n constructor() {\n this.router = express.Router();\n this.middlewareStack = [];\n this.prefixStack = [];\n }\n\n /**\n * Add middleware to the current stack\n */\n middleware(...middleware: any[]): ArcanaJSRouter {\n const newRouter = this._clone();\n const resolvedMiddlewares = middleware.map((m) =>\n this._resolveMiddleware(m)\n );\n newRouter.middlewareStack = [\n ...this.middlewareStack,\n ...resolvedMiddlewares,\n ];\n return newRouter;\n }\n\n /**\n * Add prefix to the current stack\n */\n prefix(prefix: string): ArcanaJSRouter {\n const newRouter = this._clone();\n newRouter.prefixStack = [\n ...this.prefixStack,\n prefix.replace(/^\\/|\\/$/g, \"\"),\n ];\n return newRouter;\n }\n\n /**\n * Create a route group\n */\n group(callback: (router: ArcanaJSRouter) => void): ArcanaJSRouter {\n callback(this);\n return this;\n }\n\n /**\n * Define a GET route\n */\n get(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"get\", path, action, middlewares);\n }\n\n /**\n * Define a POST route\n */\n post(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"post\", path, action, middlewares);\n }\n\n /**\n * Define a PUT route\n */\n put(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"put\", path, action, middlewares);\n }\n\n /**\n * Define a DELETE route\n */\n delete(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"delete\", path, action, middlewares);\n }\n\n /**\n * Define a PATCH route\n */\n patch(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"patch\", path, action, middlewares);\n }\n\n /**\n * Define an OPTIONS route\n */\n options(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"options\", path, action, middlewares);\n }\n\n /**\n * Define a resource route\n * Registers index, create, store, show, edit, update, destroy routes\n */\n resource(path: string, controller: any): ArcanaJSRouter {\n this.get(path, controller, \"index\");\n this.get(`${path}/create`, controller, \"create\");\n this.post(path, controller, \"store\");\n this.get(`${path}/:id`, controller, \"show\");\n this.get(`${path}/:id/edit`, controller, \"edit\");\n this.put(`${path}/:id`, controller, \"update\");\n this.patch(`${path}/:id`, controller, \"update\");\n this.delete(`${path}/:id`, controller, \"destroy\");\n return this;\n }\n\n /**\n * Get the underlying Express router\n */\n getRouter(): ExpressRouter {\n return this.router;\n }\n\n /**\n * Clone the current router instance\n */\n private _clone(): ArcanaJSRouter {\n const newRouter = new ArcanaJSRouter();\n newRouter.router = this.router;\n newRouter.middlewareStack = [...this.middlewareStack];\n newRouter.prefixStack = [...this.prefixStack];\n return newRouter;\n }\n\n /**\n * Add a route to the router\n */\n private _addRoute(\n method: \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\" | \"options\",\n path: string,\n action: any,\n routeMiddlewares: any[] = []\n ): ArcanaJSRouter {\n const fullPath = this._buildPath(path);\n const handler = this._buildHandler(action);\n const flatMiddlewares = routeMiddlewares.flat(Infinity);\n const resolvedMiddlewares = flatMiddlewares.map((m) =>\n this._resolveMiddleware(m)\n );\n const middlewares = [\n ...this.middlewareStack,\n ...resolvedMiddlewares,\n handler,\n ];\n\n this.router[method](fullPath, ...middlewares);\n return this;\n }\n\n /**\n * Resolve middleware to RequestHandler\n */\n private _resolveMiddleware(middleware: any): RequestHandler {\n if (typeof middleware === \"function\" && !middleware.prototype?.handle) {\n // It's a standard express middleware function\n return middleware;\n }\n\n if (Array.isArray(middleware) && middleware.length === 2) {\n // It's [MiddlewareClass, 'method']\n const [middlewareClass, method] = middleware;\n return MiddlewareBinder.handle(middlewareClass, method);\n }\n\n if (\n typeof middleware === \"function\" ||\n (typeof middleware === \"object\" && middleware !== null)\n ) {\n // It's a Middleware Class (constructor) or instance\n // Default to 'handle' method\n return MiddlewareBinder.handle(middleware, \"handle\");\n }\n\n throw new Error(\n \"Invalid middleware. Must be a function, [Class, 'method'], or Class.\"\n );\n }\n\n /**\n * Build the full path with prefixes\n */\n private _buildPath(path: string): string {\n const cleanPath = path.replace(/^\\//, \"\");\n const prefixes = this.prefixStack.filter((p) => p !== \"\");\n\n if (prefixes.length === 0) {\n return `/${cleanPath}`;\n }\n\n return `/${prefixes.join(\"/\")}/${cleanPath}`.replace(/\\/+/g, \"/\");\n }\n\n /**\n * Build the route handler\n */\n private _buildHandler(action: any): RequestHandler {\n if (typeof action === \"function\") {\n return action;\n }\n\n if (Array.isArray(action) && action.length === 2) {\n const [controller, method] = action;\n return ControllerBinder.handle(controller, method);\n }\n\n throw new Error(\n 'Action must be a function or array [Controller, \"method\"]'\n );\n }\n}\n\n/**\n * Static Route class for ArcanaJS Routing\n */\nexport class Route {\n private static _router = new ArcanaJSRouter();\n\n static middleware(...middleware: any[]): typeof Route {\n this._router = this._router.middleware(...middleware);\n return this;\n }\n\n static prefix(prefix: string): typeof Route {\n this._router = this._router.prefix(prefix);\n return this;\n }\n\n static group(callback: (router: ArcanaJSRouter) => void): typeof Route {\n this._router.group(callback);\n return this;\n }\n\n static get(path: string, ...args: any[]): typeof Route {\n this._router.get(path, ...args);\n return this;\n }\n\n static post(path: string, ...args: any[]): typeof Route {\n this._router.post(path, ...args);\n return this;\n }\n\n static put(path: string, ...args: any[]): typeof Route {\n this._router.put(path, ...args);\n return this;\n }\n\n static delete(path: string, ...args: any[]): typeof Route {\n this._router.delete(path, ...args);\n return this;\n }\n\n static patch(path: string, ...args: any[]): typeof Route {\n this._router.patch(path, ...args);\n return this;\n }\n\n static options(path: string, ...args: any[]): typeof Route {\n this._router.options(path, ...args);\n return this;\n }\n\n static resource(path: string, controller: any): typeof Route {\n this._router.resource(path, controller);\n return this;\n }\n\n static getRouter(): ExpressRouter {\n const router = this._router.getRouter();\n this._router = new ArcanaJSRouter(); // Reset for next use\n return router;\n }\n}\n\nexport default Route;\n","import ArcanaJSServer from \"../ArcanaJSServer\";\n\nexport abstract class ServiceProvider {\n protected app: ArcanaJSServer;\n\n constructor(app: ArcanaJSServer) {\n this.app = app;\n }\n\n /**\n * Register any application services.\n */\n register(): void {\n //\n }\n\n /**\n * Bootstrap any application services.\n */\n boot(): void {\n //\n }\n\n /**\n * Shutdown any application services.\n */\n async shutdown(): Promise<void> {\n //\n }\n}\n","import { Express } from \"express\";\nimport ArcanaJSServer, { ArcanaJSConfig } from \"./server/ArcanaJSServer\";\n\n// ============================================================================\n// Server Core Exports\n// ============================================================================\n\nexport { default as ArcanaJSServer } from \"./server/ArcanaJSServer\";\nexport { Container } from \"./server/Container\";\n\nexport { Express, NextFunction, Request, Response } from \"express\";\n\n// ============================================================================\n// Routing Exports\n// ============================================================================\n\nexport { default as Route } from \"./server/Router\";\n\n// ============================================================================\n// Middleware Exports\n// ============================================================================\n\nexport type { Middleware } from \"./server/http/Middleware\";\n\n// ============================================================================\n// Provider Exports\n// ============================================================================\n\nexport { ServiceProvider } from \"./server/support/ServiceProvider\";\n\n// ============================================================================\n// Server Factory Function\n// ============================================================================\n\n/**\n * Create an ArcanaJS server with the given Express app\n *\n * @param app - Express application instance\n * @param config - Optional ArcanaJS configuration\n * @returns ArcanaJSServer instance\n *\n * @example\n * ```typescript\n * import express from 'express';\n * import { createArcanaServer } from 'arcanajs/server';\n *\n * const app = express();\n * const server = createArcanaServer(app, {\n * port: 3000,\n * viewsDir: 'src/resources/views',\n * });\n *\n * server.start();\n * ```\n */\nexport function createArcanaServer(\n app: Express,\n config?: Partial<ArcanaJSConfig>\n): ArcanaJSServer {\n const server = new ArcanaJSServer({ ...config });\n return server;\n}\n"],"names":["dynamicRequire","id","_global$process","_global","global","nativeRequire","e","eval","module","exports","require","Reflect","root","globalThis","self","this","Function","_","functionThis","indirectEvalThis","exporter","makeExporter","target","previous","key","value","Object","defineProperty","configurable","writable","hasOwn","prototype","hasOwnProperty","supportsSymbol","Symbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","create","supportsProto","__proto__","Array","downLevel","HashMap","MakeDictionary","has","map","call","get","undefined","functionPrototype","getPrototypeOf","_Map","Map","entries","cacheSentinel","arraySentinel","MapIterator","keys","values","selector","_index","_keys","_values","_selector","next","index","length","result","done","throw","error","return","_cacheKey","_cacheIndex","enumerable","_find","set","delete","size","i","SameValueZero","clear","getKey","getValue","getEntry","insert","push","CreateMapPolyfill","_Set","Set","_map","add","_WeakMap","WeakMap","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","data","Uint8Array","array","crypto","getRandomValues","msCrypto","GenRandomBytes","offset","byte","toString","toLowerCase","CreateWeakMapPolyfill","registrySymbol","for","metadataRegistry","IsUndefined","IsObject","isExtensible","fallback","first","second","rest","defineMetadata","reflect","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","metadataOwner","isProviderFor","O","P","metadataPropertySet","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","OrdinaryDeleteMetadata","CreateFallbackProvider","targetProviderMap","registry","registerProvider","getProvider","setProvider","provider","Error","getProviderNoCache","GetIterator","IteratorStep","IteratorValue","IteratorClose","providerMap","hasProvider","TypeError","existingProvider","CreateMetadataRegistry","GetOrCreateMetadataRegistry","metadataProvider","metadata","targetMetadata","MetadataKey","MetadataValue","GetOrCreateMetadataMap","metadataMap","ToBoolean","k","nextValue","Create","createdTargetMetadata","CreateMetadataProvider","OrdinaryHasMetadata","parent","OrdinaryGetPrototypeOf","IsNull","GetMetadataProvider","OrdinaryGetMetadata","OrdinaryMetadataKeys","ownKeys","parentKeys","_i","ownKeys_1","_a","parentKeys_1","Type","x","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","toString_1","IsCallable","valueOf","toString_2","OrdinaryToPrimitive","argument","ToPropertyKey","ToString","IsArray","isArray","IsConstructor","y","V","func","obj","method","iterResult","f","proto","prototypeProto","constructor","registeredProvider","__","decorators","propertyKey","attributes","decorated","decorator","DecorateConstructor","descriptor","DecorateProperty","metadataKey","metadataValue","IsPropertyKey","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","prop","r","toStringTag","Body","children","React","createSingletonContext","defaultValue","globalAny","symbolKey","createContext","HeadContext","Head","headManager","useContext","window","forEach","child","useEffect","managedElements","reactElement","type","document","title","props","name","property","element","querySelector","setAttribute","content","newMeta","createElement","head","appendChild","rel","href","newLink","el","remove","RouterContext","RouterProvider","Provider","Link","prefetch","navigateTo","navigateToAsync","useRouter","context","isExternal","test","_extends","onClick","async","preventDefault","open","onMouseEnter","handleMouseEnter","fetch","catch","PageContext","Page","ErrorPage","message","statusCode","stack","isDevelopment","process","env","NODE_ENV","className","style","animationDelay","fill","stroke","viewBox","strokeLinecap","strokeLinejoin","strokeWidth","location","reload","NotFoundPage","url","Fragment","history","back","ArcanaJSApp","initialPage","initialData","initialParams","initialUrl","csrfToken","views","layout","Layout","onNavigate","cacheLimit","page","setPage","useState","setData","params","setParams","setUrl","pathname","isNavigating","setIsNavigating","navigationCache","currentAbort","state","replaceState","handlePopState","event","path","addEventListener","_currentAbort$current","removeEventListener","current","abort","_currentAbort$current2","newUrl","cached","pushState","scrollTo","top","behavior","controller","AbortController","response","headers","cache","signal","ok","status","statusText","includes","json","payload","setCache","firstKey","err","console","renderPage","Component","args","currentPage","currentUrl","DEFAULT_HTML_TEMPLATE","CSRF_COOKIE_NAME","responseHandler","req","res","success","errorResponse","Container","bindings","singletons","instance","getInstance","bind","isConstructor","build","singleton","make","resolve","getMetadata","param","container","providers","initialized","config","app","express","setupMiddleware","initializeAsync","loadConfigurations","registerProviders","bootProviders","auth","mail","database","ProviderClass","register","boot","staticDir","distDir","indexFile","viewsContext","routes","apiRoutes","apiBase","cwd","resolvedViews","loadViewsFromContext","loadViewsFromAlias","discoverViews","warn","use","helmet","contentSecurityPolicy","cookieParser","extended","token","cookies","cookie","httpOnly","secure","sameSite","locals","toUpperCase","headerToken","staticOptions","maxAge","staticPaths","filter","p","indexOf","compression","options","cachedIndexHtml","query","format","headTags","tags","nodes","appHtml","renderToString","headHtml","callback","fs","htmlData","getIndexHtml","send","scriptTag","JSON","stringify","replace","hmrScript","ARCANA_HMR_PORT","html","createArcanaJSMiddleware","mount","base","items","getRouter","log","substring","viewName","pageParts","split","pathParts","match","pagePart","pathPart","startsWith","endsWith","slice","createDynamicRouter","default","injectedViews","viewsDir","traverse","dir","file","fullPath","isDirectory","pageModule","start","PORT","port","serverInstance","listen","on","code","exit","autoHandleSignals","shutdown","stop","_sigintHandler","_sigtermHandler","Promise","reject","close","removeListener","ControllerBinder","handle","MiddlewareBinder","middleware","ArcanaJSRouter","router","middlewareStack","prefixStack","newRouter","_clone","resolvedMiddlewares","m","_resolveMiddleware","prefix","group","action","pop","middlewares","_addRoute","post","put","patch","resource","routeMiddlewares","_buildPath","handler","_buildHandler","flat","Infinity","_middleware$prototype","middlewareClass","cleanPath","prefixes","join","Route","_router","ServiceProvider","createArcanaServer","ArcanaJSServer"],"ignoreList":[],"sourceRoot":""}
1
+ {"version":3,"file":"arcanajs.js","mappings":"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","sources":["webpack://arcanajs/./src/lib/server/utils/dynamicRequire.ts","webpack://arcanajs/external commonjs \"arcana-views\"","webpack://arcanajs/./node_modules/reflect-metadata/Reflect.js","webpack://arcanajs/webpack/bootstrap","webpack://arcanajs/webpack/runtime/compat get default export","webpack://arcanajs/webpack/runtime/define property getters","webpack://arcanajs/webpack/runtime/hasOwnProperty shorthand","webpack://arcanajs/webpack/runtime/make namespace object","webpack://arcanajs/external commonjs \"compression\"","webpack://arcanajs/external commonjs \"cookie-parser\"","webpack://arcanajs/external commonjs \"express\"","webpack://arcanajs/external node-commonjs \"fs\"","webpack://arcanajs/external commonjs \"helmet\"","webpack://arcanajs/external node-commonjs \"path\"","webpack://arcanajs/external commonjs \"react\"","webpack://arcanajs/./src/lib/shared/components/Body.tsx","webpack://arcanajs/./src/lib/shared/utils/createSingletonContext.ts","webpack://arcanajs/./src/lib/shared/context/HeadContext.tsx","webpack://arcanajs/./src/lib/shared/components/Head.tsx","webpack://arcanajs/./src/lib/shared/hooks/useHead.ts","webpack://arcanajs/./src/lib/shared/context/RouterContext.tsx","webpack://arcanajs/./src/lib/shared/components/Link.tsx","webpack://arcanajs/./src/lib/shared/hooks/useRouter.ts","webpack://arcanajs/./src/lib/shared/context/PageContext.tsx","webpack://arcanajs/./src/lib/shared/components/Page.tsx","webpack://arcanajs/./src/lib/shared/views/ErrorPage.tsx","webpack://arcanajs/./src/lib/shared/views/NotFoundPage.tsx","webpack://arcanajs/external commonjs \"react-dom/server\"","webpack://arcanajs/./src/lib/shared/core/ArcanaJSApp.tsx","webpack://arcanajs/./src/lib/server/ArcanaJSMiddleware.ts","webpack://arcanajs/./src/lib/server/DefaultTemplate.ts","webpack://arcanajs/external node-commonjs \"crypto\"","webpack://arcanajs/./src/lib/server/CsrfMiddleware.ts","webpack://arcanajs/./src/lib/server/ResponseHandlerMiddleware.ts","webpack://arcanajs/./src/lib/server/Container.ts","webpack://arcanajs/./src/lib/server/ArcanaJSServer.ts","webpack://arcanajs/./src/lib/server/DynamicRouter.ts","webpack://arcanajs/./src/lib/server/ControllerBinder.ts","webpack://arcanajs/./src/lib/server/MiddlewareBinder.ts","webpack://arcanajs/./src/lib/server/Router.ts","webpack://arcanajs/./src/lib/server/support/ServiceProvider.ts","webpack://arcanajs/./src/lib/index.server.ts"],"sourcesContent":["declare const __non_webpack_require__: NodeJS.Require;\n\n/**\n * Helper to dynamically require modules at runtime, bypassing Webpack bundling.\n * This is necessary for loading user configuration files, migrations, and views\n * that are not part of the framework bundle but exist in the user's project.\n */\nexport const dynamicRequire = (id: string) => {\n // Use a string lookup to access the native require function via process.mainModule\n // This prevents Webpack from seeing \"require\" and warning about critical dependencies.\n // It also ensures we get the native Node require, not Webpack's internal require.\n try {\n const _global = global as any;\n const nativeRequire = _global[\"process\"]?.[\"mainModule\"]?.[\"require\"];\n if (nativeRequire) {\n return nativeRequire(id);\n }\n } catch (e) {\n // Ignore errors during lookup\n }\n\n // Fallback to eval(\"require\") if mainModule lookup fails.\n // This might return Webpack's require in some contexts, but it's a last resort.\n return eval(\"require\")(id);\n};\n","module.exports = require(\"arcana-views\");","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"compression\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"cookie-parser\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"helmet\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","import React from \"react\";\n\ninterface BodyProps {\n children: React.ReactNode;\n}\n\nconst Body: React.FC<BodyProps> = ({ children }) => {\n return <>{children}</>;\n};\nexport default Body;\n","import React, { createContext } from \"react\";\n\n/**\n * Creates a React Context that persists across multiple module loads (Webpack bundles vs Node require).\n * This is essential for SSR applications where the server bundle and dynamically loaded views\n * might reference different instances of the \"same\" context module.\n *\n * @param key A unique string key to identify this context globally\n * @param defaultValue The default value for the context\n * @returns A React Context instance (singleton)\n */\nexport function createSingletonContext<T>(\n key: string,\n defaultValue: T\n): React.Context<T> {\n const globalAny = global as any;\n const symbolKey = Symbol.for(`ARCANAJS_CONTEXT_${key}`);\n\n if (!globalAny[symbolKey]) {\n globalAny[symbolKey] = createContext<T>(defaultValue);\n }\n\n return globalAny[symbolKey];\n}\n","import React from \"react\";\nimport { createSingletonContext } from \"../utils/createSingletonContext\";\n\nexport interface HeadManager {\n tags: React.ReactNode[];\n push: (tags: React.ReactNode) => void;\n}\n\nexport const HeadContext = createSingletonContext<HeadManager | null>(\n \"HeadContext\",\n null\n);\n","import React, { useEffect } from \"react\";\nimport { useHead } from \"../hooks/useHead\";\n\nconst Head: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const headManager = useHead();\n\n // Server-side: Push tags to context\n if (typeof window === \"undefined\" && headManager) {\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n headManager.push(\n React.cloneElement(child as React.ReactElement<any>, {\n \"data-arcanajs-head\": \"true\",\n })\n );\n }\n });\n }\n\n // Client-side: Update DOM\n useEffect(() => {\n const managedElements: HTMLElement[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n const reactElement = child as React.ReactElement<any>;\n if (reactElement.type === \"title\") {\n document.title = reactElement.props.children as string;\n } else if (reactElement.type === \"meta\") {\n const props = reactElement.props;\n // Try to find existing meta tag\n let selector = \"meta\";\n if (props.name) selector += `[name=\"${props.name}\"]`;\n if (props.property) selector += `[property=\"${props.property}\"]`;\n\n // Only select if we have a specific identifier\n if (props.name || props.property) {\n let element =\n document.querySelector(\n selector + '[data-arcanajs-head=\"true\"]'\n ) || document.querySelector(selector);\n\n if (element) {\n // Update existing\n element.setAttribute(\"content\", props.content);\n element.setAttribute(\"data-arcanajs-head\", \"true\");\n managedElements.push(element as HTMLElement);\n } else {\n // Create new\n const newMeta = document.createElement(\"meta\");\n Object.keys(props).forEach((key) => {\n newMeta.setAttribute(key, props[key]);\n });\n newMeta.setAttribute(\"data-arcanajs-head\", \"true\");\n document.head.appendChild(newMeta);\n managedElements.push(newMeta);\n }\n }\n } else if (reactElement.type === \"link\") {\n const props = reactElement.props;\n let selector = \"link\";\n if (props.rel) selector += `[rel=\"${props.rel}\"]`;\n if (props.href) selector += `[href=\"${props.href}\"]`;\n\n let element =\n document.querySelector(selector + '[data-arcanajs-head=\"true\"]') ||\n document.querySelector(selector);\n\n if (element) {\n element.setAttribute(\"data-arcanajs-head\", \"true\");\n managedElements.push(element as HTMLElement);\n } else {\n const newLink = document.createElement(\"link\");\n Object.keys(props).forEach((key) => {\n newLink.setAttribute(key, props[key]);\n });\n newLink.setAttribute(\"data-arcanajs-head\", \"true\");\n document.head.appendChild(newLink);\n managedElements.push(newLink);\n }\n }\n }\n });\n\n return () => {\n // Cleanup managed elements\n managedElements.forEach((el) => {\n // We remove the element to ensure clean state for the next page\n // Note: This might cause a momentary flicker if the next page re-adds it immediately\n el.remove();\n });\n };\n }, [children]);\n\n return null;\n};\nexport default Head;\n","import { useContext } from \"react\";\nimport { HeadContext } from \"../context/HeadContext\";\n\nexport const useHead = () => useContext(HeadContext);\n","import React from \"react\";\nimport { createSingletonContext } from \"../utils/createSingletonContext\";\n\nexport interface RouterContextType {\n navigateTo: (url: string) => void;\n // optional async variant for consumers that want a promise\n navigateToAsync?: (url: string) => Promise<void>;\n currentPage: string;\n currentUrl: string;\n params: Record<string, string>;\n csrfToken?: string;\n onNavigate?: (url: string) => void;\n isNavigating: boolean;\n}\n\nexport const RouterContext = createSingletonContext<RouterContextType | null>(\n \"RouterContext\",\n null\n);\n\nexport const RouterProvider: React.FC<{\n value: RouterContextType;\n children: React.ReactNode;\n}> = ({ value, children }) => {\n return (\n <RouterContext.Provider value={value}>{children}</RouterContext.Provider>\n );\n};\n","import React from \"react\";\nimport useRouter from \"../hooks/useRouter\";\n\ninterface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n prefetch?: boolean;\n}\n\nconst Link: React.FC<LinkProps> = ({\n href,\n children,\n prefetch = false,\n ...props\n}) => {\n const { navigateTo, navigateToAsync } = useRouter();\n\n const isExternal = /^https?:\\/\\//.test(href);\n\n const handleClick = async (e: React.MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault();\n if (isExternal) {\n // Open external links in a new tab\n window.open(href, \"_blank\", \"noopener,noreferrer\");\n } else if (navigateToAsync) {\n await navigateToAsync(href);\n } else {\n navigateTo(href);\n }\n };\n\n const handleMouseEnter = () => {\n if (prefetch && !isExternal) {\n // Prefetch using HEAD request to warm cache\n fetch(href, { method: \"HEAD\" }).catch(() => {});\n }\n };\n\n return (\n <a\n href={href}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n {...props}\n >\n {children}\n </a>\n );\n};\nexport default Link;\n","import { useContext } from \"react\";\nimport { RouterContext } from \"../context/RouterContext\";\n\nconst useRouter = () => {\n const context = useContext(RouterContext);\n if (!context) {\n throw new Error(\"useRouter must be used within an ArcanaJSApp\");\n }\n return context;\n};\nexport default useRouter;\n","import { createSingletonContext } from \"../utils/createSingletonContext\";\n\n// PageContext holds the page data (may be null before hydration).\nexport const PageContext = createSingletonContext<any | null>(\n \"PageContext\",\n null\n);\n","import React from \"react\";\nimport { PageContext } from \"../context/PageContext\";\nimport Head from \"./Head\";\n\nconst Page = <T,>({\n data,\n title,\n children,\n}: {\n data?: T;\n title?: string;\n children: React.ReactNode;\n}) => {\n return (\n <PageContext.Provider value={data as unknown}>\n {title && (\n <Head>\n <title>{title}</title>\n </Head>\n )}\n {children}\n </PageContext.Provider>\n );\n};\nexport default Page;\n","import Body from \"../components/Body\";\nimport Head from \"../components/Head\";\nimport Link from \"../components/Link\";\nimport Page from \"../components/Page\";\ninterface ErrorPageProps {\n message?: string;\n statusCode?: number;\n stack?: string;\n}\n\nexport default function ErrorPage({\n message = \"Something went wrong\",\n statusCode = 500,\n stack,\n}: ErrorPageProps) {\n const isDevelopment = process.env.NODE_ENV === \"development\";\n\n return (\n <Page>\n <Head>\n <title>{statusCode} - Server Error</title>\n <meta name=\"description\" content=\"An error occurred on the server\" />\n </Head>\n <Body>\n <div className=\"relative min-h-screen overflow-hidden bg-black text-white flex flex-col justify-center items-center px-4 font-sans\">\n {/* Animated Background */}\n <div className=\"fixed inset-0 z-0 overflow-hidden pointer-events-none\">\n <div className=\"absolute inset-0 grid-pattern opacity-30\"></div>\n <div className=\"absolute top-1/4 right-1/4 w-96 h-96 bg-red-600 rounded-full opacity-20 blur-3xl animate-glow\"></div>\n <div\n className=\"absolute bottom-1/4 left-1/4 w-96 h-96 bg-orange-600 rounded-full opacity-10 blur-3xl animate-glow\"\n style={{ animationDelay: \"2s\" }}\n ></div>\n <div className=\"absolute inset-0 hero-gradient\"></div>\n </div>\n\n <div className=\"relative z-10 max-w-2xl w-full text-center animate-scale-in\">\n <div className=\"glass-card rounded-3xl p-12 border border-white/10 shadow-2xl\">\n <div className=\"mb-8\">\n <div className=\"text-6xl mb-6 animate-float\">\n <span className=\"text-red-500 drop-shadow-lg filter\">⚠️</span>\n </div>\n <h1 className=\"text-8xl font-bold text-transparent bg-clip-text bg-gradient-to-br from-red-500 to-orange-500 mb-4\">\n {statusCode}\n </h1>\n <h2 className=\"text-3xl font-bold text-white mb-4\">\n Server Error\n </h2>\n <p className=\"text-gray-400 text-lg leading-relaxed\">\n {message}\n </p>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-4 justify-center mb-8\">\n <Link\n href=\"/\"\n className=\"btn-primary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto bg-gradient-to-r from-red-600 to-orange-600 hover:from-red-500 hover:to-orange-500 border-none shadow-red-900/20\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n />\n </svg>\n Go Home\n </Link>\n\n <button\n onClick={() => window.location.reload()}\n className=\"btn-secondary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n Try Again\n </button>\n </div>\n\n {isDevelopment && stack && (\n <div className=\"mt-8 text-left animate-slide-up\">\n <details className=\"bg-black/40 border border-white/10 rounded-xl overflow-hidden group\">\n <summary className=\"cursor-pointer font-medium text-gray-300 p-4 hover:bg-white/5 transition-colors flex items-center justify-between select-none\">\n <span>Stack Trace (Development Only)</span>\n <svg\n className=\"w-5 h-5 text-gray-500 group-open:rotate-180 transition-transform\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </summary>\n <pre className=\"text-xs text-red-300/80 p-4 overflow-x-auto whitespace-pre-wrap font-mono border-t border-white/5 bg-black/20\">\n {stack}\n </pre>\n </details>\n </div>\n )}\n </div>\n\n <div className=\"mt-8 text-gray-500 text-sm\">\n If this problem persists, please{\" \"}\n <Link\n href=\"/contact\"\n className=\"text-red-400 hover:text-red-300 underline transition-colors\"\n >\n contact support\n </Link>\n .\n </div>\n </div>\n </div>\n </Body>\n </Page>\n );\n}\n","import Body from \"../components/Body\";\nimport Head from \"../components/Head\";\nimport Link from \"../components/Link\";\nimport Page from \"../components/Page\";\ninterface NotFoundPageProps {\n url?: string;\n}\n\nexport default function NotFoundPage({ url }: NotFoundPageProps) {\n return (\n <Page>\n <Head>\n <title>404 - Page Not Found</title>\n <meta\n name=\"description\"\n content=\"The page you're looking for doesn't exist\"\n />\n </Head>\n <Body>\n <div className=\"relative min-h-screen overflow-hidden bg-black text-white flex flex-col justify-center items-center px-4 font-sans\">\n {/* Animated Background */}\n <div className=\"fixed inset-0 z-0 overflow-hidden pointer-events-none\">\n <div className=\"absolute inset-0 grid-pattern opacity-30\"></div>\n <div className=\"absolute top-1/4 left-1/4 w-96 h-96 bg-orange-500 rounded-full opacity-20 blur-3xl animate-glow\"></div>\n <div\n className=\"absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500 rounded-full opacity-10 blur-3xl animate-glow\"\n style={{ animationDelay: \"2s\" }}\n ></div>\n <div className=\"absolute inset-0 hero-gradient\"></div>\n </div>\n\n <div className=\"relative z-10 max-w-lg w-full text-center animate-scale-in\">\n <div className=\"glass-card rounded-3xl p-12 border border-white/10 shadow-2xl\">\n <div className=\"mb-8\">\n <h1 className=\"text-9xl font-bold text-transparent bg-clip-text bg-gradient-to-br from-white to-gray-500 mb-4 animate-float\">\n 404\n </h1>\n <h2 className=\"text-3xl font-bold text-white mb-4\">\n Page Not Found\n </h2>\n <p className=\"text-gray-400 text-lg leading-relaxed\">\n {url ? (\n <>\n The page <span className=\"text-orange-400\">\"{url}\"</span>{\" \"}\n you're looking for doesn't exist.\n </>\n ) : (\n \"The page you're looking for doesn't exist.\"\n )}\n </p>\n </div>\n\n <div className=\"flex flex-col sm:flex-row gap-4 justify-center\">\n <Link\n href=\"/\"\n className=\"btn-primary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6\"\n />\n </svg>\n Go Home\n </Link>\n\n <button\n onClick={() => window.history.back()}\n className=\"btn-secondary px-8 py-3.5 text-white font-semibold rounded-xl inline-flex items-center justify-center gap-2 w-full sm:w-auto\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n Go Back\n </button>\n </div>\n </div>\n <div className=\"mt-8 text-gray-500 text-sm\">\n If you believe this is an error, please{\" \"}\n <Link\n href=\"/contact\"\n className=\"text-orange-400 hover:text-orange-300 underline transition-colors\"\n >\n contact support\n </Link>\n .\n </div>\n </div>\n </div>\n </Body>\n </Page>\n );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom/server\");","import React, { useEffect, useState } from \"react\";\nimport Page from \"../components/Page\";\nimport { RouterProvider } from \"../context/RouterContext\";\n\nexport interface ArcanaJSAppProps<\n TData = any,\n TParams extends Record<string, string> = Record<string, string>\n> {\n initialPage: string;\n initialData: TData;\n initialParams?: TParams;\n initialUrl?: string;\n csrfToken?: string;\n views: Record<\n string,\n React.ComponentType<{\n data: TData;\n navigateTo: (url: string) => Promise<void>;\n params: TParams;\n }>\n >;\n layout?: React.FC<{ children: React.ReactNode }>;\n onNavigate?: (url: string) => void;\n /** Maximum number of entries to keep in the navigation cache */\n cacheLimit?: number;\n}\n\nexport const ArcanaJSApp = <\n TData = any,\n TParams extends Record<string, string> = Record<string, string>\n>(\n props: ArcanaJSAppProps<TData, TParams>\n) => {\n const {\n initialPage,\n initialData,\n initialParams = {} as TParams,\n initialUrl,\n csrfToken,\n views,\n layout: Layout,\n onNavigate,\n cacheLimit = 50,\n } = props;\n\n const [page, setPage] = useState<string>(initialPage);\n const [data, setData] = useState<TData>(initialData);\n const [params, setParams] = useState<TParams>(initialParams);\n const [url, setUrl] = useState<string>(\n initialUrl ||\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\")\n );\n const [isNavigating, setIsNavigating] = useState(false);\n\n // Navigation cache to store previously visited pages (LRU via Map ordering)\n const navigationCache = React.useRef(\n new Map<string, { page: string; data: TData; params: TParams }>()\n );\n\n // Abort controller for in-flight navigation fetch\n const currentAbort = React.useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (typeof window !== \"undefined\" && !window.history.state) {\n window.history.replaceState(\n { page: initialPage, data: initialData, params: initialParams },\n \"\",\n window.location.href\n );\n }\n\n const handlePopState = (event: PopStateEvent) => {\n if (event.state) {\n setPage(event.state.page);\n setData(event.state.data);\n setParams(event.state.params || ({} as TParams));\n setUrl(window.location.pathname);\n } else {\n // Try to fetch the page state instead of hard reload\n const path = window.location.pathname;\n void navigateTo(path).catch(() => {\n window.location.reload();\n });\n }\n };\n\n window.addEventListener(\"popstate\", handlePopState);\n return () => {\n window.removeEventListener(\"popstate\", handlePopState);\n currentAbort.current?.abort();\n };\n }, []);\n\n const setCache = (\n key: string,\n value: { page: string; data: TData; params: TParams }\n ) => {\n const map = navigationCache.current;\n if (map.has(key)) map.delete(key);\n map.set(key, value);\n if (map.size > cacheLimit) {\n const firstKey = map.keys().next().value;\n if (firstKey !== undefined) map.delete(firstKey);\n }\n };\n\n const navigateTo = async (newUrl: string): Promise<void> => {\n // Check cache first for instant navigation\n const map = navigationCache.current;\n if (map.has(newUrl)) {\n const cached = map.get(newUrl)!;\n setPage(cached.page);\n setData(cached.data);\n setParams(cached.params || ({} as TParams));\n setUrl(newUrl);\n window.history.pushState(cached, \"\", newUrl);\n\n if (typeof window !== \"undefined\") {\n try {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } catch {\n // ignore in non-browser env or when smooth not supported\n }\n }\n\n if (onNavigate) onNavigate(newUrl);\n return;\n }\n\n setIsNavigating(true);\n\n // Abort previous request\n currentAbort.current?.abort();\n const controller = new AbortController();\n currentAbort.current = controller;\n\n try {\n const response = await fetch(newUrl, {\n headers: { \"X-ArcanaJS-Request\": \"true\" },\n cache: \"no-store\",\n signal: controller.signal,\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n setPage(\"NotFoundPage\");\n setUrl(newUrl);\n window.history.pushState(\n { page: \"NotFoundPage\", data: {} },\n \"\",\n newUrl\n );\n return;\n }\n throw new Error(\n `Navigation failed: ${response.status} ${response.statusText}`\n );\n }\n\n const contentType = response.headers.get(\"content-type\") || \"\";\n if (!contentType.includes(\"application/json\")) {\n window.location.href = newUrl;\n return;\n }\n\n const json = await response.json();\n\n const payload = {\n page: json.page as string,\n data: json.data as TData,\n params: (json.params || {}) as TParams,\n };\n setCache(newUrl, payload);\n\n window.history.pushState(\n { page: payload.page, data: payload.data, params: payload.params },\n \"\",\n newUrl\n );\n\n setPage(payload.page);\n setData(payload.data);\n setParams(payload.params || ({} as TParams));\n setUrl(newUrl);\n\n if (typeof window !== \"undefined\") {\n try {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n } catch {\n // ignore\n }\n }\n\n if (onNavigate) onNavigate(newUrl);\n } catch (err: any) {\n if (err?.name === \"AbortError\") return;\n console.error(\"Navigation failed\", err);\n throw err;\n } finally {\n // Clear abort controller if it's still the one we set\n if (currentAbort.current === controller) currentAbort.current = null;\n setIsNavigating(false);\n }\n };\n\n const renderPage = () => {\n const Component = (views[page] ||\n views[\"NotFoundPage\"] ||\n (() => <div>404 Not Found</div>)) as React.ComponentType<{\n data: TData;\n navigateTo: (url: string) => Promise<void>;\n params: TParams;\n }>;\n\n return (\n <Page data={data}>\n <Component data={data} navigateTo={navigateTo} params={params} />\n </Page>\n );\n };\n\n const content = renderPage();\n\n return (\n <RouterProvider\n value={{\n // keep backward-compatible wrapper that doesn't return a promise\n navigateTo: (...args: any[]) => {\n void navigateTo(args[0]);\n },\n // new async API consumers can use `navigateToAsync` when available\n navigateToAsync: navigateTo,\n currentPage: page,\n currentUrl: url,\n params,\n csrfToken,\n onNavigate,\n isNavigating,\n }}\n >\n {Layout ? <Layout>{content}</Layout> : <>{content}</>}\n </RouterProvider>\n );\n};\n","import { NextFunction, Request, Response } from \"express\";\nimport fs from \"fs\";\nimport React from \"react\";\nimport { renderToString } from \"react-dom/server\";\nimport { HeadContext, HeadManager } from \"../shared/context/HeadContext\";\nimport { ArcanaJSApp } from \"../shared/core/ArcanaJSApp\";\nimport { defaultHtmlTemplate } from \"./DefaultTemplate\";\n\nconst DEFAULT_HTML_TEMPLATE = defaultHtmlTemplate;\n\n// Extend Express Response interface\ndeclare global {\n namespace Express {\n interface Response {\n /**\n * Renders a React page using ArcanaJS SSR.\n *\n * @param page - The name of the page component to render.\n * @param data - Initial data to pass to the page component (default: {}).\n * @param params - Route parameters (default: {}).\n * @returns The Express Response object.\n */\n renderPage(\n page: string,\n data?: any,\n params?: Record<string, string>\n ): Response;\n }\n }\n}\n\ninterface ArcanaJSOptions {\n views: Record<string, React.FC<any>>;\n indexFile?: string;\n layout?: React.FC<any>;\n}\n\n// Helper to prevent XSS in initial data\nconst safeStringify = (obj: any) => {\n return JSON.stringify(obj).replace(/</g, \"\\\\u003c\");\n};\n\nexport const createArcanaJSMiddleware = (options: ArcanaJSOptions) => {\n const { views, indexFile, layout } = options;\n let cachedIndexHtml: string | null = null;\n\n const getIndexHtml = (\n callback: (err: NodeJS.ErrnoException | null, data: string) => void\n ) => {\n if (process.env.NODE_ENV === \"production\" && cachedIndexHtml) {\n return callback(null, cachedIndexHtml);\n }\n\n if (indexFile && fs.existsSync(indexFile)) {\n fs.readFile(indexFile, \"utf8\", (err, htmlData) => {\n if (!err && process.env.NODE_ENV === \"production\") {\n cachedIndexHtml = htmlData;\n }\n callback(err, htmlData);\n });\n } else {\n if (process.env.NODE_ENV === \"production\") {\n cachedIndexHtml = DEFAULT_HTML_TEMPLATE;\n }\n callback(null, DEFAULT_HTML_TEMPLATE);\n }\n };\n\n return (req: Request, res: Response, next: NextFunction) => {\n res.renderPage = (\n page: string,\n data: any = {},\n params: Record<string, string> = {}\n ) => {\n const csrfToken = res.locals.csrfToken;\n\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n return res.json({ page, data, params, csrfToken });\n }\n try {\n const headTags: React.ReactNode[] = [];\n const headManager: HeadManager = {\n tags: headTags,\n push: (nodes) => headTags.push(nodes),\n };\n\n const appHtml = renderToString(\n React.createElement(\n HeadContext.Provider,\n { value: headManager },\n React.createElement(ArcanaJSApp, {\n initialPage: page,\n initialData: data,\n initialParams: params,\n initialUrl: req.path,\n csrfToken: csrfToken,\n views: views,\n layout: layout,\n })\n )\n );\n\n const headHtml = renderToString(\n React.createElement(React.Fragment, null, ...headTags)\n );\n\n getIndexHtml((err, htmlData) => {\n if (err) {\n console.error(\"Error reading index.html\", err);\n return res.status(500).send(\"Server Error\");\n }\n\n const scriptContent = safeStringify({\n page,\n data,\n params,\n csrfToken,\n });\n const scriptTag = `<script id=\"__ARCANAJS_DATA__\" type=\"application/json\">${scriptContent}</script>`;\n\n const hmrScript = process.env.ARCANA_HMR_PORT\n ? `\n <script>\n (function() {\n const socket = new WebSocket(\"ws://localhost:${process.env.ARCANA_HMR_PORT}\");\n socket.onmessage = function(event) {\n const data = JSON.parse(event.data);\n if (data.type === \"reload\") {\n window.location.reload();\n }\n };\n })();\n </script>`\n : \"\";\n\n const html = htmlData\n .replace(\"<!--HEAD_CONTENT-->\", headHtml)\n .replace(\"<!--APP_CONTENT-->\", appHtml)\n .replace(\"<!--ARCANAJS_DATA_SCRIPT-->\", scriptTag + hmrScript);\n\n res.send(html);\n });\n } catch (error) {\n console.error(\"SSR Error:\", error);\n return res.status(500).send(\"Internal Server Error\");\n }\n return res;\n };\n next();\n };\n};\n","export const defaultHtmlTemplate = `<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <!--HEAD_CONTENT-->\n </head>\n <body>\n <div id=\"root\"><!--APP_CONTENT--></div>\n <!--ARCANAJS_DATA_SCRIPT-->\n </body>\n</html>`;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","import crypto from \"crypto\";\nimport { NextFunction, Request, Response } from \"express\";\n\nconst CSRF_COOKIE_NAME = \"_csrf\";\n\nexport const createCsrfMiddleware = () => {\n return (req: Request, res: Response, next: NextFunction) => {\n // 1. Generate or retrieve token\n let token = req.cookies[CSRF_COOKIE_NAME];\n\n if (!token) {\n token = crypto.randomBytes(32).toString(\"hex\");\n res.cookie(CSRF_COOKIE_NAME, token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === \"production\",\n sameSite: \"strict\",\n });\n }\n\n // 2. Expose token to the response locals (for injection into the view)\n res.locals.csrfToken = token;\n\n // 3. Verify token on state-changing methods\n const method = req.method.toUpperCase();\n if ([\"POST\", \"PUT\", \"DELETE\", \"PATCH\"].includes(method)) {\n const headerToken = req.headers[\"x-csrf-token\"];\n\n if (!headerToken || headerToken !== token) {\n return res.status(403).json({ error: \"Invalid CSRF Token\" });\n }\n }\n\n next();\n };\n};\n","import type { NextFunction, Request, Response } from \"express\";\n\nexport const responseHandler = (\n req: Request,\n res: Response,\n next: NextFunction\n) => {\n res.success = (\n data: string | object | null = {},\n message: string = \"Success\",\n status: number = 200\n ) => {\n return res.status(status).json({\n success: true,\n message,\n data,\n error: null,\n });\n };\n\n res.error = (\n message: string = \"Error\",\n status: number = 500,\n error: string | object | null | undefined | unknown = null,\n data: string | object | null = null\n ) => {\n const errorResponse: string | object | null = error\n ? typeof error === \"object\" && error !== null\n ? error instanceof Error\n ? error.toString()\n : error\n : error.toString()\n : null;\n\n return res.status(status).json({\n success: false,\n message,\n data,\n error: errorResponse,\n });\n };\n\n next();\n};\n","import \"reflect-metadata\";\n\nexport type ClassConstructor<T = any> = new (...args: any[]) => T;\nexport type FactoryFunction<T = any> = (container: Container) => T;\n\nexport class Container {\n private static instance: Container;\n private bindings: Map<string | ClassConstructor, FactoryFunction> = new Map();\n private singletons: Map<string | ClassConstructor, any> = new Map();\n\n constructor() {\n if (!Container.instance) {\n Container.instance = this;\n }\n }\n\n /**\n * Get the global container instance\n */\n public static getInstance(): Container {\n if (!Container.instance) {\n Container.instance = new Container();\n }\n return Container.instance;\n }\n\n /**\n * Bind a class or factory to the container\n */\n public bind<T>(\n key: string | ClassConstructor<T>,\n value: ClassConstructor<T> | FactoryFunction<T>\n ): void {\n if (this.isConstructor(value)) {\n this.bindings.set(key, () => this.build(value));\n } else {\n this.bindings.set(key, value as FactoryFunction<T>);\n }\n }\n\n /**\n * Bind a singleton to the container\n */\n public singleton<T>(\n key: string | ClassConstructor<T>,\n value: ClassConstructor<T> | FactoryFunction<T>\n ): void {\n const factory = this.isConstructor(value)\n ? () => this.build(value)\n : (value as FactoryFunction<T>);\n\n this.bindings.set(key, () => {\n if (!this.singletons.has(key)) {\n this.singletons.set(key, factory(this));\n }\n return this.singletons.get(key);\n });\n }\n\n /**\n * Resolve a dependency from the container\n */\n public make<T>(key: string | ClassConstructor<T>): T {\n if (this.bindings.has(key)) {\n return this.bindings.get(key)!(this);\n }\n\n // If it's a class and not bound, try to build it directly\n if (this.isConstructor(key)) {\n return this.build(key);\n }\n\n throw new Error(`Service not found: ${key.toString()}`);\n }\n\n /**\n * Check if a service is registered in the container\n */\n public has(key: string | ClassConstructor): boolean {\n return this.bindings.has(key);\n }\n\n /**\n * Alias for make() - resolve a dependency from the container\n */\n public resolve<T>(key: string | ClassConstructor<T>): T {\n return this.make(key);\n }\n\n /**\n * Instantiate a class, resolving its dependencies\n */\n private build<T>(target: ClassConstructor<T>): T {\n // Get constructor parameters using reflect-metadata\n const params = Reflect.getMetadata(\"design:paramtypes\", target) || [];\n\n const injections = params.map((param: any) => {\n return this.make(param);\n });\n\n return new target(...injections);\n }\n\n private isConstructor(obj: any): obj is ClassConstructor {\n return !!obj.prototype && !!obj.prototype.constructor.name;\n }\n}\n\nexport const container = Container.getInstance();\n","import compression from \"compression\";\nimport cookieParser from \"cookie-parser\";\nimport express, { Express, RequestHandler } from \"express\";\nimport fs from \"fs\";\nimport helmet from \"helmet\";\nimport path from \"path\";\nimport React from \"react\";\nimport ErrorPage from \"../shared/views/ErrorPage\";\nimport NotFoundPage from \"../shared/views/NotFoundPage\";\nimport { createArcanaJSMiddleware } from \"./ArcanaJSMiddleware\";\nimport { createCsrfMiddleware } from \"./CsrfMiddleware\";\nimport { createDynamicRouter } from \"./DynamicRouter\";\nimport { responseHandler } from \"./ResponseHandlerMiddleware\";\nimport { dynamicRequire } from \"./utils/dynamicRequire\";\n\nimport { ServiceProvider } from \"./support/ServiceProvider\";\n\nexport interface ArcanaJSConfig {\n port?: number | string;\n views?: Record<string, React.FC<any>>;\n viewsDir?: string;\n viewsContext?: any;\n routes?: RequestHandler | RequestHandler[];\n /** API routes can be provided separately from web routes */\n apiRoutes?: RequestHandler | RequestHandler[];\n /** Base path under which API routes will be mounted (default: '/api') */\n apiBase?: string;\n staticDir?: string;\n distDir?: string;\n indexFile?: string;\n layout?: React.FC<any>;\n /** Automatically register SIGINT/SIGTERM handlers to call stop(). Default: true */\n autoHandleSignals?: boolean;\n /** Auth configuration */\n auth?: any;\n /** Mail configuration */\n mail?: any;\n /** Database configuration */\n database?: any;\n /** Service providers to load */\n providers?: (new (app: ArcanaJSServer) => ServiceProvider)[];\n}\n\nimport { Container } from \"./Container\";\n\nclass ArcanaJSServer {\n public app: Express;\n public container: Container;\n private config: ArcanaJSConfig;\n private serverInstance?: import(\"http\").Server;\n private _sigintHandler?: () => void;\n private _sigtermHandler?: () => void;\n private providers: ServiceProvider[] = [];\n\n private initialized = false;\n\n constructor(config: ArcanaJSConfig) {\n this.config = config;\n this.app = express();\n this.container = Container.getInstance();\n this.setupMiddleware();\n }\n\n private async initializeAsync() {\n if (this.initialized) return;\n\n await this.loadConfigurations();\n await this.registerProviders();\n await this.bootProviders();\n\n this.initialized = true;\n }\n\n private async loadConfigurations() {\n // Register configs passed via constructor\n if (this.config.auth) {\n this.container.singleton(\"AuthConfig\", () => this.config.auth);\n }\n\n if (this.config.mail) {\n this.container.singleton(\"MailConfig\", () => this.config.mail);\n }\n\n if (this.config.database) {\n this.container.singleton(\"DatabaseConfig\", () => this.config.database);\n }\n }\n\n private async registerProviders() {\n if (this.config.providers) {\n for (const ProviderClass of this.config.providers) {\n const provider = new ProviderClass(this);\n await provider.register();\n this.providers.push(provider);\n }\n }\n }\n\n private async bootProviders() {\n for (const provider of this.providers) {\n await provider.boot();\n }\n }\n\n private setupMiddleware() {\n const {\n staticDir = \"public\",\n distDir = \"dist/public\",\n indexFile = \"dist/public/index.html\",\n views,\n viewsContext,\n routes,\n layout,\n apiRoutes,\n apiBase = \"/api\",\n } = this.config;\n\n const root = process.cwd();\n\n // 1. Resolve views once and in priority order\n let resolvedViews = views;\n if (!resolvedViews && viewsContext)\n resolvedViews = this.loadViewsFromContext(viewsContext);\n if (!resolvedViews) resolvedViews = this.loadViewsFromAlias();\n if (!resolvedViews) resolvedViews = this.discoverViews();\n if (!resolvedViews || Object.keys(resolvedViews).length === 0) {\n console.warn(\"No views found. Please check your views directory.\");\n resolvedViews = {} as Record<string, React.FC<any>>;\n }\n resolvedViews.NotFoundPage = resolvedViews.NotFoundPage || NotFoundPage;\n resolvedViews.ErrorPage = resolvedViews.ErrorPage || ErrorPage;\n\n // Security headers\n this.app.use(helmet({ contentSecurityPolicy: false }));\n this.app.use(cookieParser());\n this.app.use(express.json());\n this.app.use(express.urlencoded({ extended: true }));\n this.app.use(createCsrfMiddleware());\n this.app.use(responseHandler);\n\n // Static files: resolve and dedupe paths, serve before compression to avoid recompressing static files\n const isProduction = process.env.NODE_ENV === \"production\";\n const staticOptions = { index: false, maxAge: isProduction ? \"1y\" : \"0\" };\n const staticPaths = [\n path.resolve(root, distDir),\n path.resolve(root, staticDir),\n ].filter((p, i, a) => a.indexOf(p) === i);\n for (const p of staticPaths) {\n this.app.use(express.static(p, staticOptions));\n }\n\n // Compression for dynamic responses (after static middleware)\n this.app.use(compression());\n\n // ArcanaJS Middleware\n this.app.use(\n createArcanaJSMiddleware({\n views: resolvedViews,\n indexFile: path.resolve(root, indexFile),\n layout,\n })\n );\n\n // Helper to mount arrays or single route objects\n const mount = (target: any, base?: string) => {\n if (!target) return;\n const items = Array.isArray(target) ? target : [target];\n for (const r of items) {\n if (!r) continue;\n if (typeof r.getRouter === \"function\") {\n this.app.use(base || \"/\", r.getRouter());\n } else {\n this.app.use(base || \"/\", r as RequestHandler);\n }\n }\n };\n\n try {\n mount(apiRoutes, apiBase);\n if (apiRoutes) console.log(`API routes mounted at ${apiBase}`);\n } catch (err) {\n console.error(\"Error mounting apiRoutes:\", err);\n }\n\n try {\n mount(routes);\n } catch (err) {\n console.error(\"Error mounting routes:\", err);\n }\n\n // Dynamic Router\n this.app.use(createDynamicRouter(resolvedViews));\n\n // 404 and error handlers\n this.app.use((req, res) => {\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n res.status(404).json({\n page: \"NotFoundPage\",\n data: { url: req.url },\n params: {},\n csrfToken: res.locals.csrfToken,\n });\n } else {\n res.status(404).renderPage(\"NotFoundPage\", { url: req.url });\n }\n });\n\n this.app.use(\n (\n err: any,\n req: express.Request,\n res: express.Response,\n next: express.NextFunction\n ) => {\n console.error(err);\n const message =\n process.env.NODE_ENV === \"production\"\n ? \"Internal Server Error\"\n : err.message;\n if (req.get(\"X-ArcanaJS-Request\") || req.query.format === \"json\") {\n res.status(500).json({\n page: \"ErrorPage\",\n data: { message },\n params: {},\n csrfToken: res.locals.csrfToken,\n });\n } else {\n res.status(500).renderPage(\"ErrorPage\", { message });\n }\n }\n );\n }\n\n private loadViewsFromContext(context: any): Record<string, React.FC<any>> {\n const views: Record<string, React.FC<any>> = {};\n context.keys().forEach((key: string) => {\n const viewName = key.replace(/^\\.\\/(.*)\\.tsx$/, \"$1\");\n views[viewName] = context(key).default;\n });\n return views;\n }\n\n private loadViewsFromAlias(): Record<string, React.FC<any>> | undefined {\n try {\n // @ts-ignore - This alias is injected by Webpack\n const injectedViews = require(\"arcana-views\");\n if (injectedViews) {\n return this.loadViewsFromContext(injectedViews);\n }\n } catch (e) {\n // Ignore\n }\n return undefined;\n }\n\n private discoverViews(): Record<string, React.FC<any>> {\n const views: Record<string, React.FC<any>> = {};\n const viewsDir = this.config.viewsDir\n ? path.resolve(process.cwd(), this.config.viewsDir)\n : path.resolve(process.cwd(), \"src/resources/views\");\n\n if (!fs.existsSync(viewsDir)) return views;\n\n const traverse = (dir: string) => {\n const files = fs.readdirSync(dir);\n files.forEach((file) => {\n const fullPath = path.join(dir, file);\n const stat = fs.statSync(fullPath);\n\n if (stat.isDirectory()) {\n traverse(fullPath);\n } else if (file.endsWith(\".tsx\") || file.endsWith(\".jsx\")) {\n const relativePath = path.relative(viewsDir, fullPath);\n const viewName = relativePath.replace(/\\.(tsx|jsx)$/, \"\");\n try {\n // Use __non_webpack_require__ if available to avoid Webpack bundling issues\n // or standard require if running in Node directly\n\n // Register ts-node if needed\n if (file.endsWith(\".tsx\") || file.endsWith(\".ts\")) {\n try {\n dynamicRequire(\"ts-node/register\");\n } catch (e) {\n // Ignore\n }\n }\n\n const pageModule = dynamicRequire(fullPath);\n views[viewName] = pageModule.default || pageModule;\n } catch (error) {\n console.error(`Failed to load view ${viewName}:`, error);\n }\n }\n });\n };\n\n traverse(viewsDir);\n return views;\n }\n\n public async start() {\n // Initialize async components first\n await this.initializeAsync();\n\n const PORT = this.config.port || process.env.PORT || 3000;\n\n // Prevent multiple server instances\n if (this.serverInstance) {\n console.warn(\n \"Server is already running. Call stop() before starting again.\"\n );\n return;\n }\n\n this.serverInstance = this.app.listen(PORT, () => {\n console.log(`✓ Server is running on http://localhost:${PORT}`);\n });\n\n // Handle server errors\n this.serverInstance.on(\"error\", (error: any) => {\n if (error.code === \"EADDRINUSE\") {\n console.error(`✗ Port ${PORT} is already in use`);\n process.exit(1);\n } else {\n console.error(\"✗ Server error:\", error);\n }\n });\n\n // Optionally register process signal handlers per-instance to gracefully shutdown\n const autoHandle = this.config.autoHandleSignals !== false;\n if (autoHandle) {\n const shutdown = async (signal: string) => {\n console.log(`\\n⚠ Received ${signal}, shutting down gracefully...`);\n try {\n await this.stop();\n console.log(\"✓ Shutdown complete\");\n process.exit(0);\n } catch (err) {\n console.error(\"✗ Error during shutdown:\", err);\n process.exit(1);\n }\n };\n\n this._sigintHandler = () => shutdown(\"SIGINT\");\n this._sigtermHandler = () => shutdown(\"SIGTERM\");\n\n process.on(\"SIGINT\", this._sigintHandler);\n process.on(\"SIGTERM\", this._sigtermHandler);\n\n console.log(\"✓ Signal handlers registered (Ctrl+C to stop)\");\n }\n }\n\n /**\n * Stop the HTTP server and close DB connection if present.\n */\n public async stop(): Promise<void> {\n // Close HTTP server\n if (this.serverInstance) {\n console.log(\"⏳ Stopping HTTP server...\");\n await new Promise<void>((resolve, reject) => {\n this.serverInstance!.close((err) => {\n if (err) {\n console.error(\"✗ Error closing HTTP server:\", err);\n return reject(err);\n }\n resolve();\n });\n });\n this.serverInstance = undefined;\n console.log(\"✓ HTTP server stopped\");\n } else {\n console.log(\"ℹ HTTP server is not running\");\n }\n\n // Shutdown all providers\n if (this.providers.length > 0) {\n console.log(\"⏳ Shutting down providers...\");\n for (const provider of this.providers) {\n if (provider.shutdown) {\n try {\n await provider.shutdown();\n console.log(`✓ ${provider.constructor.name} shut down`);\n } catch (err) {\n console.error(\n `✗ Error shutting down provider ${provider.constructor.name}:`,\n err\n );\n }\n }\n }\n }\n\n // Remove signal handlers registered by this instance\n try {\n if (this._sigintHandler) {\n process.removeListener(\"SIGINT\", this._sigintHandler);\n this._sigintHandler = undefined;\n }\n if (this._sigtermHandler) {\n process.removeListener(\"SIGTERM\", this._sigtermHandler);\n this._sigtermHandler = undefined;\n }\n } catch (err) {\n // ignore errors while removing listeners\n }\n }\n}\nexport default ArcanaJSServer;\n","import { NextFunction, Request, Response } from \"express\";\n\nexport const createDynamicRouter = (views: Record<string, any>) => {\n return (req: Request, res: Response, next: NextFunction) => {\n // Remove leading slash\n let path = req.path.substring(1);\n\n // Handle root path mapping to \"index\" if not handled elsewhere\n if (path === \"\") {\n path = \"index\";\n }\n\n // 1. Exact match\n if (views[path]) {\n return res.renderPage(path, {});\n }\n\n // 2. Dynamic match\n for (const viewName of Object.keys(views)) {\n if (!viewName.includes(\"[\")) continue;\n\n // Convert view path to regex\n // e.g., \"users/[id]\" -> \"^users/([^/]+)$\"\n // We need to escape special regex characters first, but keep [ and ] for our logic\n // Actually, simpler: split by '/' and match segments\n\n const pageParts = viewName.split(\"/\");\n const pathParts = path.split(\"/\");\n\n if (pageParts.length !== pathParts.length) continue;\n\n let match = true;\n const params: Record<string, string> = {};\n\n for (let i = 0; i < pageParts.length; i++) {\n const pagePart = pageParts[i];\n const pathPart = pathParts[i];\n\n if (pagePart.startsWith(\"[\") && pagePart.endsWith(\"]\")) {\n const paramName = pagePart.slice(1, -1);\n params[paramName] = pathPart;\n } else if (pagePart !== pathPart) {\n match = false;\n break;\n }\n }\n\n if (match) {\n return res.renderPage(viewName, {}, params);\n }\n }\n\n // If not found, pass to the next middleware (usually 404 handler)\n next();\n };\n};\n","import { NextFunction, Request, Response } from \"express\";\n\nimport { container } from \"./Container\";\n\nexport default class ControllerBinder {\n static handle(controller: any, method: string) {\n // Instantiate the controller once (Singleton pattern) for performance\n // This assumes controllers are stateless, which is best practice.\n let instance: any;\n try {\n instance = container.make(controller);\n } catch (e) {\n // Fallback if controller is not a class or fails to instantiate\n console.warn(`Failed to instantiate controller ${controller.name}`, e);\n instance = controller;\n }\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n // Call the method\n if (typeof instance[method] === \"function\") {\n await instance[method](req, res, next);\n } else {\n throw new Error(\n `Method ${method} not found on controller ${controller.name}`\n );\n }\n } catch (error) {\n next(error);\n }\n };\n }\n}\n","import { NextFunction, Request, Response } from \"express\";\n\nimport { container } from \"./Container\";\n\nexport default class MiddlewareBinder {\n static handle(middleware: any, method: string = \"handle\") {\n // Instantiate the middleware once (Singleton pattern) for performance\n let instance: any;\n try {\n instance = container.make(middleware);\n } catch (e) {\n // Fallback if middleware is not a class or fails to instantiate\n instance = middleware;\n }\n\n return async (req: Request, res: Response, next: NextFunction) => {\n try {\n // Call the method\n if (typeof instance[method] === \"function\") {\n await instance[method](req, res, next);\n } else {\n throw new Error(\n `Method ${method} not found on middleware ${middleware.name}`\n );\n }\n } catch (error) {\n next(error);\n }\n };\n }\n}\n","import express, { Router as ExpressRouter, RequestHandler, Router } from \"express\";\nimport ControllerBinder from \"./ControllerBinder\";\nimport MiddlewareBinder from \"./MiddlewareBinder\";\n\n/**\n * Provides Routing syntax for defining routes with prefixes, middlewares, and groups for ArcanaJS Framework\n */\nexport class ArcanaJSRouter {\n private router: ExpressRouter;\n private middlewareStack: RequestHandler[];\n private prefixStack: string[];\n\n constructor() {\n this.router = express.Router();\n this.middlewareStack = [];\n this.prefixStack = [];\n }\n\n /**\n * Add middleware to the current stack\n */\n middleware(...middleware: any[]): ArcanaJSRouter {\n const newRouter = this._clone();\n const resolvedMiddlewares = middleware.map((m) =>\n this._resolveMiddleware(m)\n );\n newRouter.middlewareStack = [\n ...this.middlewareStack,\n ...resolvedMiddlewares,\n ];\n return newRouter;\n }\n\n /**\n * Add prefix to the current stack\n */\n prefix(prefix: string): ArcanaJSRouter {\n const newRouter = this._clone();\n newRouter.prefixStack = [\n ...this.prefixStack,\n prefix.replace(/^\\/|\\/$/g, \"\"),\n ];\n return newRouter;\n }\n\n /**\n * Create a route group\n */\n group(callback: (router: ArcanaJSRouter) => void): ArcanaJSRouter {\n callback(this);\n return this;\n }\n\n /**\n * Define a GET route\n */\n get(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"get\", path, action, middlewares);\n }\n\n /**\n * Define a POST route\n */\n post(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"post\", path, action, middlewares);\n }\n\n /**\n * Define a PUT route\n */\n put(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"put\", path, action, middlewares);\n }\n\n /**\n * Define a DELETE route\n */\n delete(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"delete\", path, action, middlewares);\n }\n\n /**\n * Define a PATCH route\n */\n patch(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"patch\", path, action, middlewares);\n }\n\n /**\n * Define an OPTIONS route\n */\n options(path: string, ...args: any[]): ArcanaJSRouter {\n const action = args.pop();\n const middlewares = args;\n return this._addRoute(\"options\", path, action, middlewares);\n }\n\n /**\n * Define a resource route\n * Registers index, create, store, show, edit, update, destroy routes\n */\n resource(path: string, controller: any): ArcanaJSRouter {\n this.get(path, controller, \"index\");\n this.get(`${path}/create`, controller, \"create\");\n this.post(path, controller, \"store\");\n this.get(`${path}/:id`, controller, \"show\");\n this.get(`${path}/:id/edit`, controller, \"edit\");\n this.put(`${path}/:id`, controller, \"update\");\n this.patch(`${path}/:id`, controller, \"update\");\n this.delete(`${path}/:id`, controller, \"destroy\");\n return this;\n }\n\n /**\n * Get the underlying Express router\n */\n getRouter(): ExpressRouter {\n return this.router;\n }\n\n /**\n * Clone the current router instance\n */\n private _clone(): ArcanaJSRouter {\n const newRouter = new ArcanaJSRouter();\n newRouter.router = this.router;\n newRouter.middlewareStack = [...this.middlewareStack];\n newRouter.prefixStack = [...this.prefixStack];\n return newRouter;\n }\n\n /**\n * Add a route to the router\n */\n private _addRoute(\n method: \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\" | \"options\",\n path: string,\n action: any,\n routeMiddlewares: any[] = []\n ): ArcanaJSRouter {\n const fullPath = this._buildPath(path);\n const handler = this._buildHandler(action);\n const flatMiddlewares = routeMiddlewares.flat(Infinity);\n const resolvedMiddlewares = flatMiddlewares.map((m) =>\n this._resolveMiddleware(m)\n );\n const middlewares = [\n ...this.middlewareStack,\n ...resolvedMiddlewares,\n handler,\n ];\n\n this.router[method](fullPath, ...middlewares);\n return this;\n }\n\n /**\n * Resolve middleware to RequestHandler\n */\n private _resolveMiddleware(middleware: any): RequestHandler {\n if (typeof middleware === \"function\" && !middleware.prototype?.handle) {\n // It's a standard express middleware function\n return middleware;\n }\n\n if (Array.isArray(middleware) && middleware.length === 2) {\n // It's [MiddlewareClass, 'method']\n const [middlewareClass, method] = middleware;\n return MiddlewareBinder.handle(middlewareClass, method);\n }\n\n if (\n typeof middleware === \"function\" ||\n (typeof middleware === \"object\" && middleware !== null)\n ) {\n // It's a Middleware Class (constructor) or instance\n // Default to 'handle' method\n return MiddlewareBinder.handle(middleware, \"handle\");\n }\n\n throw new Error(\n \"Invalid middleware. Must be a function, [Class, 'method'], or Class.\"\n );\n }\n\n /**\n * Build the full path with prefixes\n */\n private _buildPath(path: string): string {\n const cleanPath = path.replace(/^\\//, \"\");\n const prefixes = this.prefixStack.filter((p) => p !== \"\");\n\n if (prefixes.length === 0) {\n return `/${cleanPath}`;\n }\n\n return `/${prefixes.join(\"/\")}/${cleanPath}`.replace(/\\/+/g, \"/\");\n }\n\n /**\n * Build the route handler\n */\n private _buildHandler(action: any): RequestHandler {\n if (typeof action === \"function\") {\n return action;\n }\n\n if (Array.isArray(action) && action.length === 2) {\n const [controller, method] = action;\n return ControllerBinder.handle(controller, method);\n }\n\n throw new Error(\n 'Action must be a function or array [Controller, \"method\"]'\n );\n }\n}\n\n/**\n * Static Route class for ArcanaJS Routing\n */\nexport class Route {\n private static _router = new ArcanaJSRouter();\n\n static middleware(...middleware: any[]): typeof Route {\n this._router = this._router.middleware(...middleware);\n return this;\n }\n\n static prefix(prefix: string): typeof Route {\n this._router = this._router.prefix(prefix);\n return this;\n }\n\n static group(callback: (router: ArcanaJSRouter) => void): typeof Route {\n this._router.group(callback);\n return this;\n }\n\n static get(path: string, ...args: any[]): typeof Route {\n this._router.get(path, ...args);\n return this;\n }\n\n static post(path: string, ...args: any[]): typeof Route {\n this._router.post(path, ...args);\n return this;\n }\n\n static put(path: string, ...args: any[]): typeof Route {\n this._router.put(path, ...args);\n return this;\n }\n\n static delete(path: string, ...args: any[]): typeof Route {\n this._router.delete(path, ...args);\n return this;\n }\n\n static patch(path: string, ...args: any[]): typeof Route {\n this._router.patch(path, ...args);\n return this;\n }\n\n static options(path: string, ...args: any[]): typeof Route {\n this._router.options(path, ...args);\n return this;\n }\n\n static resource(path: string, controller: any): typeof Route {\n this._router.resource(path, controller);\n return this;\n }\n\n static getRouter(): ExpressRouter {\n const router = this._router.getRouter();\n this._router = new ArcanaJSRouter(); // Reset for next use\n return router;\n }\n}\n\nexport default Route;\n","import ArcanaJSServer from \"../ArcanaJSServer\";\n\nexport abstract class ServiceProvider {\n protected app: ArcanaJSServer;\n\n constructor(app: ArcanaJSServer) {\n this.app = app;\n }\n\n /**\n * Register any application services.\n */\n register(): void {\n //\n }\n\n /**\n * Bootstrap any application services.\n */\n boot(): void {\n //\n }\n\n /**\n * Shutdown any application services.\n */\n async shutdown(): Promise<void> {\n //\n }\n}\n","import { Express } from \"express\";\nimport ArcanaJSServer, { ArcanaJSConfig } from \"./server/ArcanaJSServer\";\n\n// ============================================================================\n// Server Core Exports\n// ============================================================================\n\nexport { default as ArcanaJSServer } from \"./server/ArcanaJSServer\";\nexport { Container } from \"./server/Container\";\n\nexport { Express, NextFunction, Request, Response } from \"express\";\n\n// ============================================================================\n// Routing Exports\n// ============================================================================\n\nexport { default as Route } from \"./server/Router\";\n\n// ============================================================================\n// Middleware Exports\n// ============================================================================\n\nexport type { Middleware } from \"./server/http/Middleware\";\n\n// ============================================================================\n// Provider Exports\n// ============================================================================\n\nexport { ServiceProvider } from \"./server/support/ServiceProvider\";\n\n// ============================================================================\n// Server Factory Function\n// ============================================================================\n\n/**\n * Create an ArcanaJS server with the given Express app\n *\n * @param app - Express application instance\n * @param config - Optional ArcanaJS configuration\n * @returns ArcanaJSServer instance\n *\n * @example\n * ```typescript\n * import express from 'express';\n * import { createArcanaServer } from 'arcanajs/server';\n *\n * const app = express();\n * const server = createArcanaServer(app, {\n * port: 3000,\n * viewsDir: 'src/resources/views',\n * });\n *\n * server.start();\n * ```\n */\nexport function createArcanaServer(\n app: Express,\n config?: Partial<ArcanaJSConfig>\n): ArcanaJSServer {\n const server = new ArcanaJSServer({ ...config });\n return server;\n}\n"],"names":["dynamicRequire","id","_global$process","_global","global","nativeRequire","e","eval","module","exports","require","Reflect","root","globalThis","self","this","Function","_","functionThis","indirectEvalThis","exporter","makeExporter","target","previous","key","value","Object","defineProperty","configurable","writable","hasOwn","prototype","hasOwnProperty","supportsSymbol","Symbol","toPrimitiveSymbol","toPrimitive","iteratorSymbol","iterator","supportsCreate","create","supportsProto","__proto__","Array","downLevel","HashMap","MakeDictionary","has","map","call","get","undefined","functionPrototype","getPrototypeOf","_Map","Map","entries","cacheSentinel","arraySentinel","MapIterator","keys","values","selector","_index","_keys","_values","_selector","next","index","length","result","done","throw","error","return","_cacheKey","_cacheIndex","enumerable","_find","set","delete","size","i","SameValueZero","clear","getKey","getValue","getEntry","insert","push","CreateMapPolyfill","_Set","Set","_map","add","_WeakMap","WeakMap","rootKey","CreateUniqueKey","_key","table","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","buffer","Math","random","data","Uint8Array","array","crypto","getRandomValues","msCrypto","GenRandomBytes","offset","byte","toString","toLowerCase","CreateWeakMapPolyfill","registrySymbol","for","metadataRegistry","IsUndefined","IsObject","isExtensible","fallback","first","second","rest","defineMetadata","reflect","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","metadataOwner","isProviderFor","O","P","metadataPropertySet","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","OrdinaryDeleteMetadata","CreateFallbackProvider","targetProviderMap","registry","registerProvider","getProvider","setProvider","provider","Error","getProviderNoCache","GetIterator","IteratorStep","IteratorValue","IteratorClose","providerMap","hasProvider","TypeError","existingProvider","CreateMetadataRegistry","GetOrCreateMetadataRegistry","metadataProvider","metadata","targetMetadata","MetadataKey","MetadataValue","GetOrCreateMetadataMap","metadataMap","ToBoolean","k","nextValue","Create","createdTargetMetadata","CreateMetadataProvider","OrdinaryHasMetadata","parent","OrdinaryGetPrototypeOf","IsNull","GetMetadataProvider","OrdinaryGetMetadata","OrdinaryMetadataKeys","ownKeys","parentKeys","_i","ownKeys_1","_a","parentKeys_1","Type","x","ToPrimitive","input","PreferredType","hint","exoticToPrim","GetMethod","toString_1","IsCallable","valueOf","toString_2","OrdinaryToPrimitive","argument","ToPropertyKey","ToString","IsArray","isArray","IsConstructor","y","V","func","obj","method","iterResult","f","proto","prototypeProto","constructor","registeredProvider","__","decorators","propertyKey","attributes","decorated","decorator","DecorateConstructor","descriptor","DecorateProperty","metadataKey","metadataValue","IsPropertyKey","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","prop","r","toStringTag","Body","children","React","createSingletonContext","defaultValue","globalAny","symbolKey","createContext","HeadContext","Head","headManager","useContext","window","forEach","child","useEffect","managedElements","reactElement","type","document","title","props","name","property","element","querySelector","setAttribute","content","newMeta","createElement","head","appendChild","rel","href","newLink","el","remove","RouterContext","RouterProvider","Provider","Link","prefetch","navigateTo","navigateToAsync","useRouter","context","isExternal","test","_extends","onClick","async","preventDefault","open","onMouseEnter","handleMouseEnter","fetch","catch","PageContext","Page","ErrorPage","message","statusCode","stack","isDevelopment","process","env","NODE_ENV","className","style","animationDelay","fill","stroke","viewBox","strokeLinecap","strokeLinejoin","strokeWidth","location","reload","NotFoundPage","url","Fragment","history","back","ArcanaJSApp","initialPage","initialData","initialParams","initialUrl","csrfToken","views","layout","Layout","onNavigate","cacheLimit","page","setPage","useState","setData","params","setParams","setUrl","pathname","isNavigating","setIsNavigating","navigationCache","currentAbort","state","replaceState","handlePopState","event","path","addEventListener","_currentAbort$current","removeEventListener","current","abort","_currentAbort$current2","newUrl","cached","pushState","scrollTo","top","behavior","controller","AbortController","response","headers","cache","signal","ok","status","statusText","includes","json","payload","setCache","firstKey","err","console","renderPage","Component","args","currentPage","currentUrl","DEFAULT_HTML_TEMPLATE","CSRF_COOKIE_NAME","responseHandler","req","res","success","errorResponse","Container","bindings","singletons","instance","getInstance","bind","isConstructor","build","singleton","make","resolve","getMetadata","param","container","providers","initialized","config","app","express","setupMiddleware","initializeAsync","loadConfigurations","registerProviders","bootProviders","auth","mail","database","ProviderClass","register","boot","staticDir","distDir","indexFile","viewsContext","routes","apiRoutes","apiBase","cwd","resolvedViews","loadViewsFromContext","loadViewsFromAlias","discoverViews","warn","use","helmet","contentSecurityPolicy","cookieParser","extended","token","cookies","cookie","httpOnly","secure","sameSite","locals","toUpperCase","headerToken","staticOptions","maxAge","staticPaths","filter","p","indexOf","compression","options","cachedIndexHtml","query","format","headTags","tags","nodes","appHtml","renderToString","headHtml","callback","fs","htmlData","getIndexHtml","send","scriptTag","JSON","stringify","replace","hmrScript","ARCANA_HMR_PORT","html","createArcanaJSMiddleware","mount","base","items","getRouter","log","substring","viewName","pageParts","split","pathParts","match","pagePart","pathPart","startsWith","endsWith","slice","createDynamicRouter","default","injectedViews","viewsDir","traverse","dir","file","fullPath","isDirectory","pageModule","start","PORT","port","serverInstance","listen","on","code","exit","autoHandleSignals","shutdown","stop","_sigintHandler","_sigtermHandler","Promise","reject","close","removeListener","ControllerBinder","handle","MiddlewareBinder","middleware","ArcanaJSRouter","router","middlewareStack","prefixStack","newRouter","_clone","resolvedMiddlewares","m","_resolveMiddleware","prefix","group","action","pop","middlewares","_addRoute","post","put","patch","resource","routeMiddlewares","_buildPath","handler","_buildHandler","flat","Infinity","_middleware$prototype","middlewareClass","cleanPath","prefixes","join","Route","_router","ServiceProvider","createArcanaServer","ArcanaJSServer"],"ignoreList":[],"sourceRoot":""}