From 280320cd1e94b20d603d8ae12015e35ef97fd2eb Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Fri, 21 Aug 2020 17:08:41 +0700 Subject: [PATCH 1/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 bootstrap repository --- LICENSE | 668 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 26 ++ src/index.js | 1 + 3 files changed, 695 insertions(+) create mode 100644 LICENSE create mode 100644 package.json create mode 100644 src/index.js diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6064a60 --- /dev/null +++ b/LICENSE @@ -0,0 +1,668 @@ +GNU Affero General Public License version 3 – OpenPaaS + +License and Additional Terms for OpenPaaS software + +OpenPaaS is an open-source, cloud-based and enterprise-centric PaaS and SaaS +dedicated to social and collaborative services, distributed under the GNU +Affero GPL v3 License terms, with Additional Terms pursuant to Section 7 of +said license. + +These Additional Terms are not intended to be taken as a change of heart by +Linagora over the principles of free software and open source distribution, as +Linagora strongly believes in free software and open source distribution, since +it warrants an easy and reasonable access to software innovation to large user +communities, and is highly committed to supporting free software and open +source whenever possible. + +Linagora wishes its paternity over OpenPaaS to be acknowledged, +regardless of its present or later use, modification, distribution and/or +evolutions. Accordingly, these terms aim at preserving Linagora moral rights +over OpenPaaS. + +We have taken care of not affecting product copying, improvements or deploying. +It is our conviction that the community will not be affected by these terms, +the ultimate goal of which is to ensure the sustainability of free and open +source software by supporting R&D and improving the visibility of Linagora as a +free and open source software publisher, while encouraging others to comply +with our common ideals. + +Pursuant to this license, you are therefore free to use the software and modify +it according to the GNU Affero General Public License version 3, provided that +you comply with its requirements, notably: + + - indicating, in a clear and unambiguous manner, that the software is a + modification of original code; + - retaining Appropriate Legal Notices in the source code and the user + interface; + - keeping any modifications of the software under the terms of the GNU Affero + General Public License version 3, including its Additional Terms pursuant to + its section 7, subsections (b), (c) and (e). + +Following are the applicable Additional Terms for use of OpenPaaS +pursuant to section 7, subsections (b), (c) and (e) of the GNU Affero General +Public License version 3. + +Additional Terms applicable for OpenPaaS + +The following additional terms are applicable to the use, modification and +distribution of OpenPaaS: + + 1. Notices and Attribution: + +The interactive user interfaces in modified source and object code versions of +this program must display Appropriate Legal Notices, as required under Section +5 of the GNU Affero General Public License version 3. + +In accordance with Section 7 and subsection (b) of the GNU Affero General +Public License version 3, these Appropriate Legal Notices consist in the +display of the Signature Notice “OpenPaaS is powered by Linagora.” for any +and all type of outbound messages (e.g. e-mail and meeting requests). +Retaining this Signature Notice in any and all free and Open Source versions +of OpenPaaS is mandatory notwhistanding any other terms and conditions. + +These Signature Notices can be freely translated and replaced by any notice of +strictly identical meaning in another language according to localization of the +software, provided such notice clearly displays the words “OpenPaaS” and +“Linagora”. + +Regardless of the notice language, the Logo/words "OpenPaaS" must be a clickable +hypertext link that leads directly to the Internet URL http://open-paas.org. +The Logo/word "Linagora" must be a clickable hypertext link that leads directly +to the Internet URL http://www.linagora.com. + +2. Use of the OpenPaaS and Linagora trademarks and logos + +OpenPaaS™ and Linagora™ are registered trademarks of Linagora. + +Pursuant to Section 7, subsections (c) and (e) of the GNU Affero General Public +License version 3, this license allows limited use of these trademarks under +the following terms: + +All Linagora trademarks, including OpenPaaS™ and Linagora™ logos shall be used by +the licensees and sublicensees for the sole purpose of complying with the +present Additional Terms to the GNU Affero General Public License version 3, +excluding any other purpose without written consent obtained from Linagora. + +Using these trademarks without the (TM) trademark notice symbol, removing these +trademarks from the software, modifying these trademarks in any manner except +proportional scaling (under the proviso that such scaling keeps the trademark +clearly legible), or using these trademarks to promote any products or services +commercially, or on product packaging, websites, books, documentation or any +other publication without a written, signed agreement with Linagora is strictly +prohibited, and constitutes an infringement of Linagora intellectual property +rights over these trademarks. Using these trademarks in a way harmful, +damaging or detrimental to the value of the OpenPaaS brand or any other Linagora +trademarks, integrity, image, reputation, and/or goodwill, as determined by +Linagora, is also strictly prohibited, and constitutes an infringement of +Linagora intellectual property rights over these trademarks as well. + +Please report any possible violation of the GNU Affero General Public License +version 3, any violation of the hereabove Additional Terms, any infringement +and/or misuse of any OpenPaaS or Linagora trade marks and/or a violation of the +aforementioned Trademark Policy at . + + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November + 2007 + +Copyright © 2007 Free Software Foundation, Inc. Everyone is +permitted to copy and distribute verbatim copies of this license document, but +changing it is not allowed. + + Preamble + +The GNU Affero General Public License is a free, copyleft license for software +and other kinds of works, specifically designed to ensure cooperation with the +community in the case of network server software. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, our General +Public Licenses are intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its users. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for them if you wish), that you +receive source code or can get it if you want it, that you can change the +software or use pieces of it in new free programs, and that you know you can do +these things. + +Developers that use our General Public Licenses protect your rights with two +steps: (1) assert copyright on the software, and (2) offer you this License +which gives you legal permission to copy, distribute and/or modify the +software. + +A secondary benefit of defending all users' freedom is that improvements made +in alternate versions of the program, if they receive widespread use, become +available for other developers to incorporate. Many developers of free software +are heartened and encouraged by the resulting cooperation. However, in the case +of software used on network servers, this result may fail to come about. The +GNU General Public License permits making a modified version and letting the +public access it on a server without ever releasing its source code to the +public. + +The GNU Affero General Public License is designed specifically to ensure that, +in such cases, the modified source code becomes available to the community. It +requires the operator of a network server to provide the source code of the +modified version running there to the users of that server. Therefore, public +use of a modified version, on a publicly accessible server, gives the public +access to the source code of the modified version. + +An older license, called the Affero General Public License and published by +Affero, was designed to accomplish similar goals. This is a different license, +not a version of the Affero GPL, but Affero has released a new version of the +Affero GPL which permits relicensing under this license. + +The precise terms and conditions for copying, distribution and modification +follow. + + TERMS AND CONDITIONS + + 0. Definitions. + +"This License" refers to version 3 of the GNU Affero General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds of works, +such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this License. +Each licensee is addressed as "you". "Licensees" and "recipients" may be +individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work in a +fashion requiring copyright permission, other than the making of an exact copy. +The resulting work is called a "modified version" of the earlier work or a work +"based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based on the +Program. + +To "propagate" a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under applicable +copyright law, except executing it on a computer or modifying a private copy. +Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other parties to +make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays "Appropriate Legal Notices" to the +extent that it includes a convenient and prominently visible feature that (1) +displays an appropriate copyright notice, and (2) tells the user that there is +no warranty for the work (except to the extent that warranties are provided), +that licensees may convey the work under this License, and how to view a copy +of this License. If the interface presents a list of user commands or options, +such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + +The "source code" for a work means the preferred form of the work for making +modifications to it. "Object code" means any non-source form of a work. A +"Standard Interface" means an interface that either is an official standard +defined by a recognized standards body, or, in the case of interfaces specified +for a particular programming language, one that is widely used among developers +working in that language. + +The "System Libraries" of an executable work include anything, other than the +work as a whole, that (a) is included in the normal form of packaging a Major +Component, but which is not part of that Major Component, and (b) serves only +to enable use of the work with that Major Component, or to implement a Standard +Interface for which an implementation is available to the public in source code +form. A "Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system (if any) on +which the executable work runs, or a compiler used to produce the work, or an +object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all the source +code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. +However, it does not include the work's System Libraries, or general-purpose +tools or generally available free programs which are used unmodified in +performing those activities but which are not part of the work. For example, +Corresponding Source includes interface definition files associated with source +files for the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, such as +by intimate data communication or control flow between those subprograms and +other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on +the Program, and are irrevocable provided the stated conditions are met. This +License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License only +if the output, given its content, constitutes a covered work. This License +acknowledges your rights of fair use or other equivalent, as provided by +copyright law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all +material for which you do not control copyright. Those thus making or running +the covered works for you must do so exclusively on your behalf, under your +direction and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes it +unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting or +restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention is +effected by exercising rights under this License with respect to the covered +work, and you disclaim any intention to limit operation or modification of the +work as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. 4. Conveying +Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, +in any medium, provided that you conspicuously and appropriately publish on +each copy an appropriate copyright notice; keep intact all notices stating that +this License and any non-permissive terms added in accord with section 7 apply +to the code; keep intact all notices of the absence of any warranty; and give +all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may +offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it +from the Program, in the form of source code under the terms of section 4, +provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and +giving a relevant date. + + b) The work must carry prominent notices stating that it is released under +this License and any conditions added under section 7. This requirement +modifies the requirement in section 4 to "keep intact all notices". + + c) You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will therefore apply, +along with any applicable section 7 additional terms, to the whole of the work, +and all its parts, regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not invalidate +such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive interfaces +that do not display Appropriate Legal Notices, your work need not make them do +so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are not +combined with it such as to form a larger program, in or on a volume of a +storage or distribution medium, is called an "aggregate" if the compilation and +its resulting copyright are not used to limit the access or legal rights of the +compilation's users beyond what the individual works permit. Inclusion of a +covered work in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 +and 5, provided that you also convey the machine-readable Corresponding Source +under the terms of this License, in one of these ways: + +a) Convey the object code in, or embodied in, a physical product (including a +physical distribution medium), accompanied by the Corresponding Source fixed on +a durable physical medium customarily used for software interchange. + +b) Convey the object code in, or embodied in, a physical product (including a +physical distribution medium), accompanied by a written offer, valid for at +least three years and valid for as long as you offer spare parts or customer +support for that product model, to give anyone who possesses the object code +either (1) a copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical medium +customarily used for software interchange, for a price no more than your +reasonable cost of physically performing this conveying of source, or (2) +access to copy the Corresponding Source from a network server at no charge. + +c) Convey individual copies of the object code with a copy of the written offer +to provide the Corresponding Source. This alternative is allowed only +occasionally and noncommercially, and only if you received the object code with +such an offer, in accord with subsection 6b. + +d) Convey the object code by offering access from a designated place (gratis or +for a charge), and offer equivalent access to the Corresponding Source in the +same way through the same place at no further charge. You need not require +recipients to copy the Corresponding Source along with the object code. If the +place to copy the object code is a network server, the Corresponding Source may +be on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions next to +the object code saying where to find the Corresponding Source. Regardless of +what server hosts the Corresponding Source, you remain obligated to ensure that +it is available for as long as needed to satisfy these requirements. + +e) Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are +being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the +Corresponding Source as a System Library, need not be included in conveying the +object code work. + +A "User Product" is either (1) a "consumer product", which means any tangible +personal property which is normally used for personal, family, or household +purposes, or (2) anything designed or sold for incorporation into a dwelling. +In determining whether a product is a consumer product, doubtful cases shall be +resolved in favor of coverage. For a particular product received by a +particular user, "normally used" refers to a typical or common use of that +class of product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected to use, +the product. A product is a consumer product regardless of whether the product +has substantial commercial, industrial or non-consumer uses, unless such uses +represent the only significant mode of use of the product. + +"Installation Information" for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute +modified versions of a covered work in that User Product from a modified +version of its Corresponding Source. The information must suffice to ensure +that the continued functioning of the modified object code is in no case +prevented or interfered with solely because modification has been made. If you +convey an object code work under this section in, or with, or specifically for +use in, a User Product, and the conveying occurs as part of a transaction in +which the right of possession and use of the User Product is transferred to the +recipient in perpetuity or for a fixed term (regardless of how the transaction +is characterized), the Corresponding Source conveyed under this section must be +accompanied by the Installation Information. But this requirement does not +apply if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has been +installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates for a +work that has been modified or installed by the recipient, or for the User +Product in which it has been modified or installed. Access to a network may be +denied when the modification itself materially and adversely affects the +operation of the network or violates the rules and protocols for communication +across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord +with this section must be in a format that is publicly documented (and with an +implementation available to the public in source code form), and must require +no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this License by +making exceptions from one or more of its conditions. Additional permissions +that are applicable to the entire Program shall be treated as though they were +included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part may +be used separately under those permissions, but the entire Program remains +governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add to a +covered work, you may (if authorized by the copyright holders of that material) +supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed by +works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in reasonable ways +as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors +of the material; or + + e) Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with contractual +assumptions of liability to the recipient, for any liability that these +contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered "further restrictions" +within the meaning of section 10. If the Program as you received it, or any +part of it, contains a notice stating that it is governed by this License along +with a term that is a further restriction, you may remove that term. If a +license document contains a further restriction but permits relicensing or +conveying under this License, you may add to a covered work material governed +by the terms of that license document, provided that the further restriction +does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, +in the relevant source files, a statement of the additional terms that apply to +those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a +separately written license, or stated as exceptions; the above requirements +apply either way. + + 8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including any +patent licenses granted under the third paragraph of section 11). However, if +you cease all violation of this License, then your license from a particular +copyright holder is reinstated (a) provisionally, unless and until the +copyright holder explicitly and finally terminates your license, and (b) +permanently, if the copyright holder fails to notify you of the violation by +some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated +permanently if the copyright holder notifies you of the violation by some +reasonable means, this is the first time you have received notice of violation +of this License (for any work) from that copyright holder, and you cure the +violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. If +your rights have been terminated and not permanently reinstated, you do not +qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as a +consequence of using peer-to-peer transmission to receive a copy likewise does +not require acceptance. However, nothing other than this License grants you +permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or +propagating a covered work, you indicate your acceptance of this License to do +so. + + 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a +license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance by +third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered work +results from an entity transaction, each party to that transaction who receives +a copy of the work also receives whatever licenses to the work the party's +predecessor in interest had or could give under the previous paragraph, plus a +right to possession of the Corresponding Source of the work from the +predecessor in interest, if the predecessor has it or can get it with +reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under this +License, and you may not initiate litigation (including a cross-claim or +counterclaim in a lawsuit) alleging that any patent claim is infringed by +making, using, selling, offering for sale, or importing the Program or any +portion of it. + + 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this License of +the Program or a work on which the Program is based. The work thus licensed is +called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned or +controlled by the contributor, whether already acquired or hereafter acquired, +that would be infringed by some manner, permitted by this License, of making, +using, or selling its contributor version, but do not include claims that would +be infringed only as a consequence of further modification of the contributor +version. For purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of this +License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents of +its contributor version. + +In the following three paragraphs, a "patent license" is any express agreement +or commitment, however denominated, not to enforce a patent (such as an express +permission to practice a patent or covenant not to sue for patent +infringement). To "grant" such a patent license to a party means to make such +an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free of +charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or (3) +arrange, in a manner consistent with the requirements of this License, to +extend the patent license to downstream recipients. "Knowingly relying" means +you have actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work in a +country, would infringe one or more identifiable patents in that country that +you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you +convey, or propagate by procuring conveyance of, a covered work, and grant a +patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is "discriminatory" if it does not include within the scope of +its coverage, prohibits the exercise of, or is conditioned on the non-exercise +of one or more of the rights that are specifically granted under this License. +You may not convey a covered work if you are a party to an arrangement with a +third party that is in the business of distributing software, under which you +make payment to the third party based on the extent of your activity of +conveying the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by you (or +copies made from those copies), or (b) primarily for and in connection with +specific products or compilations that contain the covered work, unless you +entered into that arrangement, or that patent license was granted, prior to 28 +March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available to +you under applicable patent law. + + 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not excuse +you from the conditions of this License. If you cannot convey a covered work so +as to satisfy simultaneously your obligations under this License and any other +pertinent obligations, then as a consequence you may not convey it at all. For +example, if you agree to terms that obligate you to collect a royalty for +further conveying from those to whom you convey the Program, the only way you +could satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the Program, +your modified version must prominently offer all users interacting with it +remotely through a computer network (if your version supports such interaction) +an opportunity to receive the Corresponding Source of your version by providing +access to the Corresponding Source from a network server at no charge, through +some standard or customary means of facilitating copying of software. This +Corresponding Source shall include the Corresponding Source for any work +covered by version 3 of the GNU General Public License that is incorporated +pursuant to the following paragraph. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU General Public License into a single combined work, and to convey the +resulting work. The terms of this License will continue to apply to the part +which is the covered work, but the work with which it is combined will remain +governed by version 3 of the GNU General Public License. 14. Revised Versions +of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU +Affero General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies +that a certain numbered version of the GNU Affero General Public License "or +any later version" applies to it, you have the option of following the terms +and conditions either of that numbered version or of any later version +published by the Free Software Foundation. If the Program does not specify a +version number of the GNU Affero General Public License, you may choose any +version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the +GNU Affero General Public License can be used, that proxy's public statement of +acceptance of a version permanently authorizes you to choose that version for +the Program. + +Later license versions may give you additional or different permissions. +However, no additional obligations are imposed on any author or copyright +holder as a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE +LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER +PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE +QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + + 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS +PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE +THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot +be given local legal effect according to their terms, reviewing courts shall +apply local law that most closely approximates an absolute waiver of all civil +liability in connection with the Program, unless a warranty or assumption of +liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS diff --git a/package.json b/package.json new file mode 100644 index 0000000..27e7938 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "esn-dav-import-client", + "version": "0.0.1", + "description": "JS library for ESN DAV import client", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "files": [ + "src", + "dist" + ], + "keywords": [ + "esn", + "dav", + "import" + ], + "repository": { + "type": "git", + "url": "https://github.com/OpenPaaS-Suite/esn-dav-import-client" + }, + "author": "", + "license": "AGPL-3.0", + "devDependencies": {}, + "dependencies": {} +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..8cec2e9 --- /dev/null +++ b/src/index.js @@ -0,0 +1 @@ +export {}; \ No newline at end of file From 23e9119f4bcded3ed10b00a77a2a43feaadaac5e Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Fri, 21 Aug 2020 17:21:53 +0700 Subject: [PATCH 2/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 setup eslint --- .eslintrc.json | 21 +++++++++++++++++++++ package.json | 9 +++++++-- src/index.js | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..76341db --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,21 @@ +{ + "extends": "airbnb-base", + "rules": { + "space-before-function-paren": [2, "never"], + "arrow-body-style": 0, + "comma-dangle": [2, "never"], + "import/no-extraneous-dependencies": 0, + "import/no-dynamic-require": 0, + "import/prefer-default-export": 0, + "func-names": 0, + "global-require": 0, + "no-use-before-define": 0, + "consistent-return": 0, + "prefer-arrow-callback": 0, + "no-unused-expressions": 0, + "array-callback-return": 0, + "no-param-reassign": 0, + "max-len": 0, + "indent": 0 + } +} diff --git a/package.json b/package.json index 27e7938..3d878d1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "JS library for ESN DAV import client", "main": "src/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "lint": "eslint src" }, "files": [ "src", @@ -21,6 +22,10 @@ }, "author": "", "license": "AGPL-3.0", - "devDependencies": {}, + "devDependencies": { + "eslint": "^7.7.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-plugin-import": "^2.22.0" + }, "dependencies": {} } diff --git a/src/index.js b/src/index.js index 8cec2e9..cb0ff5c 100644 --- a/src/index.js +++ b/src/index.js @@ -1 +1 @@ -export {}; \ No newline at end of file +export {}; From 73228069547ac60375b7769f0789cf9c176a29cd Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Fri, 21 Aug 2020 17:22:07 +0700 Subject: [PATCH 3/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 add .gitignore file --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..504afef --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +package-lock.json From 5a8b9b97ed011936ec1f34a0904b9c1b42858c64 Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Wed, 26 Aug 2020 09:55:11 +0700 Subject: [PATCH 4/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 implement ESNDavImportClient logic --- package.json | 4 +++- src/ESNDavImportClient.js | 29 +++++++++++++++++++++++++++++ src/index.js | 4 +++- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/ESNDavImportClient.js diff --git a/package.json b/package.json index 3d878d1..304dc1a 100644 --- a/package.json +++ b/package.json @@ -27,5 +27,7 @@ "eslint-config-airbnb-base": "^14.2.0", "eslint-plugin-import": "^2.22.0" }, - "dependencies": {} + "dependencies": { + "esn-api-client": "github:openpaas-suite/esn-api-client#main" + } } diff --git a/src/ESNDavImportClient.js b/src/ESNDavImportClient.js new file mode 100644 index 0000000..a6371d1 --- /dev/null +++ b/src/ESNDavImportClient.js @@ -0,0 +1,29 @@ +import { davImportApi, Client } from 'esn-api-client/src'; + +export default class ESNDavImportClient { + /** + * @constructor + * @param {Function} uploadFile the function to upload file + * @param {String} OPENPAAS_URL the deployed URL for OpenPaaS server + */ + constructor(uploadFile, OPENPAAS_URL) { + if (typeof uploadFile !== 'function') { + throw new Error('uploadFile is required and must be a function'); + } + + if (!OPENPAAS_URL) { + throw new Error('OPENPAAS_URL is required'); + } + + this.uploadFile = uploadFile; + + const esnApiClient = new Client({ baseURL: `${OPENPAAS_URL}/linagora.esn.dav.import/api` }); + + this.davImportApi = davImportApi(esnApiClient); + } + + importFromFile(file, target) { + return this.uploadFile(file) + .then((fileId) => this.davImportApi.importFromFile(fileId, target)); + } +} diff --git a/src/index.js b/src/index.js index cb0ff5c..ba7a807 100644 --- a/src/index.js +++ b/src/index.js @@ -1 +1,3 @@ -export {}; +import ESNDavImportClient from './ESNDavImportClient'; + +export { ESNDavImportClient }; From b9cc5d322aa553fc351ae810b12d5f515a0f913a Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Wed, 26 Aug 2020 14:37:29 +0700 Subject: [PATCH 5/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 setup test --- babel.config.json | 5 +++++ package.json | 11 ++++++++--- test/.eslintrc.json | 7 +++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 babel.config.json create mode 100644 test/.eslintrc.json diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000..a29ac99 --- /dev/null +++ b/babel.config.json @@ -0,0 +1,5 @@ +{ + "presets": [ + "@babel/preset-env" + ] +} diff --git a/package.json b/package.json index 304dc1a..0598dca 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "JS library for ESN DAV import client", "main": "src/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "lint": "eslint src" + "test": "npm run lint && npm run unit-test", + "lint": "eslint src", + "unit-test": "jest" }, "files": [ "src", @@ -23,9 +24,13 @@ "author": "", "license": "AGPL-3.0", "devDependencies": { + "@babel/core": "^7.11.4", + "@babel/preset-env": "^7.11.0", "eslint": "^7.7.0", "eslint-config-airbnb-base": "^14.2.0", - "eslint-plugin-import": "^2.22.0" + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jest": "^23.20.0", + "jest": "^26.4.2" }, "dependencies": { "esn-api-client": "github:openpaas-suite/esn-api-client#main" diff --git a/test/.eslintrc.json b/test/.eslintrc.json new file mode 100644 index 0000000..4e67299 --- /dev/null +++ b/test/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "env": { + "node": true, + "jest": true + }, + "plugins": ["jest"] +} From 70a35286df07839b7fe0631c2bed41c6be52970d Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Wed, 26 Aug 2020 14:37:56 +0700 Subject: [PATCH 6/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 add unit tests for ESNDavImportClient class --- test/src/ESNDavImportClient.spec.js | 88 +++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 test/src/ESNDavImportClient.spec.js diff --git a/test/src/ESNDavImportClient.spec.js b/test/src/ESNDavImportClient.spec.js new file mode 100644 index 0000000..354bd48 --- /dev/null +++ b/test/src/ESNDavImportClient.spec.js @@ -0,0 +1,88 @@ +import { ESNDavImportClient } from '../../src'; + +const OPENPAAS_URL = 'http://esn'; + +describe('The ESNDavImportClient class', () => { + describe('The constructor method', () => { + test('should throw error if the uploadFile method is not provided', () => { + expect(() => new ESNDavImportClient()).toThrow(/uploadFile is required and must be a function/); + }); + + test('should throw error if the uploadFile is not a function', () => { + const uploadFile = 'not a function'; + + expect(() => new ESNDavImportClient(uploadFile)).toThrow(/uploadFile is required and must be a function/); + }); + + test('should throw error if the OPENPAAS_URL is not provided', () => { + const uploadFile = () => {}; + + expect(() => new ESNDavImportClient(uploadFile)).toThrow(/OPENPAAS_URL is required/); + }); + }); + + describe('The importFromFile method', () => { + test('should reject if failed to upload file', done => { + const errorMessage = 'something wrong'; + const uploadFile = jest.fn().mockResolvedValue(Promise.reject(new Error(errorMessage))); + const esnDavImportClient = new ESNDavImportClient(uploadFile, OPENPAAS_URL); + const file = { foo: 'bar' }; + const target = '/target/path'; + + esnDavImportClient.davImportApi = { + importFromFile: jest.fn() + }; + + esnDavImportClient.importFromFile(file, target) + .then(() => done(new Error('should not resolve'))) + .catch(err => { + expect(err.message).toEqual(errorMessage); + expect(uploadFile).toHaveBeenCalledWith(file); + expect(esnDavImportClient.davImportApi.importFromFile).not.toHaveBeenCalled; + done(); + }); + }); + + test('should reject if failed to import from file', done => { + const errorMessage = 'something wrong'; + const fileId = 'fileId'; + const uploadFile = jest.fn().mockResolvedValue(Promise.resolve(fileId)); + const esnDavImportClient = new ESNDavImportClient(uploadFile, OPENPAAS_URL); + const file = { foo: 'bar' }; + const target = '/target/path'; + + esnDavImportClient.davImportApi = { + importFromFile: jest.fn().mockResolvedValue(Promise.reject(new Error(errorMessage))) + }; + + esnDavImportClient.importFromFile(file, target) + .then(() => done(new Error('should not resolve'))) + .catch(err => { + expect(err.message).toEqual(errorMessage); + expect(uploadFile).toHaveBeenCalledWith(file); + expect(esnDavImportClient.davImportApi.importFromFile).toHaveBeenCalledWith(fileId, target); + done(); + }); + }); + + test('should call the davImportClient with correct params to import from file', done => { + const fileId = 'fileId'; + const uploadFile = jest.fn().mockResolvedValue(Promise.resolve(fileId)); + const esnDavImportClient = new ESNDavImportClient(uploadFile, OPENPAAS_URL); + const file = { foo: 'bar' }; + const target = '/target/path'; + + esnDavImportClient.davImportApi = { + importFromFile: jest.fn().mockResolvedValue(Promise.resolve()) + }; + + esnDavImportClient.importFromFile(file, target) + .then(() => { + expect(uploadFile).toHaveBeenCalledWith(file); + expect(esnDavImportClient.davImportApi.importFromFile).toHaveBeenCalledWith(fileId, target); + done(); + }) + .catch(err => done(err || new Error('should resolve'))); + }); + }); +}); From aeb881da18e4ae3eee08f2a3f5699875499c5155 Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Wed, 26 Aug 2020 15:47:11 +0700 Subject: [PATCH 7/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 use linagora-esn style for eslint --- .eslintrc.json | 27 ++++++++++----------------- package.json | 1 + src/ESNDavImportClient.js | 4 ++-- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 76341db..7884d80 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,21 +1,14 @@ { - "extends": "airbnb-base", + "extends": "linagora-esn", "rules": { - "space-before-function-paren": [2, "never"], - "arrow-body-style": 0, - "comma-dangle": [2, "never"], - "import/no-extraneous-dependencies": 0, - "import/no-dynamic-require": 0, - "import/prefer-default-export": 0, - "func-names": 0, - "global-require": 0, - "no-use-before-define": 0, - "consistent-return": 0, - "prefer-arrow-callback": 0, - "no-unused-expressions": 0, - "array-callback-return": 0, - "no-param-reassign": 0, - "max-len": 0, - "indent": 0 + "consistent-this": ["warn", "self"], + "no-unused-vars": ["error", { "vars": "all", "args": "after-used" }], + "no-console": ["error", { "allow": ["warn", "error"] }], + "no-process-env": "off", + "arrow-parens": ["error", "as-needed"], + "import/prefer-default-export": 0 + }, + "parserOptions": { + "sourceType": "module" } } diff --git a/package.json b/package.json index 0598dca..8a88bcb 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@babel/preset-env": "^7.11.0", "eslint": "^7.7.0", "eslint-config-airbnb-base": "^14.2.0", + "eslint-config-linagora-esn": "github:linagora/eslint-config-linagora-esn#v1.1.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-jest": "^23.20.0", "jest": "^26.4.2" diff --git a/src/ESNDavImportClient.js b/src/ESNDavImportClient.js index a6371d1..fc2c7d4 100644 --- a/src/ESNDavImportClient.js +++ b/src/ESNDavImportClient.js @@ -1,4 +1,4 @@ -import { davImportApi, Client } from 'esn-api-client/src'; +import { Client, davImportApi } from 'esn-api-client/src'; export default class ESNDavImportClient { /** @@ -24,6 +24,6 @@ export default class ESNDavImportClient { importFromFile(file, target) { return this.uploadFile(file) - .then((fileId) => this.davImportApi.importFromFile(fileId, target)); + .then(fileId => this.davImportApi.importFromFile(fileId, target)); } } From 1dbd4c220e682d9f7679bc8fcad7d56e213a4642 Mon Sep 17 00:00:00 2001 From: Tuan Tuan LE Date: Wed, 26 Aug 2020 17:13:52 +0700 Subject: [PATCH 8/8] https://github.com/OpenPaaS-Suite/esn-frontend-calendar/issues/51 update documentation --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c15d73..3020401 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,15 @@ # esn-dav-import-client -JS library for dav import feature +JS library for ESN DAV import client + +## Installation + +NPM and Yarn: + +`npm install https://github.com/OpenPaaS-Suite/esn-dav-import-client` + +`yarn add https://github.com/OpenPaaS-Suite/esn-dav-import-client` + +## Developing +- `npm run test` run lint & unit tests +- `npm run lint` run lint +- `npm run unit-test` to run unit tests \ No newline at end of file