@mattisvensson/strapi-plugin-webatlas 0.1.0 → 0.1.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.
Files changed (58) hide show
  1. package/README.md +9 -16
  2. package/dist/_chunks/_commonjsHelpers-BxmBWJD2.mjs +1 -0
  3. package/dist/_chunks/_commonjsHelpers-BxmBWJD2.mjs.map +1 -0
  4. package/dist/_chunks/_commonjsHelpers-Cq6wktVC.js +1 -0
  5. package/dist/_chunks/_commonjsHelpers-Cq6wktVC.js.map +1 -0
  6. package/dist/_chunks/en-B4KWt_jN.js +1 -0
  7. package/dist/_chunks/en-B4KWt_jN.js.map +1 -0
  8. package/dist/_chunks/en-Byx4XI2L.mjs +1 -0
  9. package/dist/_chunks/en-Byx4XI2L.mjs.map +1 -0
  10. package/dist/_chunks/index-BN88Lgzs.mjs +48 -0
  11. package/dist/_chunks/index-BN88Lgzs.mjs.map +1 -0
  12. package/dist/_chunks/index-BO-x2JqR.js +773 -0
  13. package/dist/_chunks/index-BO-x2JqR.js.map +1 -0
  14. package/dist/_chunks/index-BlgOvhoB.js +48 -0
  15. package/dist/_chunks/index-BlgOvhoB.js.map +1 -0
  16. package/dist/_chunks/index-BxpNGM75.js +6815 -0
  17. package/dist/_chunks/index-BxpNGM75.js.map +1 -0
  18. package/dist/_chunks/index-C9WMC_E4.mjs +18006 -0
  19. package/dist/_chunks/index-C9WMC_E4.mjs.map +1 -0
  20. package/dist/_chunks/index-CMR1MRav.js +773 -0
  21. package/dist/_chunks/index-CMR1MRav.js.map +1 -0
  22. package/dist/_chunks/index-CWKVE-jr.mjs +18006 -0
  23. package/dist/_chunks/index-CWKVE-jr.mjs.map +1 -0
  24. package/dist/_chunks/index-CX7sNP82.mjs +6815 -0
  25. package/dist/_chunks/index-CX7sNP82.mjs.map +1 -0
  26. package/dist/_chunks/index-CZ17y-Jh.mjs +6815 -0
  27. package/dist/_chunks/index-CZ17y-Jh.mjs.map +1 -0
  28. package/dist/_chunks/index-CoLyO2LL.js +774 -0
  29. package/dist/_chunks/index-CoLyO2LL.js.map +1 -0
  30. package/dist/_chunks/index-D-Td1Ois.mjs +774 -0
  31. package/dist/_chunks/index-D-Td1Ois.mjs.map +1 -0
  32. package/dist/_chunks/index-D-XQl47E.mjs +48 -0
  33. package/dist/_chunks/index-D-XQl47E.mjs.map +1 -0
  34. package/dist/_chunks/index-D2uQoUmx.js +18011 -0
  35. package/dist/_chunks/index-D2uQoUmx.js.map +1 -0
  36. package/dist/_chunks/index-D6j3Fzy1.js +48 -0
  37. package/dist/_chunks/index-D6j3Fzy1.js.map +1 -0
  38. package/dist/_chunks/index-D7gp-xV4.js +6815 -0
  39. package/dist/_chunks/index-D7gp-xV4.js.map +1 -0
  40. package/dist/_chunks/index-DDqPnM_n.js +18018 -0
  41. package/dist/_chunks/index-DDqPnM_n.js.map +1 -0
  42. package/dist/_chunks/index-DjiYUIHu.mjs +775 -0
  43. package/dist/_chunks/index-DjiYUIHu.mjs.map +1 -0
  44. package/dist/_chunks/index-Dswi-nB-.js +6815 -0
  45. package/dist/_chunks/index-Dswi-nB-.js.map +1 -0
  46. package/dist/_chunks/index-_NyTpRNV.js +48 -0
  47. package/dist/_chunks/index-_NyTpRNV.js.map +1 -0
  48. package/dist/_chunks/index-kDu0Msv9.js +18025 -0
  49. package/dist/_chunks/index-kDu0Msv9.js.map +1 -0
  50. package/dist/admin/index.js +2 -1
  51. package/dist/admin/index.js.map +1 -0
  52. package/dist/admin/index.mjs +2 -1
  53. package/dist/admin/index.mjs.map +1 -0
  54. package/dist/server/index.js +11 -10
  55. package/dist/server/index.js.map +1 -0
  56. package/dist/server/index.mjs +11 -10
  57. package/dist/server/index.mjs.map +1 -0
  58. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../utils/transformToUrl.ts","../../pluginId.ts","../../server/src/utils/pluginHelpers.ts","../../server/src/utils/duplicateCheck.ts","../../server/src/bootstrap.ts","../../server/src/destroy.ts","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_defineProperty.js","../../node_modules/lodash/_baseAssignValue.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assignValue.js","../../node_modules/lodash/isArray.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/_isKey.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/memoize.js","../../node_modules/lodash/_memoizeCapped.js","../../node_modules/lodash/_stringToPath.js","../../node_modules/lodash/_arrayMap.js","../../node_modules/lodash/_baseToString.js","../../node_modules/lodash/toString.js","../../node_modules/lodash/_castPath.js","../../node_modules/lodash/_isIndex.js","../../node_modules/lodash/_toKey.js","../../node_modules/lodash/_baseSet.js","../../node_modules/lodash/set.js","../../server/src/register.ts","../../server/src/config/index.ts","../../server/src/content-types/route/schema.ts","../../server/src/content-types/route/index.ts","../../server/src/content-types/navigation/schema.ts","../../server/src/content-types/navigation/index.ts","../../server/src/content-types/navitem/schema.ts","../../server/src/content-types/navitem/index.ts","../../server/src/content-types/index.ts","../../server/src/controllers/admin.ts","../../server/src/controllers/client.ts","../../server/src/controllers/index.ts","../../server/src/middlewares/index.ts","../../server/src/policies/index.ts","../../server/src/routes/admin.ts","../../server/src/routes/client.ts","../../server/src/routes/index.ts","../../utils/getFullPath.ts","../../utils/buildStructuredNavigation.ts","../../utils/extractRouteAndItems.ts","../../utils/populateDeep.ts","../../utils/cleanRootKeys.ts","../../utils/removeWaFields.ts","../../server/src/services/admin.ts","../../server/src/services/client.ts","../../server/src/services/index.ts","../../server/src/index.ts"],"sourcesContent":["export default function transformToUrl(input: string): string {\n const specialCharMap: { [key: string]: string } = {\n 'ü': 'ue',\n 'ä': 'ae',\n 'ö': 'oe',\n };\n\n if (!input || typeof input !== 'string') return '';\n\n input = input.toLowerCase();\n\n // Reduce multiple slashes to a single slash and remove leading/trailing slashes\n input = input.replace(/\\/+/g, '/');\n input = input.startsWith('/') ? input.slice(1) : input;\n input = input.endsWith('/') ? input.slice(0, -1) : input;\n \n // Replace special characters\n for (const char in specialCharMap) {\n const regex = new RegExp(char, 'g');\n input = input.replace(regex, specialCharMap[char]);\n }\n\n // Remove leading and trailing spaces\n input = input.trim();\n \n // Replace spaces with hyphens\n input = input.replace(/\\s+/g, '-');\n\n // Encode special characters\n // input = encodeURIComponent(input);\n \n // Remove any characters that are not alphanumeric, hyphens, underscores, or slashes\n input = input.replace(/[^A-Za-z0-9$\\-_.+!*'()/]/g, '');\n\n // Replace multiple consecutive dashes with a single dash\n input = input.replace(/-+/g, '-');\n\n return input;\n }","import pluginPkg from './package.json';\n\nconst PLUGIN_ID = pluginPkg.strapi.name.replace(/^(@[^-,.][\\w,-]+\\/|strapi-)plugin-/i, '') || 'webatlas';\nconst PLUGIN_NAME = pluginPkg.strapi.displayName || PLUGIN_ID;\n\nexport { PLUGIN_ID, PLUGIN_NAME };\n","import type { Core } from '@strapi/strapi';\nimport { PLUGIN_ID } from '../../../pluginId'\n\nexport const waNavigation = `plugin::${PLUGIN_ID}.navigation`;\nexport const waNavItem = `plugin::${PLUGIN_ID}.navitem`;\nexport const waRoute = `plugin::${PLUGIN_ID}.route`;\n\nexport function getAdminService(): Core.Service {\n return strapi.plugin(PLUGIN_ID)?.service('admin');\n}\n\nexport function getClientService(): Core.Service {\n return strapi.plugin(PLUGIN_ID)?.service('client');\n}","import { waRoute } from \"./pluginHelpers\";\nimport type { UID } from '@strapi/strapi';\n\nasync function checkPathExists(path: string, targetRoutePath?: string | null): Promise<boolean> {\n const entities = await strapi.documents(waRoute as UID.ContentType).findMany({\n filters: { \n $or: [\n {\n fullPath: path,\n },\n {\n slug: path,\n },\n {\n uidPath: path,\n },\n ], \n },\n });\n\n if (targetRoutePath && entities && entities[0]?.fullPath === targetRoutePath) \n return false;\n\n return entities?.length > 0;\n}\n\nexport default async function duplicateCheck(initialPath: string, targetRouteDocumentId?: string | null) {\n try {\n let uniquePath = initialPath;\n let targetRoutePath = null;\n let counter = 1;\n\n if (targetRouteDocumentId) {\n const route = await strapi.documents(waRoute as UID.ContentType).findOne({\n documentId: targetRouteDocumentId\n });\n if (route) targetRoutePath = route.fullPath;\n }\n \n // Check if the path exists\n let exists = await checkPathExists(uniquePath, targetRoutePath);\n\n // While the path exists, append/increment a number and check again\n while (exists) {\n uniquePath = `${initialPath}-${counter}`;\n exists = await checkPathExists(uniquePath);\n counter++;\n }\n \n // Return the unique path\n return uniquePath;\n } catch (e) {\n console.log(e)\n }\n}\n","import { PluginConfig, ConfigContentType } from \"../../types\";\nimport transformToUrl from \"../../utils/transformToUrl\";\nimport duplicateCheck from \"./utils/duplicateCheck\";\nimport { waRoute, waNavItem } from \"./utils/pluginHelpers\";\nimport type { Core, UID } from '@strapi/strapi';\n\n\nconst bootstrap = async ({ strapi }: { strapi: Core.Strapi }) => {\n if (!strapi.store) {\n throw new Error('strapi.store is undefined');\n }\n\n const pluginStore = strapi.store({ type: 'plugin', name: 'webatlas' });\n\n const config = await pluginStore.get({\n key: \"config\",\n }) as PluginConfig;\n\n if (!config?.selectedContentTypes) return\n\n strapi.db?.lifecycles.subscribe({\n models: [waNavItem],\n\n async beforeDelete(event: any) {\n const id = event.params.where['id']\n\n if (!id) return\n\n try {\n const navItem = await strapi.db?.query(waNavItem).findOne({\n where: {\n id: id\n },\n populate: ['route']\n });\n \n event.state = navItem.route.id && !navItem.route.internal ? { id: navItem.route.id } : null\n } catch (err) {\n console.log(err)\n }\n },\n\n async afterDelete(event: any) {\n const { id } = event.state\n\n if (!id) return\n\n try {\n await strapi.db?.query(waRoute).delete({\n where: {\n id: id\n },\n });\n } catch (err) {\n console.log(err)\n }\n\n },\n })\n\n strapi.db?.lifecycles.subscribe({\n models: config.selectedContentTypes.map((type: any) => type.uid),\n \n async beforeCreate() {\n const validContentTypes = config.selectedContentTypes.filter((type: any) => strapi.contentTypes[type.uid]);\n await pluginStore.set({ key: \"config\", value: {selectedContentTypes: validContentTypes} });\n },\n \n async afterCreate(event: any) {\n const ctSettings: ConfigContentType | undefined = config.selectedContentTypes.find((type: any) => type.uid === event.model.uid);\n\n const {\n webatlas_path, \n webatlas_override\n } = event.params.data;\n\n if (!webatlas_path) return;\n\n const title = ctSettings?.default ? event.params.data[ctSettings.default] : '';\n\n const path = await duplicateCheck(transformToUrl(webatlas_path));\n await strapi.documents(waRoute as UID.ContentType).create({\n data: {\n relatedContentType: event.model.uid,\n relatedId: event.result.id,\n relatedDocumentId: event.result.documentId,\n slug: path,\n fullPath: path,\n uidPath: `${event.model.singularName}/${event.result.id}`,\n documentIdPath: event.result.documentId,\n isOverride: webatlas_override || false,\n title: title\n },\n });\n },\n\n async afterUpdate(event: any) {\n const ctSettings = config.selectedContentTypes.find((type: any) => type.uid === event.model.uid);\n\n const {\n webatlas_path, \n webatlas_override,\n documentId,\n } = event.params.data;\n\n if (!webatlas_path) return\n\n const relatedRoute = await strapi.db?.query(waRoute).findOne({\n where: {\n relatedDocumentId: documentId\n },\n });\n\n const title = ctSettings?.default ? event.params.data[ctSettings.default] : ''\n const path = await duplicateCheck(transformToUrl(webatlas_path))\n\n const routeData: any = {\n title,\n fullPath: path,\n slug: path,\n isOverride: webatlas_override || false,\n }\n \n if (!relatedRoute) {\n await strapi.documents(waRoute as UID.ContentType).create({\n data: {\n relatedContentType: event.model.uid,\n relatedId: event.result.id,\n relatedDocumentId: event.result.documentId,\n uidPath: `${event.model.singularName}/${event.result.id}`,\n documentIdPath: event.result.documentId,\n ...routeData\n }\n })\n } else {\n await strapi.documents(waRoute as UID.ContentType).update({ \n documentId: relatedRoute.documentId,\n data: {\n ...routeData\n }\n })\n }\n },\n\n async afterDelete(event: any) {\n try {\n await findAndDeleteNavItem(event.result.id, event.model.uid)\n } catch (err) {\n console.log(err)\n }\n },\n\n async afterDeleteMany(event: any) {\n const deletedArr = event.params.where['$and']\n\n deletedArr.map((item: {id: {'$in': number[]}}) => {\n const ids = item.id['$in']\n ids.map(async (id: number) => {\n await findAndDeleteNavItem(id, event.model.uid)\n })\n })\n }\n });\n};\n\nexport default bootstrap;\n\nasync function findAndDeleteNavItem (relatedId: number, relatedContentType: string) {\n\n if (!relatedId || !relatedContentType) return\n\n try {\n const route = await strapi.db?.query(waRoute).findOne({\n where: {\n relatedId: relatedId,\n relatedContentType: relatedContentType\n },\n });\n \n if (!route?.documentId) return\n \n const navItem = await strapi.db?.query(waNavItem).findOne({\n where: {\n route: {\n documentId: route.documentId\n }\n },\n });\n \n await strapi.documents(waRoute as UID.ContentType).delete({ documentId: route.documentId })\n if (navItem?.documentId) await strapi.documents(waNavItem as UID.ContentType).delete({ documentId: navItem.documentId })\n \n } catch (err) {\n console.log(err)\n }\n}","import type { Core } from '@strapi/strapi';\n\nconst destroy = ({ strapi }: { strapi: Core.Strapi }) => {\n // destroy phase\n};\n\nexport default destroy;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","import set from 'lodash/set';\nimport { Core } from '@strapi/strapi';\nimport type { ContentType } from '../../types'\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n Object.values(strapi.contentTypes).forEach((contentType: ContentType) => {\n\n // Only add fields to content types that have webatlas enabled in plugin options\n if (!contentType.pluginOptions?.webatlas?.active) return;\n\n const { attributes } = contentType;\n\n const fieldSettings = {\n writable: true,\n private: true,\n configurable: false,\n editable: false,\n visible: true,\n default: null,\n }\n\n set(attributes, 'webatlas_path', {\n ...fieldSettings,\n type: 'string',\n }); \n set(attributes, 'webatlas_override', {\n ...fieldSettings,\n type: 'boolean',\n }); \n });\n};\n","export default {\n default: {},\n validator() {},\n};\n","export default {\n collectionName: \"route\",\n info: {\n singularName: \"route\",\n pluralName: \"routes\",\n displayName: \"Route\",\n name: \"route\"\n },\n options: {\n increments: true,\n timestamps: true,\n comment: \"Route\"\n },\n pluginOptions: {\n \"content-manager\": {\n visible: true\n },\n \"content-type-builder\": {\n visible: false\n },\n },\n attributes: {\n relatedContentType: {\n type: \"string\",\n required: true,\n configurable: false,\n },\n relatedId: {\n type: \"integer\",\n required: true,\n configurable: false,\n },\n relatedDocumentId: {\n type: \"string\",\n required: true,\n configurable: false,\n },\n title: {\n type: \"string\",\n required: true,\n configurable: false,\n },\n fullPath: {\n type: \"string\",\n configurable: false,\n },\n slug: {\n type: \"string\",\n configurable: false,\n },\n uidPath: {\n type: \"string\",\n configurable: false,\n },\n documentIdPath: {\n type: \"string\",\n configurable: false,\n },\n isOverride: {\n type: 'boolean',\n default: false,\n configurable: false,\n },\n internal: {\n type: 'boolean',\n default: true,\n configurable: false,\n },\n active: {\n type: 'boolean',\n default: true,\n configurable: false,\n },\n navitem: {\n type: \"relation\",\n relation: \"oneToOne\",\n target: \"plugin::webatlas.navitem\",\n mappedBy: \"route\",\n configurable: false,\n },\n wrapper: {\n type: \"boolean\",\n default: false,\n configurable: false,\n },\n }\n}\n","\"use strict\"\n\nimport schema from \"./schema\";\n\nexport default {\n schema\n};","export default {\n collectionName: \"navigation\",\n info: {\n singularName: \"navigation\",\n pluralName: \"navigations\",\n displayName: \"Navigation\",\n name: \"navigation\"\n },\n options: {\n increments: true,\n comment: \"\"\n },\n pluginOptions: {\n \"content-manager\": {\n visible: false\n },\n \"content-type-builder\": {\n visible: false\n }\n },\n attributes: {\n name: {\n type: \"text\",\n configurable: false,\n required: true\n },\n slug: {\n type: \"uid\",\n target: \"name\",\n configurable: false,\n required: true\n },\n visible: {\n type: \"boolean\",\n default: false,\n configurable: false\n },\n items: {\n type: \"relation\",\n relation: \"oneToMany\",\n target: \"plugin::webatlas.navitem\",\n configurable: false,\n mappedBy: 'plugin::webatlas.navigation',\n },\n }\n}\n","\"use strict\"\n\nimport schema from \"./schema\";\n\nexport default {\n schema\n};","export default {\n collectionName: \"navitem\",\n info: {\n singularName: \"navitem\",\n pluralName: \"navitems\",\n displayName: \"Navigation Items\",\n name: \"navitems\"\n },\n options: {\n increments: true,\n comment: \"\"\n },\n pluginOptions: {\n \"content-manager\": {\n visible: false\n },\n \"content-type-builder\": {\n visible: false\n }\n },\n attributes: {\n navigation: {\n type: \"relation\",\n relation: \"manyToOne\",\n target: \"plugin::webatlas.navigation\",\n configurable: false,\n inversedBy: \"items\",\n },\n route: {\n type: \"relation\",\n relation: \"oneToOne\",\n target: \"plugin::webatlas.route\",\n inversedBy: \"navitem\",\n configurable: false,\n },\n parent: {\n type: \"relation\",\n relation: \"oneToOne\",\n target: \"plugin::webatlas.navitem\",\n configurable: false,\n },\n order: {\n type: \"integer\",\n default: 0,\n },\n }\n}\n","\"use strict\"\n\nimport schema from \"./schema\";\n\nexport default {\n schema\n};","\"use strict\"\n\nimport route from \"./route\";\nimport navigation from \"./navigation\";\nimport navitem from \"./navitem\";\n\nexport default {\n route,\n navigation,\n navitem\n};\n","import { getAdminService } from '../utils/pluginHelpers';\n\nconst admin = () => ({\n async updateConfig(ctx) {\n try {\n await getAdminService().updateConfig(ctx.request.body);\n } catch (e) {\n ctx.throw(500, e)\n }\n return ctx.send({ status: 200 });\n },\n async getConfig(ctx) {\n try {\n return await getAdminService().getConfig();\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async getRoutes(ctx) {\n try {\n return await getAdminService().getRoutes();\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async createExternalRoute (ctx) {\n try {\n const { data } = ctx.request.body;\n return await getAdminService().createExternalRoute(\n data,\n );\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async updateRoute (ctx) {\n try {\n const { documentId } = ctx.query;\n\n if (!documentId) return ctx.throw(400, 'Route documentId is required');\n\n const { data } = ctx.request.body;\n return await getAdminService().updateRoute(documentId, data);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async getNavigation (ctx) {\n try {\n const { documentId, variant } = ctx.query;\n\n return await getAdminService().getNavigation(documentId, variant);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async createNavigation (ctx) {\n try {\n const data = ctx.request.body;\n return await getAdminService().createNavigation(data);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async updateNavigation (ctx) {\n try {\n const { documentId } = ctx.query;\n\n if (!documentId) return ctx.throw(400, 'Navigation documentId is required');\n\n const { data } = ctx.request.body;\n return await getAdminService().updateNavigation(documentId, data);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async deleteNavigation (ctx) {\n try {\n const { documentId } = ctx.query;\n\n if (!documentId) return ctx.throw(400, 'Navigation documentId is required');\n\n return await getAdminService().deleteNavigation(documentId);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async createNavItem (ctx) {\n try {\n const { data } = ctx.request.body;\n return await getAdminService().createNavItem(data);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async updateNavItem (ctx) {\n try {\n const { documentId } = ctx.query;\n\n if (!documentId) return ctx.throw(400, 'NavItem documentId is required');\n\n const { data } = ctx.request.body;\n return await getAdminService().updateNavItem(documentId, data);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async deleteNavItem (ctx) {\n try {\n const { documentId } = ctx.query;\n\n if (!documentId) return ctx.throw(400, 'NavItem documentId is required');\n\n return await getAdminService().deleteNavItem(documentId);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n async checkUniquePath (ctx) {\n try {\n const { path, targetRouteDocumentId } = ctx.query\n\n if (!path) return ctx.throw(400, 'Path is required')\n \n return await getAdminService().checkUniquePath(path, targetRouteDocumentId || null);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n});\n\nexport default admin;","import { getClientService } from '../utils/pluginHelpers';\nimport type { Core } from '@strapi/strapi';\n\nconst client = ({ strapi }: { strapi: Core.Strapi }) => ({\n async getEntityByPath(ctx) {\n try {\n const { slug, populate, populateDeepDepth, fields } = ctx.query;\n\n if (!slug) return ctx.throw(400, 'Slug is required');\n\n const entity = await getClientService().getEntityByPath(slug, populate, populateDeepDepth, fields);\n\n if (!entity) return ctx.throw(404, 'Entity not found');\n\n return ctx.send(entity);\n } catch (e) {\n ctx.throw(500, e)\n }\n },\n async getNavigation (ctx) {\n try {\n const { id, name, documentId, variant } = ctx.query;\n\n if (!id && !name && !documentId) return ctx.throw(400, 'Navigation id, name or documentId is required');\n\n const navigation = await getClientService().getNavigation(id, name, documentId, variant);\n\n if (!navigation) return ctx.throw(404, 'Navigation not found');\n\n return ctx.send(navigation);\n } catch (e) {\n return ctx.throw(500, e)\n }\n },\n});\n\nexport default client;","import admin from './admin'\nimport client from './client'\n\nexport default {\n admin,\n client,\n}\n","export default {};\n","export default {};\n","export default {\n type: 'admin',\n routes: [\n {\n method: 'GET',\n path: '/config',\n handler: 'admin.getConfig',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'PUT',\n path: '/config',\n handler: 'admin.updateConfig',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'GET',\n path: '/route',\n handler: 'admin.getRoutes',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'POST',\n path: '/route/external',\n handler: 'admin.createExternalRoute',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'PUT',\n path: '/route',\n handler: 'admin.updateRoute',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'GET',\n path: '/navigation',\n handler: 'admin.getNavigation',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'POST',\n path: '/navigation',\n handler: 'admin.createNavigation',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'PUT',\n path: '/navigation',\n handler: 'admin.updateNavigation',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'DELETE',\n path: '/navigation',\n handler: 'admin.deleteNavigation',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'POST',\n path: '/navitem',\n handler: 'admin.createNavItem',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'PUT',\n path: '/navitem',\n handler: 'admin.updateNavItem',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'DELETE',\n path: '/navitem',\n handler: 'admin.deleteNavItem',\n config: {\n policies: [],\n auth: false,\n }\n },\n {\n method: 'GET',\n path: '/checkUniquePath',\n handler: 'admin.checkUniquePath',\n config: {\n policies: [],\n auth: false,\n }\n },\n ]\n}\n","export default {\n type: 'content-api',\n routes: [\n {\n method: 'GET',\n path: '/path',\n handler: 'client.getEntityByPath',\n config: {\n policies: [],\n }\n },\n {\n method: 'GET',\n path: '/navigation',\n handler: 'client.getNavigation',\n config: {\n policies: [],\n }\n },\n ]\n}\n","import admin from './admin'\nimport client from './client'\n\nexport default {\n admin,\n 'content-api': client,\n}","export default function getFullPath(parentPath: string, slug: string) {\n\n\tif (!slug) return null;\n\tif (!parentPath) return slug;\n\n\tconst newPath = parentPath.endsWith('/') ? parentPath : `${parentPath}/`;\n\n\treturn `${newPath}${slug}`;\n}","import { NestedNavigation, NestedNavItem, StructuredNavigationVariant } from \"../types\";\n\nexport default function buildStructuredNavigation(navigation: NestedNavigation, variant: StructuredNavigationVariant = 'nested') {\n const itemsById = new Map<number, NestedNavItem>();\n const rootItems: NestedNavItem[] = [];\n\n if (!navigation.items || navigation.items?.length === 0) return navigation\n\n // First pass: create a map of all items by id and initialize their items array\n navigation.items.forEach(item => {\n itemsById.set(item.id, { ...item, items: [] });\n });\n\n if (variant === 'nested') {\n // Second pass: assign items to their parent's items array or to the root items array\n navigation.items.forEach(item => {\n const newItem = itemsById.get(item.id);\n if (!newItem) return null\n if (item.parent) {\n const parentItem = itemsById.get(item.parent.id);\n parentItem && parentItem.items.push(newItem);\n } else {\n rootItems.push(newItem);\n }\n });\n\n // Sort root items and their nested items\n sortItems(rootItems);\n\n // Return a new object with the nested and sorted items\n return { ...navigation, items: rootItems };\n } else if (variant === 'flat') {\n // Assign items to their parent's items array or to the root items array\n let itemsToProcess = [...navigation.items];\n let itemsProcessed = new Set();\n\n while (itemsToProcess.length > 0) {\n const remainingItems: NestedNavItem[] = [];\n\n itemsToProcess.forEach(item => {\n const newItem = itemsById.get(item.id);\n if (!newItem) return null;\n\n if (item.parent) {\n const parentItem = itemsById.get(item.parent.id);\n\n if (!parentItem || !itemsProcessed.has(item.parent.id)) {\n // Defer processing this item until the parent is processed\n remainingItems.push(item);\n return;\n }\n\n newItem.depth = parentItem.depth !== undefined ? parentItem.depth + 1 : 0;\n parentItem.items.push(newItem);\n } else {\n newItem.depth = 0;\n rootItems.push(newItem);\n }\n\n itemsById.set(item.id, newItem);\n itemsProcessed.add(item.id);\n });\n\n itemsToProcess = remainingItems;\n }\n // Flatten and sort the items\n const sortedItems = sortItems(rootItems);\n const flattenedItems = flattenItems(sortedItems);\n \n // Return the sorted items\n return { ...navigation, items: flattenedItems };\n }\n}\n\n// Helper function to flatten the nested items into a sorted array\nconst flattenItems = (items: any[], result: any[] = []) => {\n items.forEach(item => {\n const itemCopy = { ...item }\n delete itemCopy.items\n result.push(itemCopy)\n\n if (item.items && item.items.length > 0) {\n flattenItems(item.items, result);\n }\n });\n return result;\n};\n\n// Helper function to sort items by route.order\nconst sortItems = (items: NestedNavItem[]) => {\n items.sort((a, b) => a.order - b.order);\n items.forEach(item => {\n if (item.items && item.items.length > 0) {\n sortItems(item.items);\n }\n });\n\n return items\n};\n\n","import { NestedNavItem } from \"../types\";\nimport { PLUGIN_ID } from \"../pluginId\";\n\nexport default function extractRouteAndItems(items: NestedNavItem[]) {\n return items.map((item: any) => {\n\n const route = { ...item.route }\n\n if (item.depth) {\n route.depth = item.depth;\n }\n\n if (item.items?.length > 0) {\n const items = extractRouteAndItems(item.items);\n if (items.length > 0) route.items = items;\n }\n\n let type\n\n if (!route.internal && route.wrapper) \n type = 'wrapper'\n else if (!route.internal && !route.wrapper)\n type = 'external'\n else\n type = 'internal'\n\n delete route.relatedContentType\n delete route.relatedId\n delete route.createdAt\n delete route.updatedAt\n delete route.isOverride\n delete route.internal\n delete route.wrapper\n \n return { \n __component: type === 'wrapper' ? `${PLUGIN_ID}.wrapper` : `${PLUGIN_ID}.route`,\n type: type,\n ...route\n };\n });\n}","function isEmpty(value: any): boolean {\n if (value == null) return true;\n if (Array.isArray(value) || typeof value === 'string') return value.length === 0;\n if (typeof value === 'object') return Object.keys(value).length === 0;\n return false;\n}\n\nfunction merge(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n target[key] = merge(target[key] || {}, source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n}\n\n/*\n* Base code from strapi-plugin-populate-deep\n*\n* https://www.npmjs.com/package/strapi-plugin-populate-deep\n* https://github.com/Barelydead/strapi-plugin-populate-deep\n* \n* */\n\nimport type { UID, Schema } from '@strapi/strapi';\n\nconst getModelPopulationAttributes = (model: Schema.Component | Schema.ContentType) => {\n if (model.uid === \"plugin::upload.file\") {\n const { related, ...attributes } = model.attributes;\n return attributes;\n }\n return model.attributes;\n};\n\nexport default function getFullPopulateObject(\n modelUid: UID.Schema, \n maxDepth = 20, \n ignore: string[] = []\n) {\n\n if (maxDepth <= 1) {\n return true;\n }\n\n if (modelUid === \"admin::user\") {\n return false;\n }\n\n const populate: Record<string, boolean | Record<string, any>> = {};\n const model = strapi.getModel(modelUid);\n\n if (model.collectionName && !ignore.includes(model.collectionName)) {\n ignore.push(model.collectionName);\n } else if (model.collectionName && ignore.includes(model.collectionName)) {\n return true\n }\n\n for (const [key, value] of Object.entries(\n getModelPopulationAttributes(model)\n )) {\n if (ignore?.includes(key)) continue\n if (value) {\n if (value.type === \"component\") {\n populate[key] = getFullPopulateObject(value.component, maxDepth - 1, ignore);\n } else if (value.type === \"dynamiczone\") {\n const dynamicPopulate = value.components.reduce((prev, cur) => {\n const curPopulate = getFullPopulateObject(cur, maxDepth - 1, ignore);\n if (curPopulate === true) {\n return prev; // Skip if curPopulate is true\n }\n return merge(prev, curPopulate as Record<string, any>);\n }, {} as Record<string, any>);\n \n populate[key] = isEmpty(dynamicPopulate) ? true : dynamicPopulate; \n } else if (value.type === \"relation\") {\n const relationPopulate = getFullPopulateObject(\n //@ts-ignore\n value.target,\n (key === 'localizations') && maxDepth > 2 ? 1 : maxDepth - 1,\n ignore\n );\n\n if (relationPopulate) populate[key] = relationPopulate;\n } else if (value.type === \"media\") {\n populate[key] = true;\n }\n }\n }\n return isEmpty(populate) ? true : { populate };\n};\n","export default function cleanRootKeys(obj: any): any {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const value = obj[key];\n if (value === null || \n (Array.isArray(value) && value.length === 0) || \n (typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0)) {\n delete obj[key];\n }\n }\n }\n return obj;\n}\n","export default function removeWaFields(obj: any): any {\n \n delete obj['webatlas_path']\n delete obj['webatlas_override']\n\n return obj;\n}\n","import { ContentType, NavigationInput, NavItemSettings, Route, StructuredNavigationVariant } from \"../../../types\";\nimport duplicateCheck from \"../utils/duplicateCheck\";\nimport { getFullPath, buildStructuredNavigation, transformToUrl } from \"../../../utils\";\nimport { waRoute, waNavigation, waNavItem } from \"../utils/pluginHelpers\";\nimport { PLUGIN_ID } from \"../../../pluginId\";\n\nexport default ({strapi}) => ({\n\n async updateConfig(newConfig) {\n if (!newConfig || !newConfig.selectedContentTypes) return\n\n try {\n const routes = await strapi.documents(waRoute).findMany();\n const invalidRoutes = routes.filter((route: Route) => !newConfig.selectedContentTypes.find((type: ContentType) => type.uid === route.relatedContentType));\n\n invalidRoutes?.map(async (route: Route) => {\n await strapi.documents(waRoute).delete({\n documentId: route.documentId\n })\n })\n } catch (err) {\n console.log(err)\n return \"Error. Couldn't delete invalid routes\"\n }\n\n const pluginStore = await strapi.store({ type: 'plugin', name: PLUGIN_ID });\n await pluginStore.set({ key: \"config\", value: newConfig });\n },\n\n async getConfig() {\n const pluginStore = await strapi.store({ type: 'plugin', name: PLUGIN_ID });\n let config = await pluginStore.get({\n key: \"config\",\n });\n\n if (!config) {\n config = await pluginStore.set({\n key: \"config\",\n value: {\n selectedContentTypes: [],\n },\n });\n }\n\n return config\n },\n\n async getRoutes() {\n try {\n // TODO: populate parent and navigation?\n const entities = await strapi.documents(waRoute).findMany();\n return entities;\n } catch (e) {\n console.log(e)\n }\n },\n\n async createExternalRoute(data) {\n try {\n return await strapi.documents(waRoute).create({\n data: {\n title: data.title,\n slug: data.fullPath,\n fullPath: data.fullPath,\n relatedContentType: '',\n relatedId: 0,\n relatedDocumentId: '',\n uidPath: '',\n internal: false,\n wrapper: data.wrapper,\n },\n });\n } catch (e) {\n console.log(e)\n }\n },\n\n async updateRoute(documentId: string, data: any) {\n try {\n let checkedPath = data.fullPath\n\n if (data.internal) {\n const parent = data.parent ? await strapi.documents(waNavItem).findOne({\n documentId: data.parent\n }) : null;\n \n const fullPath = data.isOverride ? data.slug : getFullPath(parent?.fullPath, data.slug)\n checkedPath = await duplicateCheck(fullPath, documentId);\n }\n\n const entity = await strapi.documents(waRoute).update({\n documentId: documentId,\n data: {\n ...data,\n fullPath: checkedPath,\n }\n });\n\n return entity;\n } catch (e) {\n console.log(e)\n }\n },\n\n async getNavigation(documentId?: string, variant?: StructuredNavigationVariant) {\n try {\n\n let navigation = null\n\n if (documentId) {\n navigation = await strapi.documents(waNavigation).findOne({\n documentId: documentId,\n populate: ['items', \"items.route\", \"items.parent\"]\n });\n } else {\n navigation = await strapi.documents(waNavigation).findMany({\n populate: ['items', \"items.route\", \"items.parent\"],\n });\n }\n\n if (!navigation) throw new Error(\"Navigation not found\");\n\n if (variant) {\n navigation = buildStructuredNavigation(navigation, variant)\n }\n\n return navigation\n } catch (e) {\n console.log(e)\n }\n },\n\n async createNavigation(data) {\n try {\n const navigation = await strapi.documents(waNavigation).create({\n data: {\n name: data.name,\n slug: transformToUrl(data.name),\n visible: data.isActive,\n },\n });\n return navigation\n } catch (e) {\n console.log(e)\n }\n },\n\n async updateNavigation(documentId: string, data: NavigationInput) {\n try {\n const entity = await strapi.documents(waNavigation).update({\n documentId: documentId,\n data: {\n name: data.name,\n visible: data.visible,\n }\n });\n return entity\n } catch (e) {\n console.log(e)\n }\n },\n\n async deleteNavigation(documentId: string) {\n try {\n return await strapi.documents(waNavigation).delete({\n documentId: documentId\n })\n } catch (e) {\n console.log(e)\n }\n },\n\n async createNavItem(data: NavItemSettings) {\n try {\n if (!data.route || !data.navigation) return false\n\n const parent = data.parent ? await strapi.documents(waNavItem).findOne({\n documentId: data.parent,\n populate: ['route']\n }) : null;\n\n const route = data.route ? await strapi.documents(waRoute).findOne({\n documentId: data.route\n }) : null;\n\n let fullPath = route.slug\n\n if (route.internal && !route.isOverride && parent?.route.internal) fullPath = getFullPath(parent?.route?.fullPath, route.slug)\n\n await strapi.documents(waRoute).update({\n documentId: data.route,\n data: {\n fullPath,\n }\n });\n\n // TODO: Update webatlas fields in related entity\n // await strapi.documents(route.relatedContentType).update({\n // documentId: route.relatedDocumentId,\n // data: {\n // webatlas_path: fullPath\n // }\n // });\n\n const entity = await strapi.documents(waNavItem).create({\n data: {\n navigation: data.navigation,\n route: data.route || null,\n parent: data.parent || null,\n },\n });\n\n return entity;\n } catch (e) {\n console.log(e)\n }\n },\n\n async updateNavItem(documentId: string, data: NavItemSettings) {\n try {\n return await strapi.documents(waNavItem).update({\n documentId: documentId,\n data: {\n navigation: data.navigation || null,\n route: data.route || null,\n parent: data.parent || null,\n order: data.order || 0,\n }\n });\n } catch (e) {\n console.log(e)\n }\n },\n\n async deleteNavItem(documentId: string) {\n try {\n await strapi.documents(waNavItem).delete({\n documentId: documentId\n })\n return true\n } catch (e) {\n console.log(e)\n }\n },\n\n async checkUniquePath(initialPath: string, targetRouteDocumentId: string | null = null) {\n try {\n return await duplicateCheck(initialPath, targetRouteDocumentId);\n } catch (e) {\n console.log(e)\n }\n },\n})\n\n","import { buildStructuredNavigation, extractRouteAndItems, getFullPopulateObject, cleanRootKeys, removeWaFields } from \"../../../utils\";\nimport { StructuredNavigationVariant } from \"../../../types\";\nimport { waRoute, waNavigation} from \"../utils/pluginHelpers\";\n\nexport default ({strapi}) => ({\n async getEntityByPath(slug: string, populate: string, populateDeepDepth: string, fields: any) {\n try {\n const route = await strapi.db?.query(waRoute).findOne({\n filters: { \n $or: [\n { fullPath: slug},\n { slug: slug },\n { uidPath: slug },\n ], \n },\n });\n\n if (!route) return null\n \n let populateObject: string | Record<string, boolean | Record<string, any>> = populate\n \n if (populate === 'deep') {\n const modelObject = getFullPopulateObject(route.relatedContentType, Number(populateDeepDepth), []);\n if (typeof modelObject === 'object' && 'populate' in modelObject) {\n populateObject = modelObject.populate;\n }\n }\n \n const contentTypeObject: any = Object.entries(strapi.contentTypes).find(([key, value]) => key === route.relatedContentType)\n \n if (!contentTypeObject) {\n return null\n } \n \n const [contentTypeKey, contentType] = contentTypeObject;\n\n const entity = await strapi.documents(route.relatedContentType).findOne({\n documentId: route.documentIdPath,\n populate: populateObject,\n fields: fields\n });\n\n if (!entity) return null\n\n let cleanEntity = cleanRootKeys(entity)\n cleanEntity = removeWaFields(cleanEntity)\n\n return { contentType: contentType.info.singularName, ...cleanEntity }\n } catch (e) {\n console.log(e)\n return e\n }\n },\n async getNavigation(id: string, name: string, documentId: string, variant: StructuredNavigationVariant = 'nested') {\n try {\n let navigation = null\n \n if (documentId) {\n navigation = await strapi.documents(waNavigation).findOne({\n documentId: documentId,\n populate: ['items', \"items.parent\", \"items.route\"]\n });\n } else if (name) {\n navigation = await strapi.db?.query(waNavigation).findOne({\n where: { \n name: name\n },\n populate: ['items', \"items.parent\", \"items.route\"],\n });\n } else if (id) {\n navigation = await strapi.db?.query(waNavigation).findOne({\n where: { \n id: id\n },\n populate: ['items', \"items.parent\", \"items.route\"],\n });\n }\n \n if (!navigation) return null\n \n const structured = buildStructuredNavigation(navigation, variant)\n\n if (!structured) return null\n\n const entityNavigation = extractRouteAndItems(structured.items)\n\n return {...structured, items: entityNavigation }\n } catch (e) {\n console.log(e)\n return e\n }\n },\n})\n","import admin from './admin'\nimport client from './client'\n\nexport default {\n admin,\n client,\n}\n","/**\n * Application methods\n */\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport register from './register';\n\n/**\n * Plugin server methods\n */\nimport config from './config';\nimport contentTypes from './content-types';\nimport controllers from './controllers';\nimport middlewares from './middlewares';\nimport policies from './policies';\nimport routes from './routes';\nimport services from './services';\n\nexport default {\n register,\n bootstrap,\n destroy,\n config,\n controllers,\n routes,\n services,\n contentTypes,\n policies,\n middlewares,\n};\n"],"names":["route","strapi","config","type","freeGlobal","global","require$$0","root","Symbol","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","objectToString","require$$1","require$$2","baseGetTag","isObject","isFunction","coreJsData","isMasked","funcProto","funcToString","toSource","require$$3","baseIsNative","getValue","getNative","defineProperty","baseAssignValue","eq","assignValue","isArray","isObjectLike","isSymbol","isKey","nativeCreate","hashClear","hashDelete","HASH_UNDEFINED","hashGet","hashHas","hashSet","require$$4","Hash","index","listCacheClear","assocIndexOf","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","isKeyable","getMapData","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","memoize","memoizeCapped","stringToPath","arrayMap","INFINITY","baseToString","toString","castPath","isIndex","toKey","baseSet","set","schema","admin","client","name","navigation","items","routes"],"mappings":"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","x_google_ignoreList":[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61]}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.0",
2
+ "version": "0.1.1",
3
3
  "keywords": [],
4
4
  "type": "commonjs",
5
5
  "exports": {
@@ -89,13 +89,13 @@
89
89
  "author": {
90
90
  "name": "Matti Svensson",
91
91
  "email": "mattisvensson@web.de",
92
- "url": "https://mattisvensson.com"
92
+ "url": "https://mattisvensson.dev"
93
93
  },
94
94
  "maintainers": [
95
95
  {
96
96
  "name": "Matti Svensson",
97
97
  "email": "mattisvensson@web.de",
98
- "url": "https://mattisvensson.com"
98
+ "url": "https://mattisvensson.dev"
99
99
  }
100
100
  ],
101
101
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"