Files
nextcloud-server/dist/folder-29HuacU_-GslSi8fz.chunk.mjs.map
nextcloud-command 78098c8325 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-04-01 13:41:02 +00:00

1 line
22 KiB
Plaintext

{"version":3,"file":"folder-29HuacU_-GslSi8fz.chunk.mjs","sources":["../node_modules/@nextcloud/files/dist/chunks/folder-29HuacU_.mjs"],"sourcesContent":["import { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { join, encodePath, basename, extname, dirname } from \"@nextcloud/paths\";\nwindow._nc_files_scope ??= {};\nwindow._nc_files_scope.v4_0 ??= {};\nconst scopedGlobals = window._nc_files_scope.v4_0;\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nconst FileType = Object.freeze({\n Folder: \"folder\",\n File: \"file\"\n});\nconst Permission = Object.freeze({\n /**\n * No permissions granted\n */\n NONE: 0,\n /**\n * Can read the file content\n */\n READ: 1,\n /**\n * Can modify the file itself (move, rename, etc)\n */\n UPDATE: 2,\n /**\n * Can create new files/folders inside a folder\n */\n CREATE: 4,\n /**\n * Can change the file content\n */\n WRITE: 4,\n /**\n * Can delete the node\n */\n DELETE: 8,\n /**\n * Can share the node\n */\n SHARE: 16,\n /**\n * All permissions are granted\n */\n ALL: 31\n});\nconst NodeStatus = Object.freeze({\n /** This is a new node and it doesn't exists on the filesystem yet */\n NEW: \"new\",\n /** This node has failed and is unavailable */\n FAILED: \"failed\",\n /** This node is currently loading or have an operation in progress */\n LOADING: \"loading\",\n /** This node is locked and cannot be modified */\n LOCKED: \"locked\"\n});\nfunction isDavResource(source, davService) {\n return source.match(davService) !== null;\n}\nfunction validateData(data, davService) {\n if (data.id && typeof data.id !== \"number\" && typeof data.id !== \"string\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (!data.root) {\n throw new Error(\"Missing mandatory root\");\n }\n if (typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (!data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (!data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n}\nfunction fixDates(data) {\n if (data.mtime && typeof data.mtime === \"string\") {\n if (!isNaN(Date.parse(data.mtime)) && JSON.stringify(new Date(data.mtime)) === JSON.stringify(data.mtime)) {\n data.mtime = new Date(data.mtime);\n }\n }\n if (data.crtime && typeof data.crtime === \"string\") {\n if (!isNaN(Date.parse(data.crtime)) && JSON.stringify(new Date(data.crtime)) === JSON.stringify(data.crtime)) {\n data.crtime = new Date(data.crtime);\n }\n }\n}\nfunction fixRegExp(pattern) {\n if (pattern instanceof RegExp) {\n return pattern;\n }\n const matches = pattern.match(/(\\/?)(.+)\\1([a-z]*)/i);\n if (!matches) {\n throw new Error(\"Invalid regular expression format.\");\n }\n const validFlags = Array.from(new Set(matches[3])).filter((flag) => \"gimsuy\".includes(flag)).join(\"\");\n return new RegExp(matches[2], validFlags);\n}\nclass Node {\n _attributes;\n _data;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n }\n };\n constructor(...[data, davService]) {\n if (!data.mime) {\n data.mime = \"application/octet-stream\";\n }\n fixDates(data);\n davService = fixRegExp(davService || this._knownDavService);\n validateData(data, davService);\n this._data = {\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n validateData({ ...this._data, displayname }, this._knownDavService);\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n return dirname(this.path);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime || \"application/octet-stream\";\n }\n /**\n * Set the file mime\n * Removing the mime type will set it to `application/octet-stream`\n */\n set mime(mime) {\n mime ??= \"application/octet-stream\";\n validateData({ ...this._data, mime }, this._knownDavService);\n this._data.mime = mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n validateData({ ...this._data, mtime }, this._knownDavService);\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n validateData({ ...this._data, size }, this._knownDavService);\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n validateData({ ...this._data, permissions }, this._knownDavService);\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n const idx = this.source.indexOf(\"://\");\n const protocol = this.source.slice(0, idx);\n const remainder = this.source.slice(idx + 3);\n const slashIndex = remainder.indexOf(\"/\");\n const host = remainder.slice(0, slashIndex);\n const rawPath = remainder.slice(slashIndex);\n const safeUrl = `${protocol}://${host}${encodePath(rawPath)}`;\n const url = new URL(safeUrl);\n let source = decodeURIComponent(url.pathname);\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n /**\n * Get the nodes file id if defined.\n * There is no setter as the fileid is not meant to be changed.\n *\n * @deprecated Nextcloud is migrating to snowflake ids which are strings. Use the `id` attribute instead.\n */\n get fileid() {\n return typeof this._data?.id === \"number\" ? this._data.id : void 0;\n }\n /**\n * Get the nodes id - if defined.\n *\n * Note: As Nextcloud is migrating to snowflake ids the id has to be a string,\n * due to limitations of the JavaScript number type (snowflake ids are 64bit JavaScript numbers can only accurately represent integers up to 53 bit).\n */\n get id() {\n if (typeof this._data?.id === \"undefined\" || typeof this._data.id === \"number\" && this._data.id < 0) {\n return void 0;\n }\n return String(this._data.id);\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n validateData({ ...this._data, status }, this._knownDavService);\n this._data.status = status;\n }\n /**\n * Move the node to a new destination\n *\n * @param destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n /**\n * Returns a clone of the node\n */\n clone() {\n return new this.constructor(structuredClone(this._data), this._knownDavService);\n }\n /**\n * JSON representation of the node\n */\n toJSON() {\n return JSON.stringify([structuredClone(this._data), this._knownDavService.toString()]);\n }\n}\nclass File extends Node {\n constructor(...[data, davService]) {\n super(data, davService);\n }\n get type() {\n return FileType.File;\n }\n}\nclass Folder extends Node {\n constructor(...[data, davService]) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n }, davService);\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n}\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n File as a,\n Folder as b,\n NodeStatus as c,\n logger as l,\n scopedGlobals as s\n};\n//# sourceMappingURL=folder-29HuacU_.mjs.map\n"],"names":["scopedGlobals","logger","getLoggerBuilder","FileType","Permission","NodeStatus","isDavResource","source","davService","validateData","data","service","join","fixDates","fixRegExp","pattern","matches","validFlags","flag","Node","e","target","prop","value","origin","encodePath","basename","displayname","extname","dirname","mime","mtime","size","permissions","idx","protocol","remainder","slashIndex","host","rawPath","safeUrl","url","firstMatch","root","status","destination","oldBasename","basename2","attributes","name","File","Folder"],"mappings":"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","x_google_ignoreList":[0]}