next-csrf
Version:
CSRF mitigation library for Next.js
1 lines • 8.98 kB
JSON
{"ast":null,"code":"\"use strict\";\n\nvar _defineProperty = require(\"@babel/runtime/helpers/defineProperty\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nexports.__esModule = true;\nexports.pathToRegexp = exports[\"default\"] = exports.customRouteMatcherOptions = exports.matcherOptions = void 0;\n\nvar pathToRegexp = _interopRequireWildcard(require(\"next/dist/compiled/path-to-regexp\"));\n\nexports.pathToRegexp = pathToRegexp;\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nvar matcherOptions = {\n sensitive: false,\n delimiter: '/',\n decode: decodeParam\n};\nexports.matcherOptions = matcherOptions;\n\nvar customRouteMatcherOptions = _objectSpread(_objectSpread({}, matcherOptions), {}, {\n strict: true\n});\n\nexports.customRouteMatcherOptions = customRouteMatcherOptions;\n\nvar _default = function _default() {\n var customRoute = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return function (path) {\n var keys = [];\n var matcherRegex = pathToRegexp.pathToRegexp(path, keys, customRoute ? customRouteMatcherOptions : matcherOptions);\n var matcher = pathToRegexp.regexpToFunction(matcherRegex, keys, matcherOptions);\n return function (pathname, params) {\n var res = pathname == null ? false : matcher(pathname);\n\n if (!res) {\n return false;\n }\n\n if (customRoute) {\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n\n // unnamed params should be removed as they\n // are not allowed to be used in the destination\n if (typeof key.name === 'number') {\n delete res.params[key.name];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n return _objectSpread(_objectSpread({}, params), res.params);\n };\n };\n};\n\nexports[\"default\"] = _default;\n\nfunction decodeParam(param) {\n try {\n return decodeURIComponent(param);\n } catch (_) {\n var err = new Error('failed to decode param');\n err.code = 'DECODE_FAILED';\n throw err;\n }\n}","map":{"version":3,"sources":["../../../../../next-server/lib/router/utils/path-match.ts"],"names":["matcherOptions","sensitive","delimiter","decode","customRouteMatcherOptions","strict","customRoute","path","keys","matcherRegex","pathToRegexp","matcher","res","pathname","key","decodeURIComponent","err"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,GAAA,uBAAA,CAAA,OAAA,CAAA,mCAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIO;;AAAA,IAAMA,cAAc,GAAG;AAC5BC,EAAAA,SAAS,EADmB,KAAA;AAE5BC,EAAAA,SAAS,EAFmB,GAAA;AAG5BC,EAAAA,MAAM,EAHD;AAAuB,CAAvB;;;AAMA,IAAMC,yBAAyB,mCAAG,cAAH;AAEpCC,EAAAA,MAAM,EAFD;AAA+B,EAA/B;;;;eAKQ,S,QAAA,GAAyB;AAAA,MAAxBC,WAAwB,uEAAzB,KAAyB;AACtC,SAAQC,UAAAA,IAAD,EAAkB;AACvB,QAAMC,IAAwB,GAA9B,EAAA;AACA,QAAMC,YAAY,GAAGC,YAAY,CAAZA,YAAAA,CAAAA,IAAAA,EAAAA,IAAAA,EAGnBJ,WAAW,GAAA,yBAAA,GAHb,cAAqBI,CAArB;AAKA,QAAMC,OAAO,GAAGD,YAAY,CAAZA,gBAAAA,CAAAA,YAAAA,EAAAA,IAAAA,EAAhB,cAAgBA,CAAhB;AAMA,WAAO,UAAA,QAAA,EAAA,MAAA,EAAuD;AAC5D,UAAME,GAAG,GAAGC,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,GAA2BF,OAAO,CAA9C,QAA8C,CAA9C;;AACA,UAAI,CAAJ,GAAA,EAAU;AACR,eAAA,KAAA;AAGF;;AAAA,UAAA,WAAA,EAAiB;AAAA,mDACf,IADe;AAAA;;AAAA;AACf,8DAAwB;AAAA,gBAAxB,GAAwB;;AACtB;AACA;AACA,gBAAI,OAAOG,GAAG,CAAV,IAAA,KAAJ,QAAA,EAAkC;AAChC,qBAAQF,GAAG,CAAJ,MAACA,CAAmBE,GAAG,CAA9B,IAAQF,CAAR;AAEH;AACF;AARgB;AAAA;AAAA;AAAA;AAAA;AAUjB;;AAAA,6CAAO,MAAP,GAAuBA,GAAG,CAA1B,MAAA;AAhBF,KAAA;AAbF,GAAA;;;;;AAkCF,SAAA,WAAA,CAAA,KAAA,EAAoC;AAClC,MAAI;AACF,WAAOG,kBAAkB,CAAzB,KAAyB,CAAzB;AACA,GAFF,CAEE,OAAA,CAAA,EAAU;AACV,QAAMC,GAA8B,GAAG,IAAA,KAAA,CAAvC,wBAAuC,CAAvC;AACAA,IAAAA,GAAG,CAAHA,IAAAA,GAAAA,eAAAA;AACA,UAAA,GAAA;AAEH;AAAA","sourcesContent":["import * as pathToRegexp from 'next/dist/compiled/path-to-regexp'\n\nexport { pathToRegexp }\n\nexport const matcherOptions = {\n sensitive: false,\n delimiter: '/',\n decode: decodeParam,\n}\n\nexport const customRouteMatcherOptions = {\n ...matcherOptions,\n strict: true,\n}\n\nexport default (customRoute = false) => {\n return (path: string) => {\n const keys: pathToRegexp.Key[] = []\n const matcherRegex = pathToRegexp.pathToRegexp(\n path,\n keys,\n customRoute ? customRouteMatcherOptions : matcherOptions\n )\n const matcher = pathToRegexp.regexpToFunction(\n matcherRegex,\n keys,\n matcherOptions\n )\n\n return (pathname: string | null | undefined, params?: any) => {\n const res = pathname == null ? false : matcher(pathname)\n if (!res) {\n return false\n }\n\n if (customRoute) {\n for (const key of keys) {\n // unnamed params should be removed as they\n // are not allowed to be used in the destination\n if (typeof key.name === 'number') {\n delete (res.params as any)[key.name]\n }\n }\n }\n\n return { ...params, ...res.params }\n }\n }\n}\n\nfunction decodeParam(param: string) {\n try {\n return decodeURIComponent(param)\n } catch (_) {\n const err: Error & { code?: string } = new Error('failed to decode param')\n err.code = 'DECODE_FAILED'\n throw err\n }\n}\n"]},"metadata":{},"sourceType":"script"}