@jscrpt/common 7.0.0-beta.20250116120432 → 7.0.0

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 (158) hide show
  1. package/changelog.md +14 -0
  2. package/es/extend/src/index.js.map +1 -0
  3. package/es/extend/src/index.mjs +2 -0
  4. package/es/extend/src/utils/common.js.map +1 -0
  5. package/es/extend/src/utils/common.mjs +11 -0
  6. package/es/lodash/src/index.js.map +1 -0
  7. package/es/lodash/src/index.mjs +2 -0
  8. package/es/lodash/src/utils/common.js.map +1 -0
  9. package/es/lodash/src/utils/common.mjs +10 -0
  10. package/es/rxjs/src/utils/async.js.map +1 -1
  11. package/es/src/decorators/bindThis.decorator.js.map +1 -1
  12. package/es/src/decorators/callOnce.decorator.js.map +1 -1
  13. package/es/src/decorators/debounceCall.decorator.js.map +1 -1
  14. package/es/src/decorators/mixin.decorator.js.map +1 -1
  15. package/es/src/decorators/property.decorator.js.map +1 -1
  16. package/es/src/decorators/withSync.decorator.js.map +1 -1
  17. package/es/src/encoder/encoder.js.map +1 -1
  18. package/es/src/index.js.map +1 -1
  19. package/es/src/paginator/paginator.js.map +1 -1
  20. package/es/src/utils/common.js.map +1 -1
  21. package/es/src/utils/common.mjs +0 -10
  22. package/es/src/utils/lang.js.map +1 -1
  23. package/es2015/extend/src/index.js +2 -0
  24. package/es2015/extend/src/index.js.map +1 -0
  25. package/es2015/extend/src/utils/common.js +11 -0
  26. package/es2015/extend/src/utils/common.js.map +1 -0
  27. package/es2015/lodash/src/index.js +2 -0
  28. package/es2015/lodash/src/index.js.map +1 -0
  29. package/es2015/lodash/src/utils/common.js +10 -0
  30. package/es2015/lodash/src/utils/common.js.map +1 -0
  31. package/es2015/rxjs/src/utils/async.js.map +1 -1
  32. package/es2015/src/decorators/bindThis.decorator.js.map +1 -1
  33. package/es2015/src/decorators/callOnce.decorator.js.map +1 -1
  34. package/es2015/src/decorators/debounceCall.decorator.js.map +1 -1
  35. package/es2015/src/decorators/mixin.decorator.js.map +1 -1
  36. package/es2015/src/decorators/property.decorator.js.map +1 -1
  37. package/es2015/src/decorators/withSync.decorator.js.map +1 -1
  38. package/es2015/src/encoder/encoder.js.map +1 -1
  39. package/es2015/src/index.js.map +1 -1
  40. package/es2015/src/paginator/paginator.js.map +1 -1
  41. package/es2015/src/utils/common.js +0 -10
  42. package/es2015/src/utils/common.js.map +1 -1
  43. package/es2015/src/utils/lang.js.map +1 -1
  44. package/es2020/extend/src/index.js +2 -0
  45. package/es2020/extend/src/index.js.map +1 -0
  46. package/es2020/extend/src/utils/common.js +11 -0
  47. package/es2020/extend/src/utils/common.js.map +1 -0
  48. package/es2020/lodash/src/index.js +2 -0
  49. package/es2020/lodash/src/index.js.map +1 -0
  50. package/es2020/lodash/src/utils/common.js +10 -0
  51. package/es2020/lodash/src/utils/common.js.map +1 -0
  52. package/es2020/rxjs/src/utils/async.js.map +1 -1
  53. package/es2020/src/decorators/bindThis.decorator.js.map +1 -1
  54. package/es2020/src/decorators/callOnce.decorator.js.map +1 -1
  55. package/es2020/src/decorators/debounceCall.decorator.js.map +1 -1
  56. package/es2020/src/decorators/mixin.decorator.js.map +1 -1
  57. package/es2020/src/decorators/property.decorator.js.map +1 -1
  58. package/es2020/src/decorators/withSync.decorator.js.map +1 -1
  59. package/es2020/src/encoder/encoder.js.map +1 -1
  60. package/es2020/src/index.js.map +1 -1
  61. package/es2020/src/paginator/paginator.js.map +1 -1
  62. package/es2020/src/utils/common.js +0 -10
  63. package/es2020/src/utils/common.js.map +1 -1
  64. package/es2020/src/utils/lang.js.map +1 -1
  65. package/es2022/extend/src/index.js +2 -0
  66. package/es2022/extend/src/index.js.map +1 -0
  67. package/es2022/extend/src/utils/common.js +11 -0
  68. package/es2022/extend/src/utils/common.js.map +1 -0
  69. package/es2022/lodash/src/index.js +2 -0
  70. package/es2022/lodash/src/index.js.map +1 -0
  71. package/es2022/lodash/src/utils/common.js +10 -0
  72. package/es2022/lodash/src/utils/common.js.map +1 -0
  73. package/es2022/rxjs/src/utils/async.js.map +1 -1
  74. package/es2022/src/decorators/bindThis.decorator.js.map +1 -1
  75. package/es2022/src/decorators/callOnce.decorator.js.map +1 -1
  76. package/es2022/src/decorators/debounceCall.decorator.js.map +1 -1
  77. package/es2022/src/decorators/mixin.decorator.js.map +1 -1
  78. package/es2022/src/decorators/property.decorator.js.map +1 -1
  79. package/es2022/src/decorators/withSync.decorator.js.map +1 -1
  80. package/es2022/src/encoder/encoder.js +7 -5
  81. package/es2022/src/encoder/encoder.js.map +1 -1
  82. package/es2022/src/index.js.map +1 -1
  83. package/es2022/src/paginator/paginator.js +19 -17
  84. package/es2022/src/paginator/paginator.js.map +1 -1
  85. package/es2022/src/utils/common.js +0 -10
  86. package/es2022/src/utils/common.js.map +1 -1
  87. package/es2022/src/utils/lang.js.map +1 -1
  88. package/es5/extend/src/index.js +2 -0
  89. package/es5/extend/src/index.js.map +1 -0
  90. package/es5/extend/src/utils/common.js +16 -0
  91. package/es5/extend/src/utils/common.js.map +1 -0
  92. package/es5/lodash/src/index.js +2 -0
  93. package/es5/lodash/src/index.js.map +1 -0
  94. package/es5/lodash/src/utils/common.js +15 -0
  95. package/es5/lodash/src/utils/common.js.map +1 -0
  96. package/es5/rxjs/src/utils/async.js.map +1 -1
  97. package/es5/src/decorators/bindThis.decorator.js.map +1 -1
  98. package/es5/src/decorators/callOnce.decorator.js.map +1 -1
  99. package/es5/src/decorators/debounceCall.decorator.js.map +1 -1
  100. package/es5/src/decorators/mixin.decorator.js.map +1 -1
  101. package/es5/src/decorators/property.decorator.js.map +1 -1
  102. package/es5/src/decorators/withSync.decorator.js.map +1 -1
  103. package/es5/src/encoder/encoder.js.map +1 -1
  104. package/es5/src/index.js.map +1 -1
  105. package/es5/src/paginator/paginator.js.map +1 -1
  106. package/es5/src/utils/common.js +0 -15
  107. package/es5/src/utils/common.js.map +1 -1
  108. package/es5/src/utils/lang.js.map +1 -1
  109. package/extend/package.json +11 -0
  110. package/extend/src/index.d.ts +2 -0
  111. package/extend/src/index.d.ts.map +1 -0
  112. package/extend/src/utils/common.d.ts +73 -0
  113. package/extend/src/utils/common.d.ts.map +1 -0
  114. package/lodash/package.json +11 -0
  115. package/lodash/src/index.d.ts +2 -0
  116. package/lodash/src/index.d.ts.map +1 -0
  117. package/lodash/src/utils/common.d.ts +14 -0
  118. package/lodash/src/utils/common.d.ts.map +1 -0
  119. package/module/extend/src/index.cjs +5 -0
  120. package/module/extend/src/index.js.map +1 -0
  121. package/module/extend/src/utils/common.cjs +15 -0
  122. package/module/extend/src/utils/common.js.map +1 -0
  123. package/module/lodash/src/index.cjs +5 -0
  124. package/module/lodash/src/index.js.map +1 -0
  125. package/module/lodash/src/utils/common.cjs +13 -0
  126. package/module/lodash/src/utils/common.js.map +1 -0
  127. package/module/rxjs/src/utils/async.cjs +1 -2
  128. package/module/rxjs/src/utils/async.js.map +1 -1
  129. package/module/rxjs/src/utils/common.cjs +1 -2
  130. package/module/rxjs/src/utils/common.js.map +1 -1
  131. package/module/src/decorators/bindThis.decorator.cjs +1 -2
  132. package/module/src/decorators/bindThis.decorator.js.map +1 -1
  133. package/module/src/decorators/callOnce.decorator.cjs +1 -2
  134. package/module/src/decorators/callOnce.decorator.js.map +1 -1
  135. package/module/src/decorators/debounceCall.decorator.cjs +1 -2
  136. package/module/src/decorators/debounceCall.decorator.js.map +1 -1
  137. package/module/src/decorators/mixin.decorator.cjs +1 -2
  138. package/module/src/decorators/mixin.decorator.js.map +1 -1
  139. package/module/src/decorators/property.decorator.cjs +1 -2
  140. package/module/src/decorators/property.decorator.js.map +1 -1
  141. package/module/src/decorators/withSync.decorator.cjs +1 -2
  142. package/module/src/decorators/withSync.decorator.js.map +1 -1
  143. package/module/src/encoder/encoder.js.map +1 -1
  144. package/module/src/index.js.map +1 -1
  145. package/module/src/jsDevMode.cjs +1 -2
  146. package/module/src/jsDevMode.js.map +1 -1
  147. package/module/src/normalizer/normalizer.cjs +1 -2
  148. package/module/src/normalizer/normalizer.js.map +1 -1
  149. package/module/src/paginator/paginator.js.map +1 -1
  150. package/module/src/utils/common.cjs +29 -42
  151. package/module/src/utils/common.js.map +1 -1
  152. package/module/src/utils/lang.cjs +18 -19
  153. package/module/src/utils/lang.js.map +1 -1
  154. package/package.json +48 -14
  155. package/src/utils/common.d.ts +0 -71
  156. package/src/utils/common.d.ts.map +1 -1
  157. package/src/utils/nameof.d.ts.map +1 -1
  158. package/version.bak +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"paginator.js","sourceRoot":"","sources":["../../../src/paginator/paginator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Class for paging evaluation\r\n */\r\nexport class Paginator\r\n{\r\n //######################### private fields ######################### \r\n\r\n /**\r\n * First page set to paginator\r\n */\r\n private _base: number = 1;\r\n\r\n /**\r\n * Number of items per page\r\n */\r\n private _itemsPerPage: number = 10;\r\n\r\n /**\r\n * Index of current page\r\n */\r\n private _page: number = 1;\r\n\r\n /**\r\n * Number of all items to be used for counting paging\r\n */\r\n private _itemCount: number = 0;\r\n\r\n //######################### public methods #########################\r\n\r\n /**\r\n * Sets current page number.\r\n * @param page - Page number\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setPage(page: number): Paginator\r\n {\r\n this._page = page;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns current page number.\r\n * @returns number Current page number\r\n */\r\n public getPage(): number\r\n {\r\n return this._base + this.getPageIndex();\r\n }\r\n\r\n /// <summary>\r\n /// Returns first page number.\r\n /// </summary>\r\n /// <returns>Number of first page</returns>\r\n public getFirstPage(): number\r\n {\r\n return this._base;\r\n }\r\n\r\n /**\r\n * Returns last page number.\r\n * @returns number Number of last page\r\n */\r\n public getLastPage(): number\r\n {\r\n return this._base + Math.max(0, this.getPageCount() - 1);\r\n }\r\n\r\n /**\r\n * Sets first page (base) number.\r\n * @param baseVal - Index of base page\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setBase(baseVal: number): Paginator\r\n {\r\n this._base = baseVal;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns first page (base) number.\r\n * @returns number Index of base page\r\n */\r\n public getBase(): number\r\n {\r\n return this._base;\r\n }\r\n\r\n /**\r\n * Gets indication whether is the current page the first one?\r\n * @returns boolean True if current page is first one\r\n */\r\n public isFirst(): boolean\r\n {\r\n return this.getPageIndex() == 0;\r\n }\r\n\r\n /**\r\n * Gets indication whether is the current page the last one?\r\n * @returns boolean True if current page is last one, otherwise false\r\n */\r\n public isLast(): boolean\r\n {\r\n return this.getPageIndex() == (this.getPageCount() - 1);\r\n }\r\n\r\n /**\r\n * Returns the total number of pages.\r\n * @returns number Total number of pages\r\n */\r\n public getPageCount(): number\r\n {\r\n return Math.ceil(this._itemCount / this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Sets the number of items to display on a single page.\r\n * @param itemsPerPage - Number of items per page\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setItemsPerPage(itemsPerPage: number): Paginator\r\n {\r\n this._itemsPerPage = Math.max(1, itemsPerPage);\r\n \r\n return this;\r\n }\r\n\r\n /**\r\n * Returns the number of items to display on a single page.\r\n * @returns number Number of items per one page\r\n */\r\n public getItemsPerPage(): number\r\n {\r\n return this._itemsPerPage;\r\n }\r\n\r\n /**\r\n * Sets the total number of items.\r\n * @param itemCount - Count of items or -1 for infinity\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setItemCount(itemCount: number): Paginator\r\n {\r\n this._itemCount = itemCount == -1 ? Number.MAX_VALUE : Math.max(0, itemCount);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns the total number of items.\r\n * @returns number Total number of items\r\n */\r\n public getItemCount(): number\r\n {\r\n return this._itemCount;\r\n }\r\n\r\n /**\r\n * Returns the absolute index of the first item on current page.\r\n * @returns number Absolute index of first item\r\n */\r\n public getOffset(): number\r\n {\r\n return this.getPageIndex() * this._itemsPerPage;\r\n }\r\n\r\n /**\r\n * Returns the absolute index of the first item on current page in countdown paging.\r\n * @returns number Countdown offset of first item\r\n */\r\n public getCountdownOffset(): number\r\n {\r\n return Math.max(0, this._itemCount - (this.getPageIndex() + 1) * this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Returns the number of items on current page.\r\n * @returns number Number of items on page\r\n */\r\n public getLength(): number\r\n {\r\n return Math.min(this._itemsPerPage, this._itemCount - this.getPageIndex() * this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Gets indexes for items on current page (zero-based indexes)\r\n * @returns number Array of items indexes\r\n */\r\n public getIndexesPerPage(): number[]\r\n {\r\n const result: number[] = [];\r\n\r\n if(isNaN(this.getOffset()))\r\n {\r\n for(let x = 0; x < this.getItemCount(); x++)\r\n {\r\n result.push(x);\r\n }\r\n }\r\n else\r\n {\r\n for(let x = this.getOffset(); x < this.getOffset() + this.getLength(); x++)\r\n {\r\n result.push(x);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers with specified dispersion\r\n * @param dispersion - Number identifying dispersion\r\n * @returns number Page numbers according specified dispersion\r\n */\r\n public getPagesWithDispersion(dispersion: number): number[]\r\n {\r\n const currentPage = this.getPage();\r\n const pageCount = this.getPageCount();\r\n const numberOfPages = Math.min(pageCount, Math.max(0, dispersion) * 2 + 1) - 1;\r\n let startingPage = Math.max(this._base, currentPage - dispersion);\r\n\r\n if ((currentPage + dispersion) > pageCount)\r\n {\r\n startingPage = pageCount - numberOfPages;\r\n }\r\n\r\n let x: number;\r\n const endingPage = startingPage + numberOfPages;\r\n\r\n const result: number[] = [];\r\n\r\n for (x = startingPage; x <= endingPage; x++)\r\n {\r\n result.push(x);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers with specified dispersion, pages are trimmed if current page is near beginning or end\r\n * @param dispersion - Number identifying dispersion\r\n * @returns number Page numbers according specified dispersion\r\n */\r\n public getPagesWithTrimDispersion(dispersion: number): number[]\r\n {\r\n const currentPage = this.getPage();\r\n const lastPage = this.getLastPage();\r\n const startingPage = Math.max(this._base, currentPage - dispersion);\r\n let x: number;\r\n const endingPage = Math.min(lastPage, currentPage + dispersion);\r\n\r\n const result: number[] = [];\r\n \r\n for (x = startingPage; x <= endingPage; x++)\r\n {\r\n result.push(x);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers generated with uniform distribution\r\n * @param numberOfPages - Number of pages that are going to be uniformly distributed between first and last page (including)\r\n * @returns number Uniformly distributed page numbers\r\n */\r\n public getPagesWithUniformDistribution(numberOfPages: number): number[]\r\n {\r\n numberOfPages = Math.max(1, numberOfPages - 1);\r\n const pageCount = this.getPageCount();\r\n numberOfPages = Math.min(numberOfPages, pageCount - 1);\r\n const step = pageCount / numberOfPages;\r\n let page = this.getFirstPage();\r\n let x;\r\n\r\n const result: number[] = [];\r\n\r\n for (x = 0; x < numberOfPages; x++)\r\n {\r\n result.push(Math.round(page));\r\n\r\n page += step;\r\n }\r\n\r\n result.push(pageCount);\r\n \r\n return result;\r\n }\r\n\r\n //######################### protected methods #########################\r\n\r\n /**\r\n * Returns zero-based page number.\r\n * @returns number Zero-based page number\r\n */\r\n protected getPageIndex(): number\r\n {\r\n return Math.min(Math.max(0, this._page - this._base), Math.max(0, this.getPageCount() - 1));\r\n }\r\n}"]}
1
+ {"version":3,"file":"paginator.js","sourceRoot":"","sources":["../../../src/paginator/paginator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Class for paging evaluation\r\n */\r\nexport class Paginator\r\n{\r\n //######################### private fields ######################### \r\n\r\n /**\r\n * First page set to paginator\r\n */\r\n private _base: number = 1;\r\n\r\n /**\r\n * Number of items per page\r\n */\r\n private _itemsPerPage: number = 10;\r\n\r\n /**\r\n * Index of current page\r\n */\r\n private _page: number = 1;\r\n\r\n /**\r\n * Number of all items to be used for counting paging\r\n */\r\n private _itemCount: number = 0;\r\n\r\n //######################### public methods #########################\r\n\r\n /**\r\n * Sets current page number.\r\n * @param page - Page number\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setPage(page: number): Paginator\r\n {\r\n this._page = page;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns current page number.\r\n * @returns number Current page number\r\n */\r\n public getPage(): number\r\n {\r\n return this._base + this.getPageIndex();\r\n }\r\n\r\n /// <summary>\r\n /// Returns first page number.\r\n /// </summary>\r\n /// <returns>Number of first page</returns>\r\n public getFirstPage(): number\r\n {\r\n return this._base;\r\n }\r\n\r\n /**\r\n * Returns last page number.\r\n * @returns number Number of last page\r\n */\r\n public getLastPage(): number\r\n {\r\n return this._base + Math.max(0, this.getPageCount() - 1);\r\n }\r\n\r\n /**\r\n * Sets first page (base) number.\r\n * @param baseVal - Index of base page\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setBase(baseVal: number): Paginator\r\n {\r\n this._base = baseVal;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns first page (base) number.\r\n * @returns number Index of base page\r\n */\r\n public getBase(): number\r\n {\r\n return this._base;\r\n }\r\n\r\n /**\r\n * Gets indication whether is the current page the first one?\r\n * @returns boolean True if current page is first one\r\n */\r\n public isFirst(): boolean\r\n {\r\n return this.getPageIndex() == 0;\r\n }\r\n\r\n /**\r\n * Gets indication whether is the current page the last one?\r\n * @returns boolean True if current page is last one, otherwise false\r\n */\r\n public isLast(): boolean\r\n {\r\n return this.getPageIndex() == (this.getPageCount() - 1);\r\n }\r\n\r\n /**\r\n * Returns the total number of pages.\r\n * @returns number Total number of pages\r\n */\r\n public getPageCount(): number\r\n {\r\n return Math.ceil(this._itemCount / this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Sets the number of items to display on a single page.\r\n * @param itemsPerPage - Number of items per page\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setItemsPerPage(itemsPerPage: number): Paginator\r\n {\r\n this._itemsPerPage = Math.max(1, itemsPerPage);\r\n \r\n return this;\r\n }\r\n\r\n /**\r\n * Returns the number of items to display on a single page.\r\n * @returns number Number of items per one page\r\n */\r\n public getItemsPerPage(): number\r\n {\r\n return this._itemsPerPage;\r\n }\r\n\r\n /**\r\n * Sets the total number of items.\r\n * @param itemCount - Count of items or -1 for infinity\r\n * @returns Paginator Provides a fluent interface\r\n */\r\n public setItemCount(itemCount: number): Paginator\r\n {\r\n this._itemCount = itemCount == -1 ? Number.MAX_VALUE : Math.max(0, itemCount);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns the total number of items.\r\n * @returns number Total number of items\r\n */\r\n public getItemCount(): number\r\n {\r\n return this._itemCount;\r\n }\r\n\r\n /**\r\n * Returns the absolute index of the first item on current page.\r\n * @returns number Absolute index of first item\r\n */\r\n public getOffset(): number\r\n {\r\n return this.getPageIndex() * this._itemsPerPage;\r\n }\r\n\r\n /**\r\n * Returns the absolute index of the first item on current page in countdown paging.\r\n * @returns number Countdown offset of first item\r\n */\r\n public getCountdownOffset(): number\r\n {\r\n return Math.max(0, this._itemCount - (this.getPageIndex() + 1) * this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Returns the number of items on current page.\r\n * @returns number Number of items on page\r\n */\r\n public getLength(): number\r\n {\r\n return Math.min(this._itemsPerPage, this._itemCount - this.getPageIndex() * this._itemsPerPage);\r\n }\r\n\r\n /**\r\n * Gets indexes for items on current page (zero-based indexes)\r\n * @returns number Array of items indexes\r\n */\r\n public getIndexesPerPage(): number[]\r\n {\r\n const result: number[] = [];\r\n\r\n if(isNaN(this.getOffset()))\r\n {\r\n for(let x = 0; x < this.getItemCount(); x++)\r\n {\r\n result.push(x);\r\n }\r\n }\r\n else\r\n {\r\n for(let x = this.getOffset(); x < this.getOffset() + this.getLength(); x++)\r\n {\r\n result.push(x);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers with specified dispersion\r\n * @param dispersion - Number identifying dispersion\r\n * @returns number Page numbers according specified dispersion\r\n */\r\n public getPagesWithDispersion(dispersion: number): number[]\r\n {\r\n const currentPage = this.getPage();\r\n const pageCount = this.getPageCount();\r\n const numberOfPages = Math.min(pageCount, Math.max(0, dispersion) * 2 + 1) - 1;\r\n let startingPage = Math.max(this._base, currentPage - dispersion);\r\n\r\n if ((currentPage + dispersion) > pageCount)\r\n {\r\n startingPage = pageCount - numberOfPages;\r\n }\r\n\r\n let x: number;\r\n const endingPage = startingPage + numberOfPages;\r\n\r\n const result: number[] = [];\r\n\r\n for (x = startingPage; x <= endingPage; x++)\r\n {\r\n result.push(x);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers with specified dispersion, pages are trimmed if current page is near beginning or end\r\n * @param dispersion - Number identifying dispersion\r\n * @returns number Page numbers according specified dispersion\r\n */\r\n public getPagesWithTrimDispersion(dispersion: number): number[]\r\n {\r\n const currentPage = this.getPage();\r\n const lastPage = this.getLastPage();\r\n const startingPage = Math.max(this._base, currentPage - dispersion);\r\n let x: number;\r\n const endingPage = Math.min(lastPage, currentPage + dispersion);\r\n\r\n const result: number[] = [];\r\n \r\n for (x = startingPage; x <= endingPage; x++)\r\n {\r\n result.push(x);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Gets list of page numbers generated with uniform distribution\r\n * @param numberOfPages - Number of pages that are going to be uniformly distributed between first and last page (including)\r\n * @returns number Uniformly distributed page numbers\r\n */\r\n public getPagesWithUniformDistribution(numberOfPages: number): number[]\r\n {\r\n numberOfPages = Math.max(1, numberOfPages - 1);\r\n const pageCount = this.getPageCount();\r\n numberOfPages = Math.min(numberOfPages, pageCount - 1);\r\n const step = pageCount / numberOfPages;\r\n let page = this.getFirstPage();\r\n let x;\r\n\r\n const result: number[] = [];\r\n\r\n for (x = 0; x < numberOfPages; x++)\r\n {\r\n result.push(Math.round(page));\r\n\r\n page += step;\r\n }\r\n\r\n result.push(pageCount);\r\n \r\n return result;\r\n }\r\n\r\n //######################### protected methods #########################\r\n\r\n /**\r\n * Returns zero-based page number.\r\n * @returns number Zero-based page number\r\n */\r\n protected getPageIndex(): number\r\n {\r\n return Math.min(Math.max(0, this._page - this._base), Math.max(0, this.getPageCount() - 1));\r\n }\r\n}"]}
@@ -1,4 +1,3 @@
1
- import extendLib from 'extend';
2
1
  import { isBlank, isJsObject, isPresent } from './lang';
3
2
  /**
4
3
  * Reverse current string and returns new reverse string
@@ -8,15 +7,6 @@ import { isBlank, isJsObject, isPresent } from './lang';
8
7
  export function reverseString(str) {
9
8
  return str.split('').reverse().join('');
10
9
  }
11
- /**
12
- * Extends one object with additional properties from other objects, supports deep extend
13
- * @param deepOrObject - Object to be extended or indication that deep copy should be performed
14
- * @param objectN - Objects that will be used for extending, if deep is used first here is target object
15
- * @returns Object Extended object with properties from other objects
16
- */
17
- export function extend(deepOrObject, ...objectN) {
18
- return extendLib.apply(null, [deepOrObject, ...objectN]);
19
- }
20
10
  /**
21
11
  * Generates random string consisting from lowercase letters
22
12
  * @param length - Length of generated string
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import extendLib from 'extend';\r\n\r\nimport {isBlank, isJsObject, isPresent} from './lang';\r\nimport {AsDictionary, Dictionary} from '../types/dictionaries';\r\nimport {Enum} from '../types/enums';\r\nimport {ValueNamePair} from '../types/valueNamePair';\r\n\r\n/**\r\n * Reverse current string and returns new reverse string\r\n * @param str - String to be reversed\r\n * @returns string Reverse string\r\n */\r\nexport function reverseString(str: string): string\r\n{\r\n return str.split('').reverse().join('');\r\n}\r\n\r\n/**\r\n * Extends target object with source\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source - Object that will be used for extending\r\n */\r\nexport function extend<T, U>(deep: boolean, target: T, source: U): T & U;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V>(deep: boolean, target: T, source1: U, source2: V): T & U & V;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W>(deep: boolean, target: T, source1: U, source2: V, source3: W): T & U & V & W;\r\n/**\r\n * Extends target object with source objects\r\n * @param deep - Indication whether deep copy should be performed\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n * @param source4 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W, X>(deep: boolean, target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source - Object that will be used for extending\r\n */\r\nexport function extend<T, U>(target: T, source: U): T & U;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V>(target: T, source1: U, source2: V): T & U & V;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\r\n/**\r\n * Extends target object with source\r\n * @param target - Object that will extended\r\n * @param source1 - Object that will be used for extending\r\n * @param source2 - Object that will be used for extending\r\n * @param source3 - Object that will be used for extending\r\n * @param source4 - Object that will be used for extending\r\n */\r\nexport function extend<T, U, V, W, X>(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\r\n/**\r\n * Extends one object with additional properties from other objects, supports deep extend\r\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\r\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\r\n * @returns Object Extended object with properties from other objects\r\n */\r\nexport function extend<TResult>(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): TResult;\r\n/**\r\n * Extends one object with additional properties from other objects, supports deep extend\r\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\r\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\r\n * @returns Object Extended object with properties from other objects\r\n */\r\nexport function extend(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): Dictionary\r\n{\r\n return extendLib.apply(null, [deepOrObject, ...objectN]);\r\n}\r\n\r\n/**\r\n * Generates random string consisting from lowercase letters\r\n * @param length - Length of generated string\r\n * @returns number Generated string\r\n */\r\nexport function generateId(length: number): string\r\n{\r\n let result = '';\r\n\r\n for(let x = 0; x < length; x++)\r\n {\r\n result += String.fromCharCode(Math.round(Math.random() * 25 + 97));\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Generates random string of specified length from possible characters\r\n * @param length - Length of generated string\r\n * @param possible - Possible characters used for generation of string\r\n */\r\nexport function generateRandomString(length: number, possible: string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string\r\n{\r\n let text = '';\r\n\r\n for (let i = 0;i < length; i++)\r\n {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n}\r\n\r\n/**\r\n * Converts string in that way that first letter will be lowerCase\r\n * @param text - Text to be converted\r\n */\r\nexport function firstToLowerCase(text: string): string\r\n{\r\n return text.charAt(0).toLowerCase() + text.substr(1);\r\n}\r\n\r\n/**\r\n * Gets indication whether is child descendand of parent\r\n * @param parent - Parent to be tested\r\n * @param child - Child to be looked for\r\n */\r\nexport function isDescendant(parent: HTMLElement, child: HTMLElement): boolean\r\n{\r\n let node = child.parentNode;\r\n\r\n while (node != null)\r\n {\r\n if (node == parent)\r\n {\r\n return true;\r\n }\r\n\r\n node = node.parentNode;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Computes offset of element against document\r\n * @param element - Html element which offset is counted\r\n * @param doc - Html document to be used for extracting scroll offset\r\n */\r\nexport function offset(element: HTMLElement, doc?: Document)\r\n{\r\n doc = doc || document;\r\n\r\n const rect = element.getBoundingClientRect(),\r\n scrollLeft = window.pageXOffset || doc.documentElement.scrollLeft,\r\n scrollTop = window.pageYOffset || doc.documentElement.scrollTop;\r\n\r\n return {\r\n top: rect.top + scrollTop,\r\n left: rect.left + scrollLeft,\r\n bottom: rect.top + scrollTop + rect.height,\r\n right: rect.left + scrollLeft + rect.width\r\n };\r\n}\r\n\r\n/**\r\n * Converts html string into html DOM\r\n * @param html - Html string to be converted to DOM\r\n * @param doc - Optional html document to be used\r\n */\r\nexport function htmlToElement(html: string, doc?: Document): HTMLElement\r\n{\r\n let htmlDocument = document;\r\n\r\n if(isPresent(doc))\r\n {\r\n htmlDocument = doc;\r\n }\r\n\r\n const template = htmlDocument.createElement('template');\r\n html = html.trim();\r\n template.innerHTML = html;\r\n\r\n return template.content.firstChild as HTMLElement;\r\n}\r\n\r\n/**\r\n * Extract values from enum type\r\n * @param enumType - Enum type that will have extracted values\r\n */\r\nexport function getEnumValues<TEnum extends Enum>(enumType: TEnum): ValueNamePair[]\r\n{\r\n const result: ValueNamePair[] = [];\r\n\r\n Object.keys(enumType).forEach(key =>\r\n {\r\n if(isNaN(+key))\r\n {\r\n return;\r\n }\r\n\r\n result.push(\r\n {\r\n value: key,\r\n name: enumType[+key]\r\n });\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Safely returns value from object property using string expression\r\n * @param object - Object which property value will be obtained\r\n * @param expression - Expression for obtaining value\r\n */\r\nexport function getValue<TValue = unknown>(object: Record<string, unknown>, expression: string): TValue\r\nexport function getValue(object: Record<string, any>, expression: string): unknown\r\n{\r\n return expression.split('.').reduce((o, i) =>\r\n {\r\n if(o)\r\n {\r\n return o[i];\r\n }\r\n\r\n return null;\r\n }, object);\r\n}\r\n\r\n/**\r\n * Sets value to objects property using string expression\r\n * @param object - Object which property value will be set\r\n * @param value - Value that will be set\r\n * @param expression - Expression for setting value\r\n */\r\nexport function setValue(object: Dictionary<any>, value: unknown, expression: string): void\r\n{\r\n const parts = expression.split('.');\r\n\r\n parts.forEach((part, index) =>\r\n {\r\n //last item value is assigned\r\n if(index == parts.length - 1)\r\n {\r\n if(isPresent(value))\r\n {\r\n object[part] = value;\r\n }\r\n\r\n return;\r\n }\r\n\r\n object = object[part] = object[part] ?? {};\r\n });\r\n}\r\n\r\n/**\r\n * Formats string using '%s', to print '%s' you have to use '%%s'\r\n * @param str - String containing substitution constants\r\n * @param args - Arguments that are used for replacement\r\n */\r\nexport function format(str: string, ...args: unknown[]): string\r\n{\r\n let i = 0;\r\n\r\n return str.replace(/((?!%).)%s/g, (_sub, substArgs) => `${substArgs[0]}${args[i++]}`).replace(/%%s/g, '%s');\r\n}\r\n\r\n/**\r\n * Performs flatMap over provided array\r\n * @param array - Array to be reduced using flatMap\r\n */\r\nexport function flatMapArray<TItem>(array: TItem[][]): TItem[]\r\n{\r\n return array.reduce((acc, x) => acc.concat(x), []);\r\n}\r\n\r\n/**\r\n * Serialize object to string that is usable as url query parameter\r\n * @param obj - Object to be serialized\r\n * @param replacer - Function that can be used for replacing provided values\r\n */\r\nexport function serializeToUrlQuery<TObj>(obj: TObj, replacer?: (this: any, key: string, value: any) => any): string\r\n{\r\n return btoa(encodeURIComponent(JSON.stringify(obj, replacer)));\r\n}\r\n\r\n/**\r\n * Deserialize value from url query string into object\r\n * @param queryParamValue - Query param string value\r\n * @param reviver - Function that can be used for correctly deserializing value\r\n */\r\nexport function deserializeFromUrlQuery<TObj>(queryParamValue: string, reviver?: (this: any, key: string, value: any) => any): TObj\r\n{\r\n return JSON.parse(decodeURIComponent(atob(queryParamValue)), reviver);\r\n}\r\n\r\n/**\r\n * Converts id to valid html id\r\n * @param id - Id that is going to be converted to valid html id\r\n */\r\nexport function validHtmlId(id: string): string\r\n{\r\n id = id.toLowerCase();\r\n id = normalizeAccent(id);\r\n\r\n id = id.replace(/^([^a-z])/g, 'x$1')\r\n .replace(/[^a-z0-9-_:]+/g, '-');\r\n\r\n return id;\r\n}\r\n\r\n/**\r\n * Checks whether is element overflown either horizontal, or vertical\r\n * @param element - Element to be tested for overflow\r\n */\r\nexport function isOverflown(element: HTMLElement): boolean\r\n{\r\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\r\n}\r\n\r\n/**\r\n * Normalizes string, removing accent\r\n * @param value - String to be normalized\r\n */\r\nexport function normalizeAccent(value: string): string\r\n{\r\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n}\r\n\r\n/**\r\n * Converts instance of Class to equivalent Record type\r\n * @param instance - Instance which type to be converted\r\n * @typeparam TType - Type of instance\r\n */\r\nexport function asDictionary<TType>(instance: TType): AsDictionary<TType>\r\n{\r\n return instance as AsDictionary<TType>;\r\n}\r\n\r\n/**\r\n * Maps all iterable property values of object to \"this\" bounded\r\n * @param this - Object which will be filled with new values\r\n * @param value - Object holding values that will be used for filling\r\n * @param all - Indication whether map only existing properties or everything\r\n */\r\nexport function mapValuesToThis(this: Dictionary<any>, value: Dictionary<any>|undefined|null, all: boolean = false): void\r\n{\r\n if(!value)\r\n {\r\n return;\r\n }\r\n\r\n Object.keys(value).forEach(prop =>\r\n {\r\n if(value[prop] !== undefined && (all || (prop in this)))\r\n {\r\n this[prop] = value[prop];\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Briefly shows simple notification with simple text\r\n * @param show - Indication whether show notification\r\n * @param text - Text to be displayed, defaults to HMR finished text\r\n */\r\nexport function simpleNotification(show: boolean, text: string = 'HMR finished, app updated!'): void\r\n{\r\n if (show)\r\n {\r\n let div: HTMLDivElement|null = document.createElement('div');\r\n div.style.position = 'absolute';\r\n div.style.zIndex = '54345';\r\n div.style.background = 'rgb(255, 255, 255) none repeat scroll 0% 0%';\r\n div.style.padding = '8px';\r\n div.style.fontWeight = 'bold';\r\n div.style.borderRadius = 'bold';\r\n div.style.color = 'rgb(21, 57, 255)';\r\n div.style.left = '47%';\r\n div.style.top = '11px';\r\n div.style.boxShadow = '0px 0px 4px rgb(170, 170, 170)';\r\n div.style.transition = 'all 500ms';\r\n div.style.opacity = '0';\r\n\r\n div.innerText = text;\r\n\r\n document.body.append(div);\r\n\r\n setTimeout(() => div!.style.opacity = '1', 50);\r\n\r\n setTimeout(() =>\r\n {\r\n if(div)\r\n {\r\n div.style.opacity = '0';\r\n\r\n setTimeout(() =>\r\n {\r\n div!.remove();\r\n div = null;\r\n }, 500);\r\n }\r\n }, 2000);\r\n }\r\n}\r\n\r\n/**\r\n * Transforms any string to colour code\r\n * @param str - String to be changed to colour code\r\n */\r\nexport function stringToColour(str: string): string\r\n{\r\n let hash = 0;\r\n\r\n for (let i = 0; i < str.length; i++)\r\n {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n\r\n let colour = '#';\r\n\r\n for (let i = 0; i < 3; i++)\r\n {\r\n const value = (hash >> (i * 8)) & 0xFF;\r\n colour += ('00' + value.toString(16)).substr(-2);\r\n }\r\n\r\n return colour;\r\n}\r\n\r\n/**\r\n * Renders element into body directly or into container element\r\n * @param document - Html document instance\r\n * @param element - Html element that will be rendered\r\n * @param containerElementSelector - Css selector for container element, if not specified renders into body, css selector must contain element name and optionally css classes\r\n */\r\nexport function renderToBody(document: Document, element: HTMLElement, containerElementSelector?: string|null): void\r\n{\r\n //render to specified target element\r\n if(containerElementSelector)\r\n {\r\n let containerElement = document.querySelector(`body ${containerElementSelector}`);\r\n\r\n //render to specified target element\r\n if(!containerElement)\r\n {\r\n const [name, ...css] = containerElementSelector.split('.');\r\n\r\n containerElement = document.createElement(name);\r\n\r\n if(!name)\r\n {\r\n throw new Error('renderToBody: missing name of element');\r\n }\r\n\r\n if(css?.length)\r\n {\r\n for(const cssClass of css)\r\n {\r\n containerElement.classList.add(cssClass);\r\n }\r\n }\r\n\r\n document.body.appendChild(containerElement);\r\n }\r\n\r\n containerElement.appendChild(element);\r\n }\r\n //render directly to body\r\n else\r\n {\r\n document.body.appendChild(element);\r\n }\r\n}\r\n\r\n/**\r\n * Formats input string using no parameters, returns original input\r\n * @param input - Input that will be formatted\r\n */\r\nexport function formatString(input: string|undefined|null, parameter?: null): string\r\n/**\r\n * Formats input string using object holding formatting parameters\r\n * @param input - Input that will be formatted\r\n * @param parameter - Parameter as object which properties will be used for formatting\r\n *\r\n * ```\r\n * formatString('test {{val}}, {{test}} {{test.num}} {{@test}}, {{@(2)test}} {{@test.bool}}', {val: 3, test: {bool: true, num: 10}});\r\n * ```\r\n *\r\n * displays `{{val}}` as direct stringified value of '`val`' property\r\n * displays `{{test}}` as direct strinfigied value of '`test`' property\r\n * displays `{{test.num}}` as direct strinfigied value of '`test`' property and its subproperty '`num`'\r\n * displays `{{@test}}` as JSON strinfigied value of '`test`' property\r\n * displays `{{@(2)test}}` as JSON stringified value of '`test`' property with 2 spaces indentation (other supported spaces are 4 and 8)\r\n * displays `{{@test.bool}}` as JSON stringified value of '`test`' property and its subproperty '`bool`'\r\n */\r\nexport function formatString(input: string|undefined|null, parameter: Record<string, unknown>): string\r\n/**\r\n * Formats input string using array holding formatting parameters\r\n * @param input - Input that will be formatted\r\n * @param parameter - Parameter as array which items will be used for formatting\r\n *\r\n * ```\r\n * formatString('test {{0}}, {{@1}}, {{@(2)1}}', [3, {bool: true, num: 10}])\r\n * ```\r\n *\r\n * displays `{{0}}` as direct stringified value of '`0`' index item\r\n * displays `{{@1}}` as JSON strinfigied value of '`0`' index item\r\n * displays `{{@(2)1}}` as JSON stringified value of '`0`' index item with 2 spaces indentation (other supported spaces are 4 and 8)\r\n */\r\nexport function formatString(input: string|undefined|null, ...parameters: unknown[]): string\r\nexport function formatString(input: string|undefined|null, ...parameters: unknown[]|[Record<string, unknown>]): string\r\n{\r\n if(isBlank(input))\r\n {\r\n return '';\r\n }\r\n\r\n //formatting using object\r\n if(parameters.length == 1 && isJsObject(parameters[0]))\r\n {\r\n const parameter = parameters[0] as Record<string, unknown>;\r\n\r\n for(const prop in parameter)\r\n {\r\n input = input?.replace(new RegExp('\\\\{\\\\{' + prop + '((?:\\\\.[A-Za-z0-9$_]+)*)\\\\}\\\\}', 'g'), (_, ...args) =>\r\n {\r\n const expression = !args[0] ? prop : prop + args[0];\r\n\r\n return getValue<string>(parameter, expression);\r\n });\r\n\r\n input = input?.replace(new RegExp('\\\\{\\\\{@(?:\\\\(([2|4|8])\\\\))?' + prop + '((?:\\\\.[A-Za-z0-9$_]+)*)\\\\}\\\\}', 'g'), (_, ...args) =>\r\n {\r\n const expression = !args[1] ? prop : prop + args[1];\r\n\r\n if(isBlank(args[0]))\r\n {\r\n return JSON.stringify(getValue(parameter, expression));\r\n }\r\n\r\n return JSON.stringify(getValue(parameter, expression), null, +args[0]);\r\n });\r\n }\r\n }\r\n //formatting using array of values\r\n else\r\n {\r\n //no formatting parameters\r\n if(!parameters.length)\r\n {\r\n return input;\r\n }\r\n\r\n for(let x = 0; x < parameters.length; x++)\r\n {\r\n input = input?.replace(new RegExp('\\\\{' + x + '\\\\}', 'g'), `${parameters[x]}`);\r\n input = input?.replace(new RegExp('\\\\{@(?:\\\\(([2|4|8])\\\\))?' + x + '\\\\}', 'g'), (_, ...args) =>\r\n {\r\n if(isBlank(args[0]))\r\n {\r\n return JSON.stringify(parameters[x]);\r\n }\r\n\r\n return JSON.stringify(parameters[x], null, +args[0]);\r\n });\r\n }\r\n }\r\n\r\n return input;\r\n}\r\n\r\n/**\r\n * Tests whether is element input type checkbox\r\n * @param element - Element to be tested\r\n */\r\nexport function isCheckbox(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).type === 'checkbox';\r\n}\r\n\r\n/**\r\n * Tests whether is element input type radio\r\n * @param element - Element to be tested\r\n */\r\nexport function isRadio(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).type === 'radio';\r\n}\r\n\r\n/**\r\n * Tests whether is element input\r\n * @param element - Element to be tested\r\n */\r\nexport function isInput(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).nodeName === 'INPUT';\r\n}\r\n\r\n/**\r\n * Tests whether is element select\r\n * @param element - Element to be tested\r\n */\r\nexport function isSelect(element: EventTarget): element is HTMLSelectElement\r\n{\r\n return (element as HTMLSelectElement).nodeName === 'SELECT';\r\n}\r\n\r\n/**\r\n * Tests whether is element button\r\n * @param element - Element to be tested\r\n */\r\nexport function isButton(element: EventTarget): element is HTMLButtonElement\r\n{\r\n return (element as HTMLButtonElement).nodeName === 'BUTTON';\r\n}\r\n\r\n/**\r\n * Tests whether is element anchor\r\n * @param element - Element to be tested\r\n */\r\nexport function isAnchor(element: EventTarget): element is HTMLAnchorElement\r\n{\r\n return (element as HTMLAnchorElement).nodeName === 'A';\r\n}"]}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["import {isBlank, isJsObject, isPresent} from './lang';\r\nimport {AsDictionary, Dictionary} from '../types/dictionaries';\r\nimport {Enum} from '../types/enums';\r\nimport {ValueNamePair} from '../types/valueNamePair';\r\n\r\n/**\r\n * Reverse current string and returns new reverse string\r\n * @param str - String to be reversed\r\n * @returns string Reverse string\r\n */\r\nexport function reverseString(str: string): string\r\n{\r\n return str.split('').reverse().join('');\r\n}\r\n\r\n/**\r\n * Generates random string consisting from lowercase letters\r\n * @param length - Length of generated string\r\n * @returns number Generated string\r\n */\r\nexport function generateId(length: number): string\r\n{\r\n let result = '';\r\n\r\n for(let x = 0; x < length; x++)\r\n {\r\n result += String.fromCharCode(Math.round(Math.random() * 25 + 97));\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Generates random string of specified length from possible characters\r\n * @param length - Length of generated string\r\n * @param possible - Possible characters used for generation of string\r\n */\r\nexport function generateRandomString(length: number, possible: string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'): string\r\n{\r\n let text = '';\r\n\r\n for (let i = 0;i < length; i++)\r\n {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n\r\n return text;\r\n}\r\n\r\n/**\r\n * Converts string in that way that first letter will be lowerCase\r\n * @param text - Text to be converted\r\n */\r\nexport function firstToLowerCase(text: string): string\r\n{\r\n return text.charAt(0).toLowerCase() + text.substr(1);\r\n}\r\n\r\n/**\r\n * Gets indication whether is child descendand of parent\r\n * @param parent - Parent to be tested\r\n * @param child - Child to be looked for\r\n */\r\nexport function isDescendant(parent: HTMLElement, child: HTMLElement): boolean\r\n{\r\n let node = child.parentNode;\r\n\r\n while (node != null)\r\n {\r\n if (node == parent)\r\n {\r\n return true;\r\n }\r\n\r\n node = node.parentNode;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Computes offset of element against document\r\n * @param element - Html element which offset is counted\r\n * @param doc - Html document to be used for extracting scroll offset\r\n */\r\nexport function offset(element: HTMLElement, doc?: Document)\r\n{\r\n doc = doc || document;\r\n\r\n const rect = element.getBoundingClientRect(),\r\n scrollLeft = window.pageXOffset || doc.documentElement.scrollLeft,\r\n scrollTop = window.pageYOffset || doc.documentElement.scrollTop;\r\n\r\n return {\r\n top: rect.top + scrollTop,\r\n left: rect.left + scrollLeft,\r\n bottom: rect.top + scrollTop + rect.height,\r\n right: rect.left + scrollLeft + rect.width\r\n };\r\n}\r\n\r\n/**\r\n * Converts html string into html DOM\r\n * @param html - Html string to be converted to DOM\r\n * @param doc - Optional html document to be used\r\n */\r\nexport function htmlToElement(html: string, doc?: Document): HTMLElement\r\n{\r\n let htmlDocument = document;\r\n\r\n if(isPresent(doc))\r\n {\r\n htmlDocument = doc;\r\n }\r\n\r\n const template = htmlDocument.createElement('template');\r\n html = html.trim();\r\n template.innerHTML = html;\r\n\r\n return template.content.firstChild as HTMLElement;\r\n}\r\n\r\n/**\r\n * Extract values from enum type\r\n * @param enumType - Enum type that will have extracted values\r\n */\r\nexport function getEnumValues<TEnum extends Enum>(enumType: TEnum): ValueNamePair[]\r\n{\r\n const result: ValueNamePair[] = [];\r\n\r\n Object.keys(enumType).forEach(key =>\r\n {\r\n if(isNaN(+key))\r\n {\r\n return;\r\n }\r\n\r\n result.push(\r\n {\r\n value: key,\r\n name: enumType[+key]\r\n });\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Safely returns value from object property using string expression\r\n * @param object - Object which property value will be obtained\r\n * @param expression - Expression for obtaining value\r\n */\r\nexport function getValue<TValue = unknown>(object: Record<string, unknown>, expression: string): TValue\r\nexport function getValue(object: Record<string, any>, expression: string): unknown\r\n{\r\n return expression.split('.').reduce((o, i) =>\r\n {\r\n if(o)\r\n {\r\n return o[i];\r\n }\r\n\r\n return null;\r\n }, object);\r\n}\r\n\r\n/**\r\n * Sets value to objects property using string expression\r\n * @param object - Object which property value will be set\r\n * @param value - Value that will be set\r\n * @param expression - Expression for setting value\r\n */\r\nexport function setValue(object: Dictionary<any>, value: unknown, expression: string): void\r\n{\r\n const parts = expression.split('.');\r\n\r\n parts.forEach((part, index) =>\r\n {\r\n //last item value is assigned\r\n if(index == parts.length - 1)\r\n {\r\n if(isPresent(value))\r\n {\r\n object[part] = value;\r\n }\r\n\r\n return;\r\n }\r\n\r\n object = object[part] = object[part] ?? {};\r\n });\r\n}\r\n\r\n/**\r\n * Formats string using '%s', to print '%s' you have to use '%%s'\r\n * @param str - String containing substitution constants\r\n * @param args - Arguments that are used for replacement\r\n */\r\nexport function format(str: string, ...args: unknown[]): string\r\n{\r\n let i = 0;\r\n\r\n return str.replace(/((?!%).)%s/g, (_sub, substArgs) => `${substArgs[0]}${args[i++]}`).replace(/%%s/g, '%s');\r\n}\r\n\r\n/**\r\n * Performs flatMap over provided array\r\n * @param array - Array to be reduced using flatMap\r\n */\r\nexport function flatMapArray<TItem>(array: TItem[][]): TItem[]\r\n{\r\n return array.reduce((acc, x) => acc.concat(x), []);\r\n}\r\n\r\n/**\r\n * Serialize object to string that is usable as url query parameter\r\n * @param obj - Object to be serialized\r\n * @param replacer - Function that can be used for replacing provided values\r\n */\r\nexport function serializeToUrlQuery<TObj>(obj: TObj, replacer?: (this: any, key: string, value: any) => any): string\r\n{\r\n return btoa(encodeURIComponent(JSON.stringify(obj, replacer)));\r\n}\r\n\r\n/**\r\n * Deserialize value from url query string into object\r\n * @param queryParamValue - Query param string value\r\n * @param reviver - Function that can be used for correctly deserializing value\r\n */\r\nexport function deserializeFromUrlQuery<TObj>(queryParamValue: string, reviver?: (this: any, key: string, value: any) => any): TObj\r\n{\r\n return JSON.parse(decodeURIComponent(atob(queryParamValue)), reviver);\r\n}\r\n\r\n/**\r\n * Converts id to valid html id\r\n * @param id - Id that is going to be converted to valid html id\r\n */\r\nexport function validHtmlId(id: string): string\r\n{\r\n id = id.toLowerCase();\r\n id = normalizeAccent(id);\r\n\r\n id = id.replace(/^([^a-z])/g, 'x$1')\r\n .replace(/[^a-z0-9-_:]+/g, '-');\r\n\r\n return id;\r\n}\r\n\r\n/**\r\n * Checks whether is element overflown either horizontal, or vertical\r\n * @param element - Element to be tested for overflow\r\n */\r\nexport function isOverflown(element: HTMLElement): boolean\r\n{\r\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\r\n}\r\n\r\n/**\r\n * Normalizes string, removing accent\r\n * @param value - String to be normalized\r\n */\r\nexport function normalizeAccent(value: string): string\r\n{\r\n return value.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n}\r\n\r\n/**\r\n * Converts instance of Class to equivalent Record type\r\n * @param instance - Instance which type to be converted\r\n * @typeparam TType - Type of instance\r\n */\r\nexport function asDictionary<TType>(instance: TType): AsDictionary<TType>\r\n{\r\n return instance as AsDictionary<TType>;\r\n}\r\n\r\n/**\r\n * Maps all iterable property values of object to \"this\" bounded\r\n * @param this - Object which will be filled with new values\r\n * @param value - Object holding values that will be used for filling\r\n * @param all - Indication whether map only existing properties or everything\r\n */\r\nexport function mapValuesToThis(this: Dictionary<any>, value: Dictionary<any>|undefined|null, all: boolean = false): void\r\n{\r\n if(!value)\r\n {\r\n return;\r\n }\r\n\r\n Object.keys(value).forEach(prop =>\r\n {\r\n if(value[prop] !== undefined && (all || (prop in this)))\r\n {\r\n this[prop] = value[prop];\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Briefly shows simple notification with simple text\r\n * @param show - Indication whether show notification\r\n * @param text - Text to be displayed, defaults to HMR finished text\r\n */\r\nexport function simpleNotification(show: boolean, text: string = 'HMR finished, app updated!'): void\r\n{\r\n if (show)\r\n {\r\n let div: HTMLDivElement|null = document.createElement('div');\r\n div.style.position = 'absolute';\r\n div.style.zIndex = '54345';\r\n div.style.background = 'rgb(255, 255, 255) none repeat scroll 0% 0%';\r\n div.style.padding = '8px';\r\n div.style.fontWeight = 'bold';\r\n div.style.borderRadius = 'bold';\r\n div.style.color = 'rgb(21, 57, 255)';\r\n div.style.left = '47%';\r\n div.style.top = '11px';\r\n div.style.boxShadow = '0px 0px 4px rgb(170, 170, 170)';\r\n div.style.transition = 'all 500ms';\r\n div.style.opacity = '0';\r\n\r\n div.innerText = text;\r\n\r\n document.body.append(div);\r\n\r\n setTimeout(() => div!.style.opacity = '1', 50);\r\n\r\n setTimeout(() =>\r\n {\r\n if(div)\r\n {\r\n div.style.opacity = '0';\r\n\r\n setTimeout(() =>\r\n {\r\n div!.remove();\r\n div = null;\r\n }, 500);\r\n }\r\n }, 2000);\r\n }\r\n}\r\n\r\n/**\r\n * Transforms any string to colour code\r\n * @param str - String to be changed to colour code\r\n */\r\nexport function stringToColour(str: string): string\r\n{\r\n let hash = 0;\r\n\r\n for (let i = 0; i < str.length; i++)\r\n {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n\r\n let colour = '#';\r\n\r\n for (let i = 0; i < 3; i++)\r\n {\r\n const value = (hash >> (i * 8)) & 0xFF;\r\n colour += ('00' + value.toString(16)).substr(-2);\r\n }\r\n\r\n return colour;\r\n}\r\n\r\n/**\r\n * Renders element into body directly or into container element\r\n * @param document - Html document instance\r\n * @param element - Html element that will be rendered\r\n * @param containerElementSelector - Css selector for container element, if not specified renders into body, css selector must contain element name and optionally css classes\r\n */\r\nexport function renderToBody(document: Document, element: HTMLElement, containerElementSelector?: string|null): void\r\n{\r\n //render to specified target element\r\n if(containerElementSelector)\r\n {\r\n let containerElement = document.querySelector(`body ${containerElementSelector}`);\r\n\r\n //render to specified target element\r\n if(!containerElement)\r\n {\r\n const [name, ...css] = containerElementSelector.split('.');\r\n\r\n containerElement = document.createElement(name);\r\n\r\n if(!name)\r\n {\r\n throw new Error('renderToBody: missing name of element');\r\n }\r\n\r\n if(css?.length)\r\n {\r\n for(const cssClass of css)\r\n {\r\n containerElement.classList.add(cssClass);\r\n }\r\n }\r\n\r\n document.body.appendChild(containerElement);\r\n }\r\n\r\n containerElement.appendChild(element);\r\n }\r\n //render directly to body\r\n else\r\n {\r\n document.body.appendChild(element);\r\n }\r\n}\r\n\r\n/**\r\n * Formats input string using no parameters, returns original input\r\n * @param input - Input that will be formatted\r\n */\r\nexport function formatString(input: string|undefined|null, parameter?: null): string\r\n/**\r\n * Formats input string using object holding formatting parameters\r\n * @param input - Input that will be formatted\r\n * @param parameter - Parameter as object which properties will be used for formatting\r\n *\r\n * ```\r\n * formatString('test {{val}}, {{test}} {{test.num}} {{@test}}, {{@(2)test}} {{@test.bool}}', {val: 3, test: {bool: true, num: 10}});\r\n * ```\r\n *\r\n * displays `{{val}}` as direct stringified value of '`val`' property\r\n * displays `{{test}}` as direct strinfigied value of '`test`' property\r\n * displays `{{test.num}}` as direct strinfigied value of '`test`' property and its subproperty '`num`'\r\n * displays `{{@test}}` as JSON strinfigied value of '`test`' property\r\n * displays `{{@(2)test}}` as JSON stringified value of '`test`' property with 2 spaces indentation (other supported spaces are 4 and 8)\r\n * displays `{{@test.bool}}` as JSON stringified value of '`test`' property and its subproperty '`bool`'\r\n */\r\nexport function formatString(input: string|undefined|null, parameter: Record<string, unknown>): string\r\n/**\r\n * Formats input string using array holding formatting parameters\r\n * @param input - Input that will be formatted\r\n * @param parameter - Parameter as array which items will be used for formatting\r\n *\r\n * ```\r\n * formatString('test {{0}}, {{@1}}, {{@(2)1}}', [3, {bool: true, num: 10}])\r\n * ```\r\n *\r\n * displays `{{0}}` as direct stringified value of '`0`' index item\r\n * displays `{{@1}}` as JSON strinfigied value of '`0`' index item\r\n * displays `{{@(2)1}}` as JSON stringified value of '`0`' index item with 2 spaces indentation (other supported spaces are 4 and 8)\r\n */\r\nexport function formatString(input: string|undefined|null, ...parameters: unknown[]): string\r\nexport function formatString(input: string|undefined|null, ...parameters: unknown[]|[Record<string, unknown>]): string\r\n{\r\n if(isBlank(input))\r\n {\r\n return '';\r\n }\r\n\r\n //formatting using object\r\n if(parameters.length == 1 && isJsObject(parameters[0]))\r\n {\r\n const parameter = parameters[0] as Record<string, unknown>;\r\n\r\n for(const prop in parameter)\r\n {\r\n input = input?.replace(new RegExp('\\\\{\\\\{' + prop + '((?:\\\\.[A-Za-z0-9$_]+)*)\\\\}\\\\}', 'g'), (_, ...args) =>\r\n {\r\n const expression = !args[0] ? prop : prop + args[0];\r\n\r\n return getValue<string>(parameter, expression);\r\n });\r\n\r\n input = input?.replace(new RegExp('\\\\{\\\\{@(?:\\\\(([2|4|8])\\\\))?' + prop + '((?:\\\\.[A-Za-z0-9$_]+)*)\\\\}\\\\}', 'g'), (_, ...args) =>\r\n {\r\n const expression = !args[1] ? prop : prop + args[1];\r\n\r\n if(isBlank(args[0]))\r\n {\r\n return JSON.stringify(getValue(parameter, expression));\r\n }\r\n\r\n return JSON.stringify(getValue(parameter, expression), null, +args[0]);\r\n });\r\n }\r\n }\r\n //formatting using array of values\r\n else\r\n {\r\n //no formatting parameters\r\n if(!parameters.length)\r\n {\r\n return input;\r\n }\r\n\r\n for(let x = 0; x < parameters.length; x++)\r\n {\r\n input = input?.replace(new RegExp('\\\\{' + x + '\\\\}', 'g'), `${parameters[x]}`);\r\n input = input?.replace(new RegExp('\\\\{@(?:\\\\(([2|4|8])\\\\))?' + x + '\\\\}', 'g'), (_, ...args) =>\r\n {\r\n if(isBlank(args[0]))\r\n {\r\n return JSON.stringify(parameters[x]);\r\n }\r\n\r\n return JSON.stringify(parameters[x], null, +args[0]);\r\n });\r\n }\r\n }\r\n\r\n return input;\r\n}\r\n\r\n/**\r\n * Tests whether is element input type checkbox\r\n * @param element - Element to be tested\r\n */\r\nexport function isCheckbox(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).type === 'checkbox';\r\n}\r\n\r\n/**\r\n * Tests whether is element input type radio\r\n * @param element - Element to be tested\r\n */\r\nexport function isRadio(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).type === 'radio';\r\n}\r\n\r\n/**\r\n * Tests whether is element input\r\n * @param element - Element to be tested\r\n */\r\nexport function isInput(element: EventTarget): element is HTMLInputElement\r\n{\r\n return (element as HTMLInputElement).nodeName === 'INPUT';\r\n}\r\n\r\n/**\r\n * Tests whether is element select\r\n * @param element - Element to be tested\r\n */\r\nexport function isSelect(element: EventTarget): element is HTMLSelectElement\r\n{\r\n return (element as HTMLSelectElement).nodeName === 'SELECT';\r\n}\r\n\r\n/**\r\n * Tests whether is element button\r\n * @param element - Element to be tested\r\n */\r\nexport function isButton(element: EventTarget): element is HTMLButtonElement\r\n{\r\n return (element as HTMLButtonElement).nodeName === 'BUTTON';\r\n}\r\n\r\n/**\r\n * Tests whether is element anchor\r\n * @param element - Element to be tested\r\n */\r\nexport function isAnchor(element: EventTarget): element is HTMLAnchorElement\r\n{\r\n return (element as HTMLAnchorElement).nodeName === 'A';\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAO,GAAS;IAErC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ;IAE5B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAE9B,OAAO,OAAO,GAAG,KAAK,SAAS,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAE7B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAE7B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ;IAE/B,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ;IAE3B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAEhC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAEnD,MAAM,UAAU,iBAAiB,CAAC,GAAQ;IAEtC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAQ;IAE5B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ;IAE3B,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,IAAI;AAGpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAsB,GAAwB;IAExE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAM;IAE7B,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAEhC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,IAAS;IAEnD,OAAO,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAQ;IAElC,KAAK,MAAM,KAAK,IAAI,GAAG,EACvB;QACI,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,MAAe;IAE3D,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/**\r\n * Tests whether is object not `null` and not `undefined` at the same time\r\n * @param obj - Object to be tested\r\n */\r\nexport function isPresent<TObj>(obj: TObj): obj is NonNullable<TObj>\r\n{\r\n return obj !== undefined && obj !== null;\r\n}\r\n\r\n/**\r\n * Tests whether is object `null` or `undefined`\r\n * @param obj - Object to be tested\r\n */\r\nexport function isBlank(obj: any): obj is null|undefined\r\n{\r\n return obj === undefined || obj === null;\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of `boolean`\r\n * @param obj - Object to be tested\r\n */\r\nexport function isBoolean(obj: any): obj is boolean\r\n{\r\n return typeof obj === 'boolean';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of number\r\n * @param obj - Object to be tested\r\n */\r\nexport function isNumber(obj: any): obj is number\r\n{\r\n return typeof obj === 'number';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of string\r\n * @param obj - Object to be tested\r\n */\r\nexport function isString(obj: any): obj is string\r\n{\r\n return typeof obj === 'string';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of function\r\n * @param obj - Object to be tested\r\n */\r\nexport function isFunction(obj: any): obj is Function\r\n{\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isType(obj: any): obj is Function\r\n{\r\n return isFunction(obj);\r\n}\r\n\r\nexport function isStringMap(obj: any): obj is Object\r\n{\r\n return typeof obj === 'object' && obj !== null;\r\n}\r\n\r\nconst STRING_MAP_PROTO = Object.getPrototypeOf({});\r\n\r\nexport function isStrictStringMap(obj: any): boolean\r\n{\r\n return isStringMap(obj) && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array<any>\r\n{\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isDate(obj: any): obj is Date\r\n{\r\n return obj instanceof Date && !isNaN(obj.valueOf());\r\n}\r\n\r\nexport function noop(): void\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\n{\r\n}\r\n\r\nexport function normalizeBlank<TObj extends Object>(obj: TObj|undefined|null): TObj|null\r\n{\r\n return isBlank(obj) ? null : obj;\r\n}\r\n\r\nexport function isJsObject(o: any): o is Function|Object\r\n{\r\n return o !== null && (typeof o === 'function' || typeof o === 'object');\r\n}\r\n\r\nexport function isPrimitive(obj: any): boolean\r\n{\r\n return !isJsObject(obj);\r\n}\r\n\r\nexport function hasConstructor(value: Object, type: any): boolean\r\n{\r\n return value.constructor === type;\r\n}\r\n\r\nexport function isEmptyObject(obj: any): boolean\r\n{\r\n for (const _name in obj)\r\n {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Test two values for strict equality, accounting for the fact that `NaN !== NaN`.\r\n */\r\nexport function isStrictEquals(value1: unknown, value2: unknown): boolean \r\n{\r\n return value1 === value2 || (value1 !== value1 && value2 !== value2);\r\n}"]}
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../../src/utils/lang.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAO,GAAS;IAErC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,GAAQ;IAE5B,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAE9B,OAAO,OAAO,GAAG,KAAK,SAAS,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAE7B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAE7B,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ;IAE/B,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ;IAE3B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAEhC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAEnD,MAAM,UAAU,iBAAiB,CAAC,GAAQ;IAEtC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAQ;IAE5B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAQ;IAE3B,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,IAAI;AAGpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAsB,GAAwB;IAExE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAM;IAE7B,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAQ;IAEhC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,IAAS;IAEnD,OAAO,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAQ;IAElC,KAAK,MAAM,KAAK,IAAI,GAAG,EACvB,CAAC;QACG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe,EAAE,MAAe;IAE3D,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC;AACzE,CAAC","sourcesContent":["/**\r\n * Tests whether is object not `null` and not `undefined` at the same time\r\n * @param obj - Object to be tested\r\n */\r\nexport function isPresent<TObj>(obj: TObj): obj is NonNullable<TObj>\r\n{\r\n return obj !== undefined && obj !== null;\r\n}\r\n\r\n/**\r\n * Tests whether is object `null` or `undefined`\r\n * @param obj - Object to be tested\r\n */\r\nexport function isBlank(obj: any): obj is null|undefined\r\n{\r\n return obj === undefined || obj === null;\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of `boolean`\r\n * @param obj - Object to be tested\r\n */\r\nexport function isBoolean(obj: any): obj is boolean\r\n{\r\n return typeof obj === 'boolean';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of number\r\n * @param obj - Object to be tested\r\n */\r\nexport function isNumber(obj: any): obj is number\r\n{\r\n return typeof obj === 'number';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of string\r\n * @param obj - Object to be tested\r\n */\r\nexport function isString(obj: any): obj is string\r\n{\r\n return typeof obj === 'string';\r\n}\r\n\r\n/**\r\n * Tests whether is object instance of function\r\n * @param obj - Object to be tested\r\n */\r\nexport function isFunction(obj: any): obj is Function\r\n{\r\n return typeof obj === 'function';\r\n}\r\n\r\nexport function isType(obj: any): obj is Function\r\n{\r\n return isFunction(obj);\r\n}\r\n\r\nexport function isStringMap(obj: any): obj is Object\r\n{\r\n return typeof obj === 'object' && obj !== null;\r\n}\r\n\r\nconst STRING_MAP_PROTO = Object.getPrototypeOf({});\r\n\r\nexport function isStrictStringMap(obj: any): boolean\r\n{\r\n return isStringMap(obj) && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\r\n}\r\n\r\nexport function isArray(obj: any): obj is Array<any>\r\n{\r\n return Array.isArray(obj);\r\n}\r\n\r\nexport function isDate(obj: any): obj is Date\r\n{\r\n return obj instanceof Date && !isNaN(obj.valueOf());\r\n}\r\n\r\nexport function noop(): void\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\n{\r\n}\r\n\r\nexport function normalizeBlank<TObj extends Object>(obj: TObj|undefined|null): TObj|null\r\n{\r\n return isBlank(obj) ? null : obj;\r\n}\r\n\r\nexport function isJsObject(o: any): o is Function|Object\r\n{\r\n return o !== null && (typeof o === 'function' || typeof o === 'object');\r\n}\r\n\r\nexport function isPrimitive(obj: any): boolean\r\n{\r\n return !isJsObject(obj);\r\n}\r\n\r\nexport function hasConstructor(value: Object, type: any): boolean\r\n{\r\n return value.constructor === type;\r\n}\r\n\r\nexport function isEmptyObject(obj: any): boolean\r\n{\r\n for (const _name in obj)\r\n {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Test two values for strict equality, accounting for the fact that `NaN !== NaN`.\r\n */\r\nexport function isStrictEquals(value1: unknown, value2: unknown): boolean \r\n{\r\n return value1 === value2 || (value1 !== value1 && value2 !== value2);\r\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './utils/common';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extend/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC","sourcesContent":["export * from './utils/common';\n"]}
@@ -0,0 +1,11 @@
1
+ import extendLib from 'extend';
2
+ /**
3
+ * Extends one object with additional properties from other objects, supports deep extend
4
+ * @param deepOrObject - Object to be extended or indication that deep copy should be performed
5
+ * @param objectN - Objects that will be used for extending, if deep is used first here is target object
6
+ * @returns Object Extended object with properties from other objects
7
+ */
8
+ export function extend(deepOrObject, ...objectN) {
9
+ return extendLib.apply(null, [deepOrObject, ...objectN]);
10
+ }
11
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../extend/src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,QAAQ,CAAC;AA0E/B;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,YAAuC,EAAE,GAAG,OAA0B;IAEzF,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["import extendLib from 'extend';\nimport {Dictionary} from '@jscrpt/common';\n\n/**\n * Extends target object with source\n * @param deep - Indication whether deep copy should be performed\n * @param target - Object that will extended\n * @param source - Object that will be used for extending\n */\nexport function extend<T, U>(deep: boolean, target: T, source: U): T & U;\n/**\n * Extends target object with source objects\n * @param deep - Indication whether deep copy should be performed\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n */\nexport function extend<T, U, V>(deep: boolean, target: T, source1: U, source2: V): T & U & V;\n/**\n * Extends target object with source objects\n * @param deep - Indication whether deep copy should be performed\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n * @param source3 - Object that will be used for extending\n */\nexport function extend<T, U, V, W>(deep: boolean, target: T, source1: U, source2: V, source3: W): T & U & V & W;\n/**\n * Extends target object with source objects\n * @param deep - Indication whether deep copy should be performed\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n * @param source3 - Object that will be used for extending\n * @param source4 - Object that will be used for extending\n */\nexport function extend<T, U, V, W, X>(deep: boolean, target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\n/**\n * Extends target object with source\n * @param target - Object that will extended\n * @param source - Object that will be used for extending\n */\nexport function extend<T, U>(target: T, source: U): T & U;\n/**\n * Extends target object with source\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n */\nexport function extend<T, U, V>(target: T, source1: U, source2: V): T & U & V;\n/**\n * Extends target object with source\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n * @param source3 - Object that will be used for extending\n */\nexport function extend<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\n/**\n * Extends target object with source\n * @param target - Object that will extended\n * @param source1 - Object that will be used for extending\n * @param source2 - Object that will be used for extending\n * @param source3 - Object that will be used for extending\n * @param source4 - Object that will be used for extending\n */\nexport function extend<T, U, V, W, X>(target: T, source1: U, source2: V, source3: W, source4: X): T & U & V & W & X;\n/**\n * Extends one object with additional properties from other objects, supports deep extend\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\n * @returns Object Extended object with properties from other objects\n */\nexport function extend<TResult>(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): TResult;\n/**\n * Extends one object with additional properties from other objects, supports deep extend\n * @param deepOrObject - Object to be extended or indication that deep copy should be performed\n * @param objectN - Objects that will be used for extending, if deep is used first here is target object\n * @returns Object Extended object with properties from other objects\n */\nexport function extend(deepOrObject: boolean | Dictionary<any>, ...objectN: Dictionary<any>[]): Dictionary\n{\n return extendLib.apply(null, [deepOrObject, ...objectN]);\n}"]}
@@ -0,0 +1,2 @@
1
+ export * from './utils/common';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lodash/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC","sourcesContent":["export * from './utils/common';\n"]}
@@ -0,0 +1,10 @@
1
+ import { isArray, mergeWith } from 'lodash-es';
2
+ export function deepCopyWithArrayOverride(object, ...otherArgs) {
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ return mergeWith(object, ...[...otherArgs, (objValue, srcValue) => {
5
+ if (isArray(objValue)) {
6
+ return srcValue;
7
+ }
8
+ }]);
9
+ }
10
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../lodash/src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,WAAW,CAAC;AAe7C,MAAM,UAAU,yBAAyB,CAAoB,MAAe,EAAE,GAAG,SAAoB;IAEjG,8DAA8D;IAC9D,OAAO,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC,QAAa,EAAE,QAAa,EAAE,EAAE;YAExE,IAAI,OAAO,CAAC,QAAQ,CAAC,EACrB,CAAC;gBACG,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC,CAAC,CAAC,CAAC;AACR,CAAC","sourcesContent":["import {isArray, mergeWith} from 'lodash-es';\n\n/**\n * Performs deep copy of object with arrays that are not merged but overrided with latest value\n * @param object - Object to be extended\n * @param source - Object used for extension\n */\nexport function deepCopyWithArrayOverride<TObject, TSource>(object: TObject, source: TSource): TObject & TSource\n/**\n * Performs deep copy of object with arrays that are not merged but overrided with latest value\n * @param object - Object to be extended\n * @param source1 - Object used for extension\n * @param source2 - Object used for extension\n */\nexport function deepCopyWithArrayOverride<TObject, TSource1, TSource2>(object: TObject, source1: TSource1, source2: TSource2): TObject & TSource1 & TSource2\nexport function deepCopyWithArrayOverride<TResult = unknown>(object: unknown, ...otherArgs: unknown[]): TResult\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mergeWith(object, ...[...otherArgs, (objValue: any, srcValue: any) =>\n {\n if (isArray(objValue))\n {\n return srcValue;\n }\n }]);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"async.js","sourceRoot":"","sources":["../../../../rxjs/src/utils/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,MAAM,CAAC;AAG3D;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAU,KAAmC;IAEnF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEnC,IAAG,KAAK,YAAY,UAAU,EAC9B;YACI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,IAAG,KAAK,YAAY,OAAO,EAC3B;YACI,KAAK;iBACA,IAAI,CAAC,OAAO,CAAC;iBACb,KAAK,CAAC,KAAK,CAAC,EAAE;gBAEX,iDAAiD;gBACjD,IAAG,KAAK,YAAY,UAAU,EAC9B;oBACI,OAAO,CAAC,SAAS,CAAC,CAAC;oBAEnB,OAAO;iBACV;gBAED,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEP,OAAO;SACV;QAED,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import {EmptyError, lastValueFrom, Observable} from 'rxjs';\nimport {PromiseObservableOr} from '../types/async';\n\n/**\n * Resolves `PromiseObservableOr` value, if value is Observable then can be completed without value and undefined is resolved\n * @param value - Value to be solved\n */\nexport function resolvePromiseObservableOr<TResult>(value: PromiseObservableOr<TResult>): Promise<TResult|undefined>\n{\n return new Promise((resolve, reject) =>\n {\n if(value instanceof Observable)\n {\n value = lastValueFrom(value);\n }\n\n if(value instanceof Promise)\n {\n value\n .then(resolve)\n .catch(error =>\n {\n //handles observable that completes without value\n if(error instanceof EmptyError)\n {\n resolve(undefined);\n\n return;\n }\n\n reject(error);\n });\n\n return;\n }\n \n resolve(value);\n });\n}\n"]}
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../../../rxjs/src/utils/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,MAAM,CAAC;AAG3D;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAU,KAAmC;IAEnF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEnC,IAAG,KAAK,YAAY,UAAU,EAC9B,CAAC;YACG,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,IAAG,KAAK,YAAY,OAAO,EAC3B,CAAC;YACG,KAAK;iBACA,IAAI,CAAC,OAAO,CAAC;iBACb,KAAK,CAAC,KAAK,CAAC,EAAE;gBAEX,iDAAiD;gBACjD,IAAG,KAAK,YAAY,UAAU,EAC9B,CAAC;oBACG,OAAO,CAAC,SAAS,CAAC,CAAC;oBAEnB,OAAO;gBACX,CAAC;gBAED,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEP,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import {EmptyError, lastValueFrom, Observable} from 'rxjs';\nimport {PromiseObservableOr} from '../types/async';\n\n/**\n * Resolves `PromiseObservableOr` value, if value is Observable then can be completed without value and undefined is resolved\n * @param value - Value to be solved\n */\nexport function resolvePromiseObservableOr<TResult>(value: PromiseObservableOr<TResult>): Promise<TResult|undefined>\n{\n return new Promise((resolve, reject) =>\n {\n if(value instanceof Observable)\n {\n value = lastValueFrom(value);\n }\n\n if(value instanceof Promise)\n {\n value\n .then(resolve)\n .catch(error =>\n {\n //handles observable that completes without value\n if(error instanceof EmptyError)\n {\n resolve(undefined);\n\n return;\n }\n\n reject(error);\n });\n\n return;\n }\n \n resolve(value);\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bindThis.decorator.js","sourceRoot":"","sources":["../../../src/decorators/bindThis.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,WAA0B,EAAE,UAA8B;IAEhG,MAAM,aAAa,GAAS,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IAEnE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B;QACI,MAAM,IAAI,KAAK,CAAC,2CAA2C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;KAC9G;IAED,OAAO;QACH,YAAY,EAAE,IAAI;QAClB,GAAG;YAEC,MAAM,KAAK,GAAS,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,CAAC,cAAc,CAAC,IAAI,EACJ,WAAW,EACX;gBACI,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YAEzB,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["import {Func} from '../types/functions';\r\nimport {isFunction} from '../utils/lang';\r\n\r\n/**\r\n * Binds function to this, object instance where is defined, it is importat to place it in correct order with other decorators, usually should be first\r\n */\r\nexport function BindThis(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor): TypedPropertyDescriptor<Func<any, any>>\r\n{\r\n const originalValue: Func = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @BindThis decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n return {\r\n configurable: true,\r\n get(this: unknown): Func\r\n {\r\n const bound: Func = originalValue.bind(this);\r\n\r\n Object.defineProperty(this,\r\n propertyKey,\r\n {\r\n value: bound,\r\n configurable: true,\r\n writable: true\r\n });\r\n\r\n return bound;\r\n }\r\n };\r\n}"]}
1
+ {"version":3,"file":"bindThis.decorator.js","sourceRoot":"","sources":["../../../src/decorators/bindThis.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,WAA0B,EAAE,UAA8B;IAEhG,MAAM,aAAa,GAAS,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;IAEnE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B,CAAC;QACG,MAAM,IAAI,KAAK,CAAC,2CAA2C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAC/G,CAAC;IAED,OAAO;QACH,YAAY,EAAE,IAAI;QAClB,GAAG;YAEC,MAAM,KAAK,GAAS,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7C,MAAM,CAAC,cAAc,CAAC,IAAI,EACJ,WAAW,EACX;gBACI,KAAK,EAAE,KAAK;gBACZ,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YAEzB,OAAO,KAAK,CAAC;QACjB,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["import {Func} from '../types/functions';\r\nimport {isFunction} from '../utils/lang';\r\n\r\n/**\r\n * Binds function to this, object instance where is defined, it is importat to place it in correct order with other decorators, usually should be first\r\n */\r\nexport function BindThis(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor): TypedPropertyDescriptor<Func<any, any>>\r\n{\r\n const originalValue: Func = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @BindThis decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n return {\r\n configurable: true,\r\n get(this: unknown): Func\r\n {\r\n const bound: Func = originalValue.bind(this);\r\n\r\n Object.defineProperty(this,\r\n propertyKey,\r\n {\r\n value: bound,\r\n configurable: true,\r\n writable: true\r\n });\r\n\r\n return bound;\r\n }\r\n };\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"callOnce.decorator.js","sourceRoot":"","sources":["../../../src/decorators/callOnce.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IAEjC,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,aAAa,GAAS,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAEnE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B;YACI,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;SAChH;QAED,UAAU,CAAC,KAAK,GAAG,UAA6C,GAAG,IAAe;YAE9E,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B;gBACI,OAAO;aACV;YAED,kCAAkC;YAClC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EACrB;gBACI,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC;aAC7B;YAED,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEhC,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;gBAE5B,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B;oBACI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC/B;gBAED,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,IAAI,CAAQ,CAAC;QACpB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {Func} from '../types/functions';\r\nimport {isFunction, isPresent} from '../utils/lang';\r\n\r\n/**\r\n * Method is called only once for specified time, other calls during this time are blocked and it does nothing and returns null\r\n * @param time - Number of miliseconds which specifies period while are calls to this method blocked after first call\r\n */\r\nexport function CallOnce(time: number): MethodDecorator\r\n{\r\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\r\n {\r\n const timeout = Symbol('ɵTimeout');\r\n const originalValue: Func = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @CallOnce() decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n descriptor.value = function(this: {[key: symbol]: number|null}, ...args: unknown[]): void\r\n {\r\n if(isPresent(this[timeout]))\r\n {\r\n return;\r\n }\r\n \r\n //timeout variable does not exists\r\n if(!(timeout in this))\r\n {\r\n Reflect.defineProperty(this,\r\n timeout,\r\n {\r\n writable: true,\r\n value: null,\r\n });\r\n }\r\n\r\n originalValue.apply(this, args);\r\n\r\n this[timeout] = setTimeout(() =>\r\n {\r\n if(isPresent(this[timeout]))\r\n {\r\n clearTimeout(this[timeout]);\r\n }\r\n \r\n this[timeout] = null;\r\n }, time) as any;\r\n };\r\n\r\n return descriptor;\r\n };\r\n}"]}
1
+ {"version":3,"file":"callOnce.decorator.js","sourceRoot":"","sources":["../../../src/decorators/callOnce.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IAEjC,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,aAAa,GAAS,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAEnE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QACjH,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,UAA6C,GAAG,IAAe;YAE9E,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B,CAAC;gBACG,OAAO;YACX,CAAC;YAED,kCAAkC;YAClC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EACrB,CAAC;gBACG,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC;YAC9B,CAAC;YAED,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEhC,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;gBAE5B,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B,CAAC;oBACG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChC,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,IAAI,CAAQ,CAAC;QACpB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {Func} from '../types/functions';\r\nimport {isFunction, isPresent} from '../utils/lang';\r\n\r\n/**\r\n * Method is called only once for specified time, other calls during this time are blocked and it does nothing and returns null\r\n * @param time - Number of miliseconds which specifies period while are calls to this method blocked after first call\r\n */\r\nexport function CallOnce(time: number): MethodDecorator\r\n{\r\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\r\n {\r\n const timeout = Symbol('ɵTimeout');\r\n const originalValue: Func = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @CallOnce() decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n descriptor.value = function(this: {[key: symbol]: number|null}, ...args: unknown[]): void\r\n {\r\n if(isPresent(this[timeout]))\r\n {\r\n return;\r\n }\r\n \r\n //timeout variable does not exists\r\n if(!(timeout in this))\r\n {\r\n Reflect.defineProperty(this,\r\n timeout,\r\n {\r\n writable: true,\r\n value: null,\r\n });\r\n }\r\n\r\n originalValue.apply(this, args);\r\n\r\n this[timeout] = setTimeout(() =>\r\n {\r\n if(isPresent(this[timeout]))\r\n {\r\n clearTimeout(this[timeout]);\r\n }\r\n \r\n this[timeout] = null;\r\n }, time) as any;\r\n };\r\n\r\n return descriptor;\r\n };\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"debounceCall.decorator.js","sourceRoot":"","sources":["../../../src/decorators/debounceCall.decorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IAEtC,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,aAAa,GAAc,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAExE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B;YACI,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;SACpH;QAED,UAAU,CAAC,KAAK,GAAG,UAA+H,GAAG,IAAe;YAEhK,iCAAiC;YACjC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAC1C;gBACI,IAAI,SAA+C,CAAC;gBACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAoB,OAAO,CAAC,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC;gBAE/E,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS;iBACnB,CAAC,CAAC;gBAE1B,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,MAAM,EACN;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,OAAO;iBACjB,CAAC,CAAC;aAC7B;YAID,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B;gBACI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;aAC/B;YAED,kCAAkC;YAClC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EACrB;gBACI,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC;aAC7B;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gBAElC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAiC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAoB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;gBACtF,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,KAAK,CAAQ,CAAC;YAEjB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {PromiseOr} from '../types/async';\r\nimport {Action1, Func} from '../types/functions';\r\nimport {isFunction, isPresent} from '../utils/lang';\r\n\r\n/**\r\n * Adds special functionality to method call, that debounce method call for specified time\r\n * @param delay - Number of miliseconds that delays function call\r\n */\r\nexport function DebounceCall(delay: number): MethodDecorator\r\n{\r\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\r\n {\r\n const timeout = Symbol('ɵTimeout');\r\n const resolve = Symbol('ɵResolve');\r\n const result = Symbol('ɵResult');\r\n const originalValue: Func<any> = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @DebounceCall() decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n descriptor.value = function<TResult>(this: {[timeout]: number|null, [resolve]: Action1<TResult|undefined>, [result]: Promise<TResult|undefined>}, ...args: unknown[]): Promise<TResult|undefined>\r\n {\r\n //result variable does not exists\r\n if(!(resolve in this) && !(result in this))\r\n {\r\n let resolveFn: Action1<TResult|undefined>|undefined;\r\n const promise = new Promise<TResult|undefined>(resolve => resolveFn = resolve);\r\n\r\n Reflect.defineProperty(this,\r\n resolve,\r\n {\r\n writable: true,\r\n value: resolveFn,\r\n });\r\n\r\n Reflect.defineProperty(this,\r\n result,\r\n {\r\n writable: true,\r\n value: promise,\r\n });\r\n }\r\n\r\n \r\n\r\n if(isPresent(this[timeout]))\r\n {\r\n clearTimeout(this[timeout]);\r\n }\r\n\r\n //timeout variable does not exists\r\n if(!(timeout in this))\r\n {\r\n Reflect.defineProperty(this,\r\n timeout,\r\n {\r\n writable: true,\r\n value: null,\r\n });\r\n }\r\n\r\n this[timeout] = setTimeout(async () =>\r\n {\r\n this[resolve](await originalValue.apply<any, any[], PromiseOr<TResult>>(this, args));\r\n this[result] = new Promise<TResult|undefined>(resolveFn => this[resolve] = resolveFn);\r\n this[timeout] = null;\r\n }, delay) as any;\r\n\r\n return this[result];\r\n };\r\n\r\n return descriptor;\r\n };\r\n}"]}
1
+ {"version":3,"file":"debounceCall.decorator.js","sourceRoot":"","sources":["../../../src/decorators/debounceCall.decorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IAEtC,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,aAAa,GAAc,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAExE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QACrH,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,UAA+H,GAAG,IAAe;YAEhK,iCAAiC;YACjC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAC1C,CAAC;gBACG,IAAI,SAA+C,CAAC;gBACpD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAoB,OAAO,CAAC,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC;gBAE/E,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS;iBACnB,CAAC,CAAC;gBAE1B,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,MAAM,EACN;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,OAAO;iBACjB,CAAC,CAAC;YAC9B,CAAC;YAID,IAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAC3B,CAAC;gBACG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,CAAC;YAED,kCAAkC;YAClC,IAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EACrB,CAAC;gBACG,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,OAAO,EACP;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gBAElC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAiC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,CAAoB,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;gBACtF,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACzB,CAAC,EAAE,KAAK,CAAQ,CAAC;YAEjB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {PromiseOr} from '../types/async';\r\nimport {Action1, Func} from '../types/functions';\r\nimport {isFunction, isPresent} from '../utils/lang';\r\n\r\n/**\r\n * Adds special functionality to method call, that debounce method call for specified time\r\n * @param delay - Number of miliseconds that delays function call\r\n */\r\nexport function DebounceCall(delay: number): MethodDecorator\r\n{\r\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\r\n {\r\n const timeout = Symbol('ɵTimeout');\r\n const resolve = Symbol('ɵResolve');\r\n const result = Symbol('ɵResult');\r\n const originalValue: Func<any> = descriptor.value ?? descriptor.get?.();\r\n\r\n if(!isFunction(originalValue))\r\n {\r\n throw new Error(`Unable to apply @DebounceCall() decorator to '${propertyKey.toString()}', it is not a method.`);\r\n }\r\n\r\n descriptor.value = function<TResult>(this: {[timeout]: number|null, [resolve]: Action1<TResult|undefined>, [result]: Promise<TResult|undefined>}, ...args: unknown[]): Promise<TResult|undefined>\r\n {\r\n //result variable does not exists\r\n if(!(resolve in this) && !(result in this))\r\n {\r\n let resolveFn: Action1<TResult|undefined>|undefined;\r\n const promise = new Promise<TResult|undefined>(resolve => resolveFn = resolve);\r\n\r\n Reflect.defineProperty(this,\r\n resolve,\r\n {\r\n writable: true,\r\n value: resolveFn,\r\n });\r\n\r\n Reflect.defineProperty(this,\r\n result,\r\n {\r\n writable: true,\r\n value: promise,\r\n });\r\n }\r\n\r\n \r\n\r\n if(isPresent(this[timeout]))\r\n {\r\n clearTimeout(this[timeout]);\r\n }\r\n\r\n //timeout variable does not exists\r\n if(!(timeout in this))\r\n {\r\n Reflect.defineProperty(this,\r\n timeout,\r\n {\r\n writable: true,\r\n value: null,\r\n });\r\n }\r\n\r\n this[timeout] = setTimeout(async () =>\r\n {\r\n this[resolve](await originalValue.apply<any, any[], PromiseOr<TResult>>(this, args));\r\n this[result] = new Promise<TResult|undefined>(resolveFn => this[resolve] = resolveFn);\r\n this[timeout] = null;\r\n }, delay) as any;\r\n\r\n return this[result];\r\n };\r\n\r\n return descriptor;\r\n };\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mixin.decorator.js","sourceRoot":"","sources":["../../../src/decorators/mixin.decorator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,UAA8B;IAEhD,OAAO,UAAsC,MAAiB;QAE1D,MAAM,oBAAoB,GAAG,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEpF,KAAI,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,EAC1F;YACI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7E;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {MixinType} from '../types/mixinType';\n\n/**\n * Uses specified class as class mixin, takes its methods and properties and merge them into target class\n * @param mixinClass - Mixin class to be used as mixin\n */\nexport function Mixin(mixinClass: MixinType<unknown>): ClassDecorator\n{\n return function<TFunction extends Function> (target: TFunction): TFunction\n {\n const methodsAndProperties = Object.getOwnPropertyDescriptors(mixinClass.prototype);\n \n for(const name of Object.keys(methodsAndProperties).filter(name => name !== 'constructor'))\n {\n Object.defineProperty(target.prototype, name, methodsAndProperties[name]);\n }\n \n return target;\n };\n}"]}
1
+ {"version":3,"file":"mixin.decorator.js","sourceRoot":"","sources":["../../../src/decorators/mixin.decorator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAC,UAA8B;IAEhD,OAAO,UAAsC,MAAiB;QAE1D,MAAM,oBAAoB,GAAG,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEpF,KAAI,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,EAC1F,CAAC;YACG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {MixinType} from '../types/mixinType';\n\n/**\n * Uses specified class as class mixin, takes its methods and properties and merge them into target class\n * @param mixinClass - Mixin class to be used as mixin\n */\nexport function Mixin(mixinClass: MixinType<unknown>): ClassDecorator\n{\n return function<TFunction extends Function> (target: TFunction): TFunction\n {\n const methodsAndProperties = Object.getOwnPropertyDescriptors(mixinClass.prototype);\n \n for(const name of Object.keys(methodsAndProperties).filter(name => name !== 'constructor'))\n {\n Object.defineProperty(target.prototype, name, methodsAndProperties[name]);\n }\n \n return target;\n };\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../../src/decorators/property.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAkB,UAAwE,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC;IAEtK,OAAO,UAAU,MAAc,EAAE,WAA0B;QAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EACzC;YACI,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG,EAAE;gBAED,IAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,EACvD;oBACI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EACxC;wBACI,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,OAAO,CAAC,KAAK;qBACvB,CAAC,CAAC;iBACN;gBAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;YACD,GAAG,EAAE,UAAuC,KAAY;gBAEpD,IAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,EACvD;oBACI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EACxC;wBACI,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,OAAO,CAAC,KAAK;qBACvB,CAAC,CAAC;iBACN;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;YAC/B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC","sourcesContent":["/**\n * Allows to define property on object with specific options and default value\n * @param options - Options that can be set for property\n */\nexport function Property<TType = unknown>(options: Omit<TypedPropertyDescriptor<TType>, 'get'|'set'|'writable'> = {configurable: true, enumerable: true, value: undefined}): PropertyDecorator\n{\n return function (target: Object, propertyKey: string|symbol): void\n {\n const backingField = Symbol(propertyKey.toString());\n\n Object.defineProperty(target, propertyKey,\n {\n configurable: options.configurable,\n enumerable: options.enumerable,\n get: function(this: {[key: symbol]: TType})\n {\n if(!Object.getOwnPropertyDescriptor(this, backingField))\n {\n Object.defineProperty(this, backingField,\n {\n configurable: false,\n enumerable: false,\n writable: true,\n value: options.value,\n });\n }\n\n return this[backingField];\n },\n set: function(this: {[key: symbol]: TType}, value: TType)\n {\n if(!Object.getOwnPropertyDescriptor(this, backingField))\n {\n Object.defineProperty(this, backingField,\n {\n configurable: false,\n enumerable: false,\n writable: true,\n value: options.value,\n });\n }\n\n this[backingField] = value;\n }\n });\n };\n}"]}
1
+ {"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../../src/decorators/property.decorator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAkB,UAAwE,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC;IAEtK,OAAO,UAAU,MAAc,EAAE,WAA0B;QAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EACzC;YACI,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAG,EAAE;gBAED,IAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,EACvD,CAAC;oBACG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EACxC;wBACI,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,OAAO,CAAC,KAAK;qBACvB,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,CAAC;YACD,GAAG,EAAE,UAAuC,KAAY;gBAEpD,IAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,EACvD,CAAC;oBACG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EACxC;wBACI,YAAY,EAAE,KAAK;wBACnB,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,OAAO,CAAC,KAAK;qBACvB,CAAC,CAAC;gBACP,CAAC;gBAED,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;YAC/B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC","sourcesContent":["/**\n * Allows to define property on object with specific options and default value\n * @param options - Options that can be set for property\n */\nexport function Property<TType = unknown>(options: Omit<TypedPropertyDescriptor<TType>, 'get'|'set'|'writable'> = {configurable: true, enumerable: true, value: undefined}): PropertyDecorator\n{\n return function (target: Object, propertyKey: string|symbol): void\n {\n const backingField = Symbol(propertyKey.toString());\n\n Object.defineProperty(target, propertyKey,\n {\n configurable: options.configurable,\n enumerable: options.enumerable,\n get: function(this: {[key: symbol]: TType})\n {\n if(!Object.getOwnPropertyDescriptor(this, backingField))\n {\n Object.defineProperty(this, backingField,\n {\n configurable: false,\n enumerable: false,\n writable: true,\n value: options.value,\n });\n }\n\n return this[backingField];\n },\n set: function(this: {[key: symbol]: TType}, value: TType)\n {\n if(!Object.getOwnPropertyDescriptor(this, backingField))\n {\n Object.defineProperty(this, backingField,\n {\n configurable: false,\n enumerable: false,\n writable: true,\n value: options.value,\n });\n }\n\n this[backingField] = value;\n }\n });\n };\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"withSync.decorator.js","sourceRoot":"","sources":["../../../src/decorators/withSync.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,QAAQ;IAEpB,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,aAAa,GAAc,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAExE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B;YACI,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;SAChH;QAED,UAAU,CAAC,KAAK,GAAG,KAAK,WAAyD,GAAG,IAAe;YAE/F,+BAA+B;YAC/B,IAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAClB;gBACI,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,IAAI,EACJ;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;iBAC3B,CAAC,CAAC;aAC7B;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,WAAiC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,CAAC;YAElB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAsB,IAAI,EAAE,IAAI,CAAC,CAAC;YAE1E,WAAW,EAAE,EAAE,CAAC;YAEhB,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {Func, NoopAction} from '../types/functions';\nimport {isFunction} from '../utils/lang';\n\n/**\n * Adds special functionality to async method call, that allows only to call this method only when previous execution was finished\n */\nexport function WithSync(): MethodDecorator\n{\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\n {\n const sync = Symbol('ɵSync');\n const originalValue: Func<any> = descriptor.value ?? descriptor.get?.();\n\n if(!isFunction(originalValue))\n {\n throw new Error(`Unable to apply @WithSync() decorator to '${propertyKey.toString()}', it is not a method.`);\n }\n\n descriptor.value = async function<TResult>(this: {[key: symbol]: Promise<void>}, ...args: unknown[]): Promise<TResult>\n {\n //sync variable does not exists\n if(!(sync in this))\n {\n Reflect.defineProperty(this,\n sync,\n {\n writable: true,\n value: Promise.resolve(),\n });\n }\n\n const syncPromise = this[sync];\n let syncResolve: NoopAction|undefined;\n this[sync] = new Promise(resolve => syncResolve = resolve);\n await syncPromise;\n\n const result = await originalValue.apply<any, any[], TResult>(this, args);\n\n syncResolve?.();\n\n return result;\n };\n\n return descriptor;\n };\n}"]}
1
+ {"version":3,"file":"withSync.decorator.js","sourceRoot":"","sources":["../../../src/decorators/withSync.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,QAAQ;IAEpB,OAAO,UAAS,OAAe,EAAE,WAA0B,EAAE,UAA8B;QAEvF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,aAAa,GAAc,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QAExE,IAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAC7B,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,6CAA6C,WAAW,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QACjH,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,KAAK,WAAyD,GAAG,IAAe;YAE/F,+BAA+B;YAC/B,IAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAClB,CAAC;gBACG,OAAO,CAAC,cAAc,CAAC,IAAI,EACJ,IAAI,EACJ;oBACI,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;iBAC3B,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,WAAiC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,CAAC;YAElB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAsB,IAAI,EAAE,IAAI,CAAC,CAAC;YAE1E,WAAW,EAAE,EAAE,CAAC;YAEhB,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {Func, NoopAction} from '../types/functions';\nimport {isFunction} from '../utils/lang';\n\n/**\n * Adds special functionality to async method call, that allows only to call this method only when previous execution was finished\n */\nexport function WithSync(): MethodDecorator\n{\n return function(_target: Object, propertyKey: string|symbol, descriptor: PropertyDescriptor)\n {\n const sync = Symbol('ɵSync');\n const originalValue: Func<any> = descriptor.value ?? descriptor.get?.();\n\n if(!isFunction(originalValue))\n {\n throw new Error(`Unable to apply @WithSync() decorator to '${propertyKey.toString()}', it is not a method.`);\n }\n\n descriptor.value = async function<TResult>(this: {[key: symbol]: Promise<void>}, ...args: unknown[]): Promise<TResult>\n {\n //sync variable does not exists\n if(!(sync in this))\n {\n Reflect.defineProperty(this,\n sync,\n {\n writable: true,\n value: Promise.resolve(),\n });\n }\n\n const syncPromise = this[sync];\n let syncResolve: NoopAction|undefined;\n this[sync] = new Promise(resolve => syncResolve = resolve);\n await syncPromise;\n\n const result = await originalValue.apply<any, any[], TResult>(this, args);\n\n syncResolve?.();\n\n return result;\n };\n\n return descriptor;\n };\n}"]}