Skip to content

Releases: OpenMarshal/npm-WebDAV-Server

v2.3.0

20 Aug 12:06
Compare
Choose a tag to compare

New features

  • Added the storage manager to allow to limit the storage 74094e3
  • Added a method in the server to give the listing of resources 18f0e3a
  • Added a 'autoSave' method to the server to start the auto-save without starting the HTTP server 481413d
  • Added 'before-*' file system events 8763396
  • Added support for the sequence/multipart, start and end types of the 'Range' header in the 'GET' method dd23bfc
  • Added 'Range' support in the 'HEAD' method to better fit the 'GET' response without body 6ebfd98
  • Added server wide events 6786998
  • Added file system wide events 9a5688c
  • Allow to override the privilege checking in the context to allow special operations (list all locks, for instance) b96fde6
  • Added the 'isLocked' method in the 'Resource' class and in the 'ContextualFileSystem' class 7e3a142
  • Modified the 'FileSystem' class and the serialization method to skip/allow non-serializable file system (skip the serialization of a fs if 'fs.serializer()' returns null/undefined) 43acf3f

Changes

  • Added headers to allow cross domain access to the server 654886c
  • Removed the decoding in the 'Path' class ad5c8a6
  • Removed the URL encoding in the 'href' tags and in the 'displayname' tags 014820b
  • Use 'xml-js-builder' npm package instead of built-in XML manager 15e4f2d
  • Modified the 'VirtualSerializer' class serialize 'resources' into a property of the serialized object instead of being the serialized object 2833836
  • Added the 'VirtualSerializerVersions' and 'PhysicalSerializerVersions' object to provide a list of versions of the serializers 2833836
  • Modified the class name from '_VirtualFileSystemResource' into 'VirtualFileSystemResource' 8e8b425
  • Modified the class name from '_PhysicalFileSystemResource' into 'PhysicalFileSystemResource' a09fe35
  • Removed the initial GZip/GUnZip of the persistence => now it is a default behaviour ac1fd34
  • Modified the 'IAutoSave' interface to fit cases ac1fd34
  • Modified the LOCK method to make the owner tag optional 7a34231
  • The default behaviour of the 'size' method in the 'FileSystem' class is now to return 'undefined' as value (= cannot tell the size) 4aed15f
  • Made the 'Content-Length' header optional in the response when no size can be obtained 0f1cdcd

Documentation

  • Added a 2nd example of creating a custom method for the server d191897
  • Added a README to the examples folder 5efdead
  • Added the use of the method in the 'Custom Method' example c9f34e3
  • Added a note to the README of the 'Custom Method' example e58fdaf
  • Added the 'Custom Method' example eadb2b8
  • Added comments to describe methods of the 'FileSystem' class and the 'FileSystemSerializer' interface for better code completion details e95de1a
  • Fixed the missing description of the 2nd example in the README 218d907
  • Added the '@webdav-server' npm packages information in the README d80b6ab
  • Fixed wrong place of the deprecated comment b6ed379

Tests

  • Added the ability to fail a streaming request in the tests (v2) 6eb0cd0
  • Added tests for the quotas d191d72
  • Added tests for the 'server.listResources(...)' method 0caed21
  • Added more tests for the 'Range' header of the 'Get' method :
  • Added more server ports to the tests of the v2 :
  • Added tests for the events f8d8969
  • Added tests for the ranged GET 647a8c3
  • Upgraded the tests for the persistence to fail if the an error occurs while saving 7f7a3cd

Other

  • Removed forgotten 'console.log' 3277908
  • Exported the 'IRange' interface of the 'Range' header parsing 961f1e7
  • Exported the 'Range' header parser to be usable in the 'GET' and 'HEAD' methods a2aabce
  • Excluded the folder experiment :
  • Cleaned the code :
  • Removed the 'no-conditional-assignment' lint 03105d9

Bug fix

  • Fixed custom properties' attributes removing the property namespace (xmlns) 70c5341
  • Fixed the missing 'lock' argument in the callback of the 'refresh' method of the lock manager returned in the 'FileSystem' class 3dae2aa
  • Fixed the delete method in the 'PhysicalFileSystem' class da9abf0
  • Fixed the GET Range 3b2d11f
  • Fixed a bug on the mkcol method 4dcabe7
  • Fixed the URL decoding in the 'Path' class to be able to work with fully encoded and partially encoded URL 5a743a9
  • Fixed wrong content length when the content contains special characters + Specified the encoding when writing to the response body (UTF-8) + Minimified the 'Content-Type' header in the 'writeBody' method of the 'RequestContext' class c12096a
  • Fixed the 'HTTPDigestAuthentication' class of the v1 and v2 to work with the level 0 of the digest authentication 6247297
  • Fixed the 'LOCK' method which needed the 'owner' in the lock properties (which was made optional in the past) 21a4a94
  • Fixed a bug saying that the callback is not a function when calling the 'readDir' method of a file system 57056d0
  • Fixed the standard copy/move methods to copy/move the source content of the resource ec0144e
  • Fixed the HEAD method crashing when the size of a resource is undefined de276ff
  • Fixed the constructor by copy of the 'LocalPropertyManager' class and the 'LocalLockManager' class a5fb4c0
  • Fixed the persistence (untriggered close event on saving) 7e7f86d
  • Fixed the 'create' method of the 'FileSystem' class which was not creating more than 1 intermediate *[4b1cb25](https://github.com/OpenMarshal/npm-WebDAV-Server...
Read more

v2.0.0

30 Jun 15:49
Compare
Choose a tag to compare

New features

  • Version 2!
  • Added the body written through the 'writeBody(...)' method as property of the 'RequestContext' class 266e900
  • Added the attributes to the stored properties affected by PROPPATCH f8f6e00
  • Added the reverse operation in the PROPPATCH method to fit the RFC (1 error => reverse changes) f14cde3
  • Added an error in the 'Errors' bundle to say that the user has not enough privilege f488ecc
  • Modified the 'Workflow' class to stop some executions when possible if the workflow ended e0e4232
  • Implemented the 'SimplePathPrivilegeManager' class to manage privileges based on the path 6656596
  • Implemented the PrivilegeManager [v2] 4c526b8
  • Implemented the v2 6e58ac6
  • The XML helper will now throw a more meaningful error message when the 'find(...)' method doesn't find the XMLElement, helping for debugging b49c35a
  • Added the depth to the 'Lock' class fbeeb71

Changes

  • Changed to check by reference by default when seeking for a file system e39fd71
  • Added the user as argument in the privilege managers 8908c87
  • Splitted the 'RequestContext' class into 'RequestContext', 'ExternalRequestContext' and 'HTTPRequestContext' faf8581
  • Added a constructor to help unserialization in the 'LocalPropertyManager' class and the 'LocalLockManager' class0e78d10 Fixed the 'PhysicalFileSystem' class f8b3b46
  • The user used by the 'createExternal(...)' static method of the 'RequestContext' class is now a super-admin user unreferenced by the user manager 50e1194
  • Made the callback optional in the 'addSubTree' of the 'FileSystem' class d81a883
  • Removed the event system from the server 882ca71
  • Made the 'treeFilePath' server option of 'autoLoad' optional (default value is the 'treeFilePath' of 'autoSave') 386f04a
  • Changed the type of the 'privilegeManager' server option from the old 'IPrivilegeManager' to the new 'PrivilegeManager' 386f04a
  • Added the 'CreateExternalContext' method to the server class to ease the creation of external contexts 358e2ee
  • Changed the type of the 'path' argument of the methods in 'FileSystem', 'ContextualFileSystem' and 'Resource' from 'Path' to 'Path | string' to be more easy to use 5c987c6
  • Added the 'PrivilegeManagerInfo' interface 4d29192
  • Added the 'destinationPath' to the 'RenameInfo' interface 4d29192
  • Added the 'setCodeFromError' method and the 'defaultStatusCode' method to the 'RequestContext' class 8cf9a53
  • Added an error class for unserialization error (when the serializer is not found) f488ecc
  • Added some standard errors to the 'Errors' bundle 37afaaa

Documentation

  • Upgraded the README 29086af
  • Fixed the README example 77c44cd
  • Fixed the example 'Web Resource' 75ff834
  • Deprecated the v1 'WebDAVServer' class 2c609e7
  • Added the 'webResource' example for the v2 d406d81
  • Splitted the 'examples' folder into 'v1' and 'v2' :

Tests

  • Fixed the tests to use the new 'RequestContext' implementation 6d41b1b
  • Added a 'nbReservedSocketPerTest' in the test framework of the v2 72696ad
  • Added tests for the PROPPATCH method [v2] 2be8b93
  • Added test for the MOVE and COPY methods [v2] 0c5e114
  • Added tests for the 'addSubTree' method of the server/file systems [v2] 5d5d3a2
  • Added tests for the HEAD method 651f797
  • Added tests for the MKCOL method d895732
  • Added tests for the DELETE method 59e4201
  • Upgraded the test framework of the v2 a9edc7e
  • Added test for the persistence [v2] deb443b
  • Added test for the LOCK and UNLOCK methods [v2] 37f17a0
  • Fixed the tests for node.js:5 and node.js:4 b43ba41
  • Modified the tests to use 'server.rootFileSystem()' method instead of the removed 'server.rootFileSystem' property 7c7874c
  • Updated the test commands to compile the TypeScript, run the tests for the v2, then run the tests for the v2 3f6c274
  • Added tests for the lock/unlock methods (v2) 70717b2
  • Added tests for the OPTIONS method (v2) 6e5981a
  • Added tests for the readDir/propfind on a directory (v2) 9ce23d1
  • Added tests for the read/write get/put methods (v2) b801535
  • Added tests for the server management (v2) 735e2ed
  • Added TypeScript tests for better test developments f5b48a7
  • Upgraded the test framework to be more clean and ease the making of new tests 74c381c
  • Splitted the 'test' folder into 'v1' and 'v2' ac88f11

Other

  • Cleaned the code 1a46154
  • Updated the '@types/node' dev dependency 6491270
  • Exported the 'PrivilegeManager' class and the 'SimplePathPrivilegeManager' class f258c99
  • Added the 'Forbidden' standard error a209249
  • Implemented the lock check 0b41e28
  • Implemented the privilege checks 0b41e28
  • Removed the FTP packages in the npm dependencies 3733df7
  • Removed the old files from when the v2 was contained in one file 04762e9
  • Removed the empty 'requirePrivilege' methods in the 'RequestContext' class 8cf9a53
  • Moved the 'FTPFileSystem' class to the '@webdav-server/ftp' package 5c04125
  • Exported the v1 within the v1 scope too 1cc4a03
  • Exported the v2 90a6556
  • Fixed Travis CI missing 'tsc' d4850b7
  • Modified the 'tsconfig.json' file to make TypeScript compile with comments by default 6e7acd8
  • Added the TS types for the 'request' package *[3f6c274](ht...
Read more

v1.9.1

20 Jun 13:10
Compare
Choose a tag to compare

New features

  • Implemented the physical gateway and its FSManager d0aa8c8
  • Implemented the static methods 'standardMoveWithoutCopy', 'standardMoveByCopy', 'standardFindChildByName', 'standardFindChildren' and 'standardAddToParent' in the 'StandardResource' class 2bb7a4b

Changes

  • Compiled the TypeScript code with comments :
  • Use the 'standardMoveByCopy' in 'standardMoveTo' static method as a default behavior 2bb7a4b
  • Implemented a default method for 'moveTo' in the 'StandardResource' class 2bb7a4b
  • Removed the 'moveTo' method in the 'VirtualResource' class to use the default implementation in 'StandardResource' 1a38d52

Documentation

  • Added an example of a physical gateway 9123bf6

Tests

  • Fixed a wrong test when a move is made by copy in the 'ResourceTester' class 1b5e3a1
  • Fixed the 'movePhysical' test 48723ee

Other

  • Fixed the package.json of the FTP gateway example d17ac14

Bug fix

  • Fixed the FSManager uid in the FTP Gateway example 00aed8c
  • Fixed the 'moveTo' method of the 'PhysicalResource' 500eca5

v1.9.0

19 Jun 13:47
Compare
Choose a tag to compare

New features

  • A 'FSManager.serialize(...)' returning 'undefined' or 'null' will lead to skip the serialization of the resource f5e06ae
  • Added the 'finalSize' to the 'write(...)' method of resources when available :
  • Added a 'MustIgnore' error which can make the server to skip some checks (mostly lock tests) :
  • Added the ability to a resource to provide its own sub-tree based on the requested path (Gateway) :

Changes

  • Cleaned the code d55ab4d
  • The user is now optional for lock creation leading to skip the user checking when testing the user privileges :
  • Added the 'XMLElement' methods 'findText() : string' and 'findTexts() : string[]' 164022b
  • Now export the 'XML', 'IfParser' and 'Workflow' to allow easier resource/FSManager creation :

Documentation

  • Added an example for the gateway : FTP Gateway 45f1055
  • Added the Gitter link to the README dbbfb12

Tests

  • Fixed a broken test with the 'DAV:lockdiscovery' 9d5b3c9

Other

  • Improved the XML 'name to namespace' feature 164022b

Bug fix

  • Fixed the 'moveTo(...)' which was calling the the 'rename(...)' method even when the oldName and newName were equal 05fd08c
  • Fixed ResourceTester error 083a5c0
  • Modified the 'FSPath' to remove '//' sequences ('//' => '/') 0315270
  • Fixed the example of the Custom Web Resource, which was not loading the 'webdav-server' module but the 'lib/index.js' of the root folder 00661a0

v1.8.2

16 Jun 14:08
Compare
Choose a tag to compare

New features

  • Implemented an 'autoLoad' method in the server to help loading files saved by the 'autoSave' 5acdf13
  • Added the static method 'loadFromPath(...)' in the 'PhysicalFolder' class to allow easy resource tree loading based on a url b8c5ca0

Documentation

  • Used the 'autoLoad' method to load the content in the 'customWebResource' example f0365f2
  • Added the 'loadPhysicalFolder' example 7ed6c7a
  • Added the 'examples' folder in the list of links in the README 595bcf1
  • Fixed the 'Custom Web Resource' example d9b3761

Other

  • Upgraded the 'webdav-server' version needed in the example 'customWebResource' to 1.8.2 9af7d93
  • Moved the 'autoSave' signature (in the server options) to an external interface fcb22cf

Bug fix

  • Fixed the wrong signature of the 'autoSave.streamProvider' server option d80491a

v1.8.1

16 Jun 09:54
Compare
Choose a tag to compare

Documentation

  • Added an example folder to provide real/full examples 14cdf33
  • Added the example : Custom Web Resource 14cdf33
  • Replaced test from the 'Project information' section in the README by a list of links be2c77a

Other

  • Implemented the lock tests for the 'ResourceTester' cb90c9f
  • Added a missing option for the 'ResourceTester' b007f28
  • Fixed code format 40dba6b
  • Removed useless exports from 'BeforeAfter.ts' file be66fb5

Bug fix

  • Fixed a bug when a resource added to the server had no fsManager (= volatile resource) 3c4cd72
  • Fixed a timeout error for the locks 6097857

v1.8.0

15 Jun 14:21
Compare
Choose a tag to compare

New features

  • Added the ability to parse JSON in the request body cf0debb
  • Added the 'Allow' header to all the methods and filter the allowed methods according to the existence of the requested resource and its 'ResourceType' 7db537e
  • Added the server options 'serverName' and 'version' to display in the 'Server' HTTP header fd4158b
  • Added the 'Server' header to the responses e015847
  • Added a 'displayName' optional method in the 'IResource' interface c9812d6
  • Added support to HTTPS 4781457
  • Added resource events in the system 83bb59e
  • Added an 'autoSave' mode to the server to embed a robust way to save the state of the server bd2f12f
  • Implemented a 'SimplePathPrivilegeManager' to manage easily user privileges (pretty bare) b5b81f3
  • Changed the response code/message (to 401 Unauthorized) to ask the client to authenticate the user 14e7c76
  • Added the 'all' privilege in the 'BasicPrivilege' type 318e526
  • Added support for the 'translate' header (alias of the 'source' header) 2d9627e
  • Added support for ranged GET requests 5bee991

Changes

  • Moved the 'Allow' response header from the 'OPTIONS' method to all the methods e015847
  • Use the 'displayName' method when available as text for the 'DAV:displayname' XML element in the PROPFIND response body c9812d6
  • Removed the 'setName' parameter of the 'StandardResource.standardMoveTo(...)' static method to use instead the 'IResource.rename(...)' method c3f8b6a
  • Removed the unused 'isOnTheSameFSWith' and 'isSame' methods of the 'IResource' interface 8660bbf
  • The 'mimeType' method of the implemented resources now return the content type instead of the mime-type only d1247af
  • Use the 'HTTPDigestAuthentication' instance by default instead of a 'HTTPBasicAuthentication' instance in the server's options 0795df3
  • Changed 'addUser' of the 'SimpleUserManager' class to return the created user 155ea74
  • Added the 'Content-Length' header and the 'Accept-Ranges' header in the HEAD method 992620b
  • Added the 'DAV:location' tag to the propfind response 3df40bb

Documentation

  • Changed the code type from 'typescript' to 'javascript' of the code sample in the README 34a19f1
  • Simplified the README.md 0bc3801

Tests

  • Added tests for the JSON in the request body 84bd1c9
  • Added tests for the 'Overwrite' header for the 'MOVE' method 4be3904
  • Added tests for the streaming PUT ae0cf70
  • Removed support for the unstable version 4.0 version of node 418332a
  • Improved the tests for the 'source' and 'translate' headers b99024b
  • Use a 'HTTPBasicAuthentication' as a default authentication system for tests dde8001
  • Added tests for the server events 759befc
  • Added tests for the 'translate' header 30ea0d3

Other

  • Added a new helper : 'StandardResource.standardMimeType(...)' 695a93a
  • Added a 'Workflow' class to replace similar codes in the project eb22a3d
  • Added a way to add new XML elements at the head of the perent's children in the XML file utility 310b860
  • Added a 'SimpleBasicPrivilege' type to represent the possibilities of the 'SimplePrivilegeManager' classes 218af11
  • Added the 'MethodCallArgs' type to a function definition (for better code clarity) 2175459
  • Added the export of the 'SimplePathPrivilegeManager' class b6548aa
  • Added the 'autoSave' option eef40f0
  • Removed duplicates in the code of the 'ResourceTester' class b254f51
  • Changed the order of the imports to be more stable on future changes 0ad2594
  • Removed useless imports/exports which could cause circular dependencies 4e14885
  • Centralized the 'source' header check in the 'MethodCallArgs' class 163914f

Bug fix

  • Fixed the '404' status always in the responses of the 'PROPRFIND' method even when empty f1243e7
  • Fixed the overwrite behavior in the 'StandardResource.standardMoveTo' static method 8b1caad
  • Changed the behavior of the server regarding the 'Content-Length' header in order to use the chunked version of a method everytime 0b675b0
  • Added the 'Content-Type' and the 'Content-Length' headers to the GET and HEAD methods 787ed4e
  • Now write 'DAV:href' at the head of the parent's children, fixing issues with 'cadaver', 'davfs2', etc... 9d9d512
  • Fixed a bug with the 'translate' header ccdd7ed
  • Changed the Unlock response status code/message when unauthorized (to 403 Forbidden) 65423c8
  • Fixed bugs in the 'HTTPBasicAuthentication' and the 'HTTPDigestAuthentication' classes 4e8c78c
  • Fixed PROPPATCH and PROPFIND xml parsing errors when the request body was not valid e7fed58

v1.6.0

09 Jun 20:20
Compare
Choose a tag to compare

New features

  • Now PROPFIND can filter properties depending on the request body (according to the RFC) 7af0e36
  • Added a 'strictMode' to let more flexibilities to the communications client/server
  • Implemented the new chunked version of the PUT method 7f605b1
  • Added the 'deallocate' method to the virtual stored resource management 7506c3c
  • Added a middleware for the 'SimpleVirtualStoredContentManager' class a322b75

Changes

  • Added the 'DAV' header with the values '1,2' => class 1 + 2 supported (RFC) 27abc4e
  • Add a trailing '/' to the resource path of collections (folders) in the 'DAV:href' tag (response) 7af0e36
  • Removed the 'DAV' in the OPTION method file to provide it to all responses 63aa8a3
  • Added more compliance with the WebDAV RFC (body checking, errors returned, etc...) 46cbef7
  • Added xmlns attribute for 'DAV:' presence in a tag name 3bc3f07
  • Replaced the middleware 'stream.Writable' into a 'stream.Transform' for the VirtualStoredFile 36bc500
  • Modified the HEAD method implementation to avoid the use of the 'read' method of the resources 25d120b
  • Removed the un/serialization of the locks in the FSManagers 2786bea
  • Now throw an Error when the 'SimpleVirtualStoredContentManager' instance is not initialized, helping for debugging c3eb727
  • The member 'managerUID' can now be accessed from outside of the error class 'ManagerNotFound' 6378c48
  • Added the content uid to the list of the arguments of the 'IVirtualStoredContentManagerMiddleware' methods 4f9cbf1
  • Added a local cache for lock discovery in PROPFIND bc744b0
  • Now skip the tag 'owner' in the PROPFIND response when the lock has no owner content e3d81c8

Documentation

  • Added the 'strictMode' server option in the README 24dd02b

Tests

  • Removed useless test in the 'VirtualFSManager' class c4dc8db
  • Removed debug display in tests 40fa39a
  • Fixed the way to get the lock-token from a LOCK response in the tests a745c95

Other

  • Removed displays (console.log) efa5449
  • Removed tests for compliance in the PROPFIND method 6298c65
  • Splitted the 'WebDAVServer' class file into smaller files 1f1d13c
  • Splitted the 'ResourceTester' class file into smaller files 8f8af70
  • Added a dot (.) at the end of the text of each common error 1daac87
  • Used more standard errors 155035c

Bug fix

  • Fixed a potential '//' at the end of the path of a resource 27abc4e
  • Fixed an XML bug leading to an infinite loop 3bc3f07
  • Fixed the issue of not applying to the name of XML elements the default namespace aa793d5
  • Added event inheritance in the 'VirtualStoredFile' class eaefedc
  • Cleaned the 'lib' folder e2e054c
  • Added the un/serialization of the property 'contentUid' for the 'VirtualStoredFile' class 62556f5
  • Fixed CodeClimate issues (code formatting) 325f30f
  • Fixed recurrent size error in the Propfind method 67d7485
  • Fixed negative values in the lock-token generation 5ad148f
  • Fixed unremoved resource from parent when calling 'delete' on a VirtualStoredFile a81a906
  • Fixed a bug when serializing a VirtualStoredFile having a content length of 0 c81190d
  • Added missing exports e8aa467

v1.4.0

31 May 13:47
Compare
Choose a tag to compare

New features

  • Implemented a virtual stored resource, able to delegate its content to a content manager f3fff2b
  • Implemented a resource tester to make the resource development easier and more stable 36414fc

Changes

  • Now return an error when requesting the size or mime-type of a virtual or physical folder 12bdd45
  • Added a UID for the IUser interface 6c2b0be
  • Use the UID of the user instead of the reference to compare the users 6c2b0be
  • Removed the 'canLock' and 'canRemoveLock' methods from the resources 3902d35
  • Implemented 'stream.Readable' and 'stream.Writable' for the 'write' and 'read' methods of resources instead of using a 'Int8Array' :

Documentation

  • Modified the sample in the README file to match the new 'write' method in the resources 9f1b0f0

Tests

  • Added tests for the virtual stored resources using the resource tester cdd56d0
  • Added ResourceTester tests for the virtual and physical resources aea18ee
  • Adapted the tests to the 'stream.Readable' and the 'stream.Writable' addings 2d30e39
  • Increased the timeout value for the tests 4f73875
  • Modified the '*.content = ' into '.write(...) in the tests b81f383

Other

  • Added the ResourceTester class to the resource exports 92903ff
  • Standardized the 'moveTo' method of resources c6868fa
  • Modified the 'moveTo' method of the virtual and physical resources to be more reliable 44b38fe
  • Changed from 'dev-watch' to 'tsc' to compile 9f1f60c
  • Added 'process.nextTick(...)' for the serialization helper cbaa8f6

Bug fix

  • Fixed content un/serialization for virtual files 0a41414
  • Fixed XML error with the 'parse' function d96ea6d

v1.3.2

25 May 14:10
Compare
Choose a tag to compare

New features

  • Added the ability to switch to the chunked version of a command (method) when possible 71c7073
  • Added the server option 'canChunk' 6396a81
  • Implemented the chunked version of the PUT method 5923925

Documentation

  • Added the server option 'canChunk' in the documentation 470b15e

Tests

  • Added the tests for the chunked packets 06b9c56

Other

  • Added the HTTPError class c60f5dd
  • Added the 'ExpectedAFileResourceType' standard error c60f5dd

Bug fix

  • Fixed the error with the type Int8Array with the GET method 7e942c2