@bitblit/ratchet-misc 6.0.145-alpha → 6.0.147-alpha

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 (278) hide show
  1. package/package.json +4 -3
  2. package/src/brevo/brevo-keys.ts +7 -0
  3. package/src/brevo/brevo-mail-sending-provider.ts +49 -0
  4. package/src/brevo/brevo-ratchet.spec.ts +35 -0
  5. package/src/brevo/brevo-ratchet.ts +50 -0
  6. package/src/brevo/generated/.openapi-generator/FILES +208 -0
  7. package/src/brevo/generated/.openapi-generator/VERSION +1 -0
  8. package/src/brevo/generated/.openapi-generator-ignore +23 -0
  9. package/src/brevo/generated/apis/AccountApi.ts +76 -0
  10. package/src/brevo/generated/apis/AttributesApi.ts +366 -0
  11. package/src/brevo/generated/apis/ContactsApi.ts +2295 -0
  12. package/src/brevo/generated/apis/EmailCampaignsApi.ts +1130 -0
  13. package/src/brevo/generated/apis/FoldersApi.ts +502 -0
  14. package/src/brevo/generated/apis/ListsApi.ts +770 -0
  15. package/src/brevo/generated/apis/ProcessApi.ts +165 -0
  16. package/src/brevo/generated/apis/ResellerApi.ts +1330 -0
  17. package/src/brevo/generated/apis/SMSCampaignsApi.ts +839 -0
  18. package/src/brevo/generated/apis/SMTPApi.ts +1674 -0
  19. package/src/brevo/generated/apis/SendersApi.ts +425 -0
  20. package/src/brevo/generated/apis/TransactionalSMSApi.ts +433 -0
  21. package/src/brevo/generated/apis/WebhooksApi.ts +393 -0
  22. package/src/brevo/generated/apis/WhatsAppCampaignsApi.ts +371 -0
  23. package/src/brevo/generated/models/AbTestCampaignResult.ts +142 -0
  24. package/src/brevo/generated/models/AbTestCampaignResultClickedLinks.ts +73 -0
  25. package/src/brevo/generated/models/AbTestCampaignResultStatistics.ts +109 -0
  26. package/src/brevo/generated/models/AbTestVersionClicksInner.ts +79 -0
  27. package/src/brevo/generated/models/AbTestVersionStats.ts +70 -0
  28. package/src/brevo/generated/models/AddChildDomain.ts +62 -0
  29. package/src/brevo/generated/models/AddContactToList.ts +62 -0
  30. package/src/brevo/generated/models/AddCredits.ts +70 -0
  31. package/src/brevo/generated/models/BlockDomain.ts +61 -0
  32. package/src/brevo/generated/models/ComponentItems.ts +70 -0
  33. package/src/brevo/generated/models/CreateAttribute.ts +95 -0
  34. package/src/brevo/generated/models/CreateAttributeEnumerationInner.ts +70 -0
  35. package/src/brevo/generated/models/CreateChild.ts +120 -0
  36. package/src/brevo/generated/models/CreateContact.ts +110 -0
  37. package/src/brevo/generated/models/CreateDoiContact.ts +106 -0
  38. package/src/brevo/generated/models/CreateEmailCampaign.ts +293 -0
  39. package/src/brevo/generated/models/CreateEmailCampaignRecipients.ts +70 -0
  40. package/src/brevo/generated/models/CreateEmailCampaignSender.ts +78 -0
  41. package/src/brevo/generated/models/CreateList.ts +70 -0
  42. package/src/brevo/generated/models/CreateModel.ts +61 -0
  43. package/src/brevo/generated/models/CreateReseller.ts +71 -0
  44. package/src/brevo/generated/models/CreateSender.ts +82 -0
  45. package/src/brevo/generated/models/CreateSenderIpsInner.ts +80 -0
  46. package/src/brevo/generated/models/CreateSenderModel.ts +79 -0
  47. package/src/brevo/generated/models/CreateSmsCampaign.ts +99 -0
  48. package/src/brevo/generated/models/CreateSmsCampaignRecipients.ts +71 -0
  49. package/src/brevo/generated/models/CreateSmtpEmail.ts +61 -0
  50. package/src/brevo/generated/models/CreateSmtpTemplate.ts +139 -0
  51. package/src/brevo/generated/models/CreateSmtpTemplateSender.ts +78 -0
  52. package/src/brevo/generated/models/CreateUpdateContactModel.ts +62 -0
  53. package/src/brevo/generated/models/CreateUpdateFolder.ts +62 -0
  54. package/src/brevo/generated/models/CreateWebhook.ts +119 -0
  55. package/src/brevo/generated/models/CreatedProcessId.ts +61 -0
  56. package/src/brevo/generated/models/DeleteHardbounces.ts +78 -0
  57. package/src/brevo/generated/models/EmailExportRecipients.ts +86 -0
  58. package/src/brevo/generated/models/ErrorModel.ts +92 -0
  59. package/src/brevo/generated/models/GetAccount.ts +138 -0
  60. package/src/brevo/generated/models/GetAccountAllOfMarketingAutomation.ts +74 -0
  61. package/src/brevo/generated/models/GetAccountAllOfPlan.ts +124 -0
  62. package/src/brevo/generated/models/GetAccountAllOfRelay.ts +73 -0
  63. package/src/brevo/generated/models/GetAccountAllOfRelayData.ts +79 -0
  64. package/src/brevo/generated/models/GetAggregatedReport.ts +169 -0
  65. package/src/brevo/generated/models/GetAttributes.ts +64 -0
  66. package/src/brevo/generated/models/GetAttributesAttributesInner.ts +129 -0
  67. package/src/brevo/generated/models/GetAttributesAttributesInnerEnumerationInner.ts +73 -0
  68. package/src/brevo/generated/models/GetBlockedDomains.ts +61 -0
  69. package/src/brevo/generated/models/GetCampaignOverview.ts +183 -0
  70. package/src/brevo/generated/models/GetCampaignRecipients.ts +70 -0
  71. package/src/brevo/generated/models/GetCampaignStats.ts +177 -0
  72. package/src/brevo/generated/models/GetChildAccountCreationStatus.ts +61 -0
  73. package/src/brevo/generated/models/GetChildDomain.ts +70 -0
  74. package/src/brevo/generated/models/GetChildInfo.ts +137 -0
  75. package/src/brevo/generated/models/GetChildInfoAllOfApiKeys.ts +75 -0
  76. package/src/brevo/generated/models/GetChildInfoAllOfApiKeysV2.ts +70 -0
  77. package/src/brevo/generated/models/GetChildInfoAllOfApiKeysV3.ts +70 -0
  78. package/src/brevo/generated/models/GetChildInfoAllOfCredits.ts +70 -0
  79. package/src/brevo/generated/models/GetChildInfoAllOfStatistics.ts +78 -0
  80. package/src/brevo/generated/models/GetChildrenList.ts +73 -0
  81. package/src/brevo/generated/models/GetChildrenListChildrenInner.ts +145 -0
  82. package/src/brevo/generated/models/GetClient.ts +88 -0
  83. package/src/brevo/generated/models/GetContactCampaignStats.ts +168 -0
  84. package/src/brevo/generated/models/GetContactCampaignStatsClickedInner.ts +79 -0
  85. package/src/brevo/generated/models/GetContactCampaignStatsOpenedInner.ts +91 -0
  86. package/src/brevo/generated/models/GetContactCampaignStatsTransacAttributesInner.ts +82 -0
  87. package/src/brevo/generated/models/GetContactCampaignStatsUnsubscriptions.ts +92 -0
  88. package/src/brevo/generated/models/GetContactDetails.ts +133 -0
  89. package/src/brevo/generated/models/GetContacts.ts +73 -0
  90. package/src/brevo/generated/models/GetDeviceBrowserStats.ts +88 -0
  91. package/src/brevo/generated/models/GetEmailCampaign.ts +348 -0
  92. package/src/brevo/generated/models/GetEmailCampaigns.ts +73 -0
  93. package/src/brevo/generated/models/GetEmailCampaignsCampaignsInner.ts +348 -0
  94. package/src/brevo/generated/models/GetEmailEventReport.ts +64 -0
  95. package/src/brevo/generated/models/GetEmailEventReportEventsInner.ts +157 -0
  96. package/src/brevo/generated/models/GetExtendedCampaignOverview.ts +326 -0
  97. package/src/brevo/generated/models/GetExtendedCampaignOverviewAllOfSender.ts +81 -0
  98. package/src/brevo/generated/models/GetExtendedCampaignStats.ts +132 -0
  99. package/src/brevo/generated/models/GetExtendedClient.ts +100 -0
  100. package/src/brevo/generated/models/GetExtendedClientAllOfAddress.ts +88 -0
  101. package/src/brevo/generated/models/GetExtendedContactDetails.ts +147 -0
  102. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatistics.ts +168 -0
  103. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsClicked.ts +79 -0
  104. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsLinks.ts +91 -0
  105. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsMessagesSent.ts +77 -0
  106. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsOpened.ts +91 -0
  107. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsUnsubscriptions.ts +96 -0
  108. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsUnsubscriptionsAdminUnsubscription.ts +78 -0
  109. package/src/brevo/generated/models/GetExtendedContactDetailsAllOfStatisticsUnsubscriptionsUserUnsubscription.ts +87 -0
  110. package/src/brevo/generated/models/GetExtendedList.ts +129 -0
  111. package/src/brevo/generated/models/GetExtendedListAllOfCampaignStats.ts +73 -0
  112. package/src/brevo/generated/models/GetFolder.ts +97 -0
  113. package/src/brevo/generated/models/GetFolderLists.ts +73 -0
  114. package/src/brevo/generated/models/GetFolders.ts +72 -0
  115. package/src/brevo/generated/models/GetIp.ts +88 -0
  116. package/src/brevo/generated/models/GetIpFromSender.ts +88 -0
  117. package/src/brevo/generated/models/GetIps.ts +64 -0
  118. package/src/brevo/generated/models/GetIpsFromSender.ts +64 -0
  119. package/src/brevo/generated/models/GetList.ts +88 -0
  120. package/src/brevo/generated/models/GetLists.ts +73 -0
  121. package/src/brevo/generated/models/GetListsListsInner.ts +97 -0
  122. package/src/brevo/generated/models/GetProcess.ts +99 -0
  123. package/src/brevo/generated/models/GetProcesses.ts +73 -0
  124. package/src/brevo/generated/models/GetReports.ts +64 -0
  125. package/src/brevo/generated/models/GetReportsReportsInner.ts +169 -0
  126. package/src/brevo/generated/models/GetSegments.ts +72 -0
  127. package/src/brevo/generated/models/GetSegmentsSegments.ts +86 -0
  128. package/src/brevo/generated/models/GetSendersList.ts +64 -0
  129. package/src/brevo/generated/models/GetSendersListSendersInner.ts +103 -0
  130. package/src/brevo/generated/models/GetSendersListSendersInnerIpsInner.ts +82 -0
  131. package/src/brevo/generated/models/GetSharedTemplateUrl.ts +61 -0
  132. package/src/brevo/generated/models/GetSmsCampaign.ts +160 -0
  133. package/src/brevo/generated/models/GetSmsCampaignOverview.ts +137 -0
  134. package/src/brevo/generated/models/GetSmsCampaignStats.ts +115 -0
  135. package/src/brevo/generated/models/GetSmsCampaigns.ts +73 -0
  136. package/src/brevo/generated/models/GetSmsCampaignsCampaignsInner.ts +160 -0
  137. package/src/brevo/generated/models/GetSmsEventReport.ts +64 -0
  138. package/src/brevo/generated/models/GetSmsEventReportEventsInner.ts +131 -0
  139. package/src/brevo/generated/models/GetSmtpTemplateOverview.ts +172 -0
  140. package/src/brevo/generated/models/GetSmtpTemplateOverviewSender.ts +78 -0
  141. package/src/brevo/generated/models/GetSmtpTemplates.ts +72 -0
  142. package/src/brevo/generated/models/GetSsoToken.ts +61 -0
  143. package/src/brevo/generated/models/GetStatsByDevice.ts +88 -0
  144. package/src/brevo/generated/models/GetTransacAggregatedSmsReport.ts +142 -0
  145. package/src/brevo/generated/models/GetTransacBlockedContacts.ts +75 -0
  146. package/src/brevo/generated/models/GetTransacBlockedContactsContactsInner.ts +97 -0
  147. package/src/brevo/generated/models/GetTransacBlockedContactsContactsInnerReason.ts +86 -0
  148. package/src/brevo/generated/models/GetTransacEmailContent.ts +118 -0
  149. package/src/brevo/generated/models/GetTransacEmailContentEventsInner.ts +70 -0
  150. package/src/brevo/generated/models/GetTransacEmailsList.ts +72 -0
  151. package/src/brevo/generated/models/GetTransacEmailsListTransactionalEmailsInner.ts +126 -0
  152. package/src/brevo/generated/models/GetTransacSmsReport.ts +64 -0
  153. package/src/brevo/generated/models/GetTransacSmsReportReportsInner.ts +142 -0
  154. package/src/brevo/generated/models/GetWATemplates.ts +73 -0
  155. package/src/brevo/generated/models/GetWATemplatesTemplatesInner.ts +125 -0
  156. package/src/brevo/generated/models/GetWebhook.ts +124 -0
  157. package/src/brevo/generated/models/GetWebhooks.ts +64 -0
  158. package/src/brevo/generated/models/GetWhatsappCampaignOverview.ts +152 -0
  159. package/src/brevo/generated/models/GetWhatsappCampaigns.ts +75 -0
  160. package/src/brevo/generated/models/GetWhatsappCampaignsCampaignsInner.ts +169 -0
  161. package/src/brevo/generated/models/ManageIp.ts +62 -0
  162. package/src/brevo/generated/models/PostContactInfo.ts +64 -0
  163. package/src/brevo/generated/models/PostContactInfoContacts.ts +86 -0
  164. package/src/brevo/generated/models/PostSendFailed.ts +96 -0
  165. package/src/brevo/generated/models/PostSendSmsTestFailed.ts +88 -0
  166. package/src/brevo/generated/models/RemainingCreditModel.ts +75 -0
  167. package/src/brevo/generated/models/RemainingCreditModelChild.ts +70 -0
  168. package/src/brevo/generated/models/RemainingCreditModelReseller.ts +70 -0
  169. package/src/brevo/generated/models/RemoveContactFromList.ts +70 -0
  170. package/src/brevo/generated/models/RemoveCredits.ts +70 -0
  171. package/src/brevo/generated/models/RequestContactExport.ts +94 -0
  172. package/src/brevo/generated/models/RequestContactExportCustomContactFilter.ts +141 -0
  173. package/src/brevo/generated/models/RequestContactImport.ts +136 -0
  174. package/src/brevo/generated/models/RequestContactImportNewList.ts +70 -0
  175. package/src/brevo/generated/models/RequestSmsRecipientExport.ts +84 -0
  176. package/src/brevo/generated/models/SendEmail.ts +129 -0
  177. package/src/brevo/generated/models/SendEmailAttachmentInner.ts +70 -0
  178. package/src/brevo/generated/models/SendReport.ts +86 -0
  179. package/src/brevo/generated/models/SendReportEmail.ts +70 -0
  180. package/src/brevo/generated/models/SendSms.ts +96 -0
  181. package/src/brevo/generated/models/SendSmtpEmail.ts +171 -0
  182. package/src/brevo/generated/models/SendSmtpEmailAttachmentInner.ts +78 -0
  183. package/src/brevo/generated/models/SendSmtpEmailBccInner.ts +71 -0
  184. package/src/brevo/generated/models/SendSmtpEmailCcInner.ts +71 -0
  185. package/src/brevo/generated/models/SendSmtpEmailReplyTo.ts +71 -0
  186. package/src/brevo/generated/models/SendSmtpEmailSender.ts +71 -0
  187. package/src/brevo/generated/models/SendSmtpEmailToInner.ts +71 -0
  188. package/src/brevo/generated/models/SendTemplateEmail.ts +61 -0
  189. package/src/brevo/generated/models/SendTestEmail.ts +62 -0
  190. package/src/brevo/generated/models/SendTestSms.ts +62 -0
  191. package/src/brevo/generated/models/SendTransacSms.ts +122 -0
  192. package/src/brevo/generated/models/UpdateAttribute.ts +74 -0
  193. package/src/brevo/generated/models/UpdateAttributeEnumerationInner.ts +70 -0
  194. package/src/brevo/generated/models/UpdateCampaignStatus.ts +77 -0
  195. package/src/brevo/generated/models/UpdateChild.ts +94 -0
  196. package/src/brevo/generated/models/UpdateChildAccountStatus.ts +86 -0
  197. package/src/brevo/generated/models/UpdateChildDomain.ts +62 -0
  198. package/src/brevo/generated/models/UpdateContact.ts +102 -0
  199. package/src/brevo/generated/models/UpdateEmailCampaign.ts +291 -0
  200. package/src/brevo/generated/models/UpdateEmailCampaignRecipients.ts +70 -0
  201. package/src/brevo/generated/models/UpdateEmailCampaignSender.ts +78 -0
  202. package/src/brevo/generated/models/UpdateList.ts +70 -0
  203. package/src/brevo/generated/models/UpdateSender.ts +80 -0
  204. package/src/brevo/generated/models/UpdateSmsCampaign.ts +96 -0
  205. package/src/brevo/generated/models/UpdateSmtpTemplate.ts +136 -0
  206. package/src/brevo/generated/models/UpdateSmtpTemplateSender.ts +78 -0
  207. package/src/brevo/generated/models/UpdateWebhook.ts +100 -0
  208. package/src/brevo/generated/models/UploadImageToGallery.ts +71 -0
  209. package/src/brevo/generated/models/VariablesItems.ts +78 -0
  210. package/src/brevo/generated/models/WhatsappCampStats.ts +97 -0
  211. package/src/brevo/generated/models/WhatsappCampTemplate.ts +146 -0
  212. package/src/brevo/generated/models/index.ts +189 -0
  213. package/src/brevo/generated/runtime.ts +455 -0
  214. package/src/build/ratchet-misc-info.ts +19 -0
  215. package/src/handlebars/handlebars-ratchet.spec.ts +117 -0
  216. package/src/handlebars/handlebars-ratchet.ts +151 -0
  217. package/src/handlebars/remote-handlebars-template-renderer.ts +87 -0
  218. package/src/model-validator/model-validator.spec.ts +43 -0
  219. package/src/model-validator/model-validator.ts +67 -0
  220. package/src/rxjs/observable-ratchet.spec.ts +21 -0
  221. package/src/rxjs/observable-ratchet.ts +27 -0
  222. package/src/rxjs/rxjs-ratchet.spec.ts +22 -0
  223. package/src/rxjs/rxjs-ratchet.ts +44 -0
  224. package/src/sobol/generated/.openapi-generator/FILES +53 -0
  225. package/src/sobol/generated/.openapi-generator/VERSION +1 -0
  226. package/src/sobol/generated/.openapi-generator-ignore +23 -0
  227. package/src/sobol/generated/apis/AgreementsApi.ts +656 -0
  228. package/src/sobol/generated/apis/CustomFieldValuesApi.ts +412 -0
  229. package/src/sobol/generated/apis/CustomFieldsApi.ts +460 -0
  230. package/src/sobol/generated/apis/GoalsApi.ts +565 -0
  231. package/src/sobol/generated/apis/RoleAssignmentsApi.ts +289 -0
  232. package/src/sobol/generated/apis/RolesApi.ts +736 -0
  233. package/src/sobol/generated/apis/TeamsApi.ts +748 -0
  234. package/src/sobol/generated/apis/UsersApi.ts +640 -0
  235. package/src/sobol/generated/apis/index.ts +8 -0
  236. package/src/sobol/generated/index.ts +3 -0
  237. package/src/sobol/generated/models/Address.ts +220 -0
  238. package/src/sobol/generated/models/AddressTypeInternalEnum.ts +35 -0
  239. package/src/sobol/generated/models/Agreement.ts +281 -0
  240. package/src/sobol/generated/models/AgreementOwnersInner.ts +80 -0
  241. package/src/sobol/generated/models/AgreementSignatoriesInner.ts +78 -0
  242. package/src/sobol/generated/models/CustomField.ts +265 -0
  243. package/src/sobol/generated/models/CustomFieldBadgeConfig.ts +67 -0
  244. package/src/sobol/generated/models/CustomFieldBadgeConfigOptionsValue.ts +105 -0
  245. package/src/sobol/generated/models/CustomFieldBadgeContent.ts +67 -0
  246. package/src/sobol/generated/models/CustomFieldBadgeContentBadgesInner.ts +73 -0
  247. package/src/sobol/generated/models/CustomFieldConfig.ts +88 -0
  248. package/src/sobol/generated/models/CustomFieldMultiSelectDropDownConfig.ts +70 -0
  249. package/src/sobol/generated/models/CustomFieldMultiSelectDropDownContent.ts +72 -0
  250. package/src/sobol/generated/models/CustomFieldMultiSelectDropDownContentSelectedOptions.ts +77 -0
  251. package/src/sobol/generated/models/CustomFieldSingleSelectDropDownConfig.ts +70 -0
  252. package/src/sobol/generated/models/CustomFieldSingleSelectDropDownConfigOptionsValue.ts +75 -0
  253. package/src/sobol/generated/models/CustomFieldSingleSelectDropDownContent.ts +72 -0
  254. package/src/sobol/generated/models/CustomFieldSingleSelectDropDownContentSelectedOptions.ts +77 -0
  255. package/src/sobol/generated/models/CustomFieldTextConfig.ts +62 -0
  256. package/src/sobol/generated/models/CustomFieldTextContent.ts +62 -0
  257. package/src/sobol/generated/models/CustomFieldValue.ts +249 -0
  258. package/src/sobol/generated/models/CustomFieldValueContent.ts +88 -0
  259. package/src/sobol/generated/models/FeatureToggle.ts +123 -0
  260. package/src/sobol/generated/models/GlobalIdentity.ts +218 -0
  261. package/src/sobol/generated/models/GlobalUserSettings.ts +187 -0
  262. package/src/sobol/generated/models/Goal.ts +322 -0
  263. package/src/sobol/generated/models/GoalOwnersInner.ts +80 -0
  264. package/src/sobol/generated/models/GoalParentGoal.ts +78 -0
  265. package/src/sobol/generated/models/GoalValue.ts +178 -0
  266. package/src/sobol/generated/models/LocalIdentity.ts +220 -0
  267. package/src/sobol/generated/models/ObjectRef.ts +82 -0
  268. package/src/sobol/generated/models/Role.ts +258 -0
  269. package/src/sobol/generated/models/RoleAccountableTo.ts +78 -0
  270. package/src/sobol/generated/models/RoleAssignment.ts +202 -0
  271. package/src/sobol/generated/models/RoleAssignmentsInner.ts +78 -0
  272. package/src/sobol/generated/models/RoleContributesTo.ts +78 -0
  273. package/src/sobol/generated/models/Team.ts +273 -0
  274. package/src/sobol/generated/models/TeamOwnersInner.ts +79 -0
  275. package/src/sobol/generated/models/User.ts +396 -0
  276. package/src/sobol/generated/models/UserLocalIdentitiesInner.ts +78 -0
  277. package/src/sobol/generated/models/index.ts +40 -0
  278. package/src/sobol/generated/runtime.ts +455 -0
@@ -0,0 +1,151 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
3
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
4
+ import { NumberRatchet } from '@bitblit/ratchet-common/lang/number-ratchet';
5
+
6
+ export class HandlebarsRatchet {
7
+ // Empty constructor prevents instantiation
8
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
9
+ private constructor() {}
10
+
11
+ // Disabling ban-types here because I really DO want to accept and function-like object here
12
+ // eslint-disable-next-line @typescript-eslint/ban-types
13
+ public static functionMap(): Record<string, Function> {
14
+ return {
15
+ eq: HandlebarsRatchet.equal,
16
+ ne: HandlebarsRatchet.notEqual,
17
+ lt: HandlebarsRatchet.lessThan,
18
+ gt: HandlebarsRatchet.greaterThan,
19
+ lte: HandlebarsRatchet.lessThanEqual,
20
+ gte: HandlebarsRatchet.greaterThanEqual,
21
+ and: HandlebarsRatchet.and,
22
+ or: HandlebarsRatchet.or,
23
+ formatBytes: HandlebarsRatchet.formatBytes,
24
+ rpn: HandlebarsRatchet.reversePolishNotation,
25
+
26
+ add: HandlebarsRatchet.add,
27
+ sub: HandlebarsRatchet.sub,
28
+ mul: HandlebarsRatchet.mul,
29
+ div: HandlebarsRatchet.div,
30
+ mod: HandlebarsRatchet.mod,
31
+ maxNum: HandlebarsRatchet.maxNum,
32
+ minNum: HandlebarsRatchet.minNum,
33
+ };
34
+ }
35
+
36
+ public static registerAll(handlebars: any): void {
37
+ handlebars.registerHelper(HandlebarsRatchet.functionMap());
38
+ }
39
+
40
+ public static add(v1: number, v2: number): number {
41
+ return NumberRatchet.safeNumber(v1) + NumberRatchet.safeNumber(v2);
42
+ }
43
+
44
+ public static sub(v1: number, v2: number): number {
45
+ return NumberRatchet.safeNumber(v1) - NumberRatchet.safeNumber(v2);
46
+ }
47
+
48
+ public static mul(v1: number, v2: number): number {
49
+ return NumberRatchet.safeNumber(v1) * NumberRatchet.safeNumber(v2);
50
+ }
51
+
52
+ public static div(v1: number, v2: number): number {
53
+ return NumberRatchet.safeNumber(v1) / NumberRatchet.safeNumber(v2);
54
+ }
55
+
56
+ public static mod(v1: number, v2: number): number {
57
+ return NumberRatchet.safeNumber(v1) % NumberRatchet.safeNumber(v2);
58
+ }
59
+
60
+ public static equal(v1: any, v2: any): boolean {
61
+ return v1 === v2;
62
+ }
63
+
64
+ public static notEqual(v1: any, v2: any): boolean {
65
+ return v1 !== v2;
66
+ }
67
+
68
+ public static lessThan(v1: any, v2: any): boolean {
69
+ return v1 < v2;
70
+ }
71
+
72
+ public static lessThanEqual(v1: any, v2: any): boolean {
73
+ return v1 <= v2;
74
+ }
75
+
76
+ public static greaterThan(v1: any, v2: any): boolean {
77
+ return v1 > v2;
78
+ }
79
+
80
+ public static greaterThanEqual(v1: any, v2: any): boolean {
81
+ return v1 >= v2;
82
+ }
83
+
84
+ public static maxNum(...args: number[]): number {
85
+ return Math.max(...args.slice(0, -1));
86
+ }
87
+
88
+ public static minNum(...args: number[]): number {
89
+ return Math.min(...args.slice(0, -1));
90
+ }
91
+
92
+ public static and(...args: any[]): boolean {
93
+ return Array.prototype.every.call(args, Boolean);
94
+ }
95
+
96
+ public static or(...args: any[]): boolean {
97
+ return Array.prototype.slice.call(args, 0, -1).some(Boolean);
98
+ }
99
+
100
+ public static formatBytes(v1: number): string {
101
+ return StringRatchet.formatBytes(v1);
102
+ }
103
+
104
+ /**
105
+ * Soo... why have a implementation of reverse polish notation for Handlebars? Well basically
106
+ * because handlebars does not support doing math internally, and sometimes I want to be able
107
+ * to do arbitrarily complex math inside my template, and even if I have functions like
108
+ * add and div, I cannot do things like this in templates (usually):
109
+ * add 5 (div 10 8)
110
+ * because handlebars typically will not do the parens correctly. So, when you use RPN, there
111
+ * are no parenthesis, operation order is handled by the stack, so you can put pretty much anything
112
+ * you want in here
113
+ *
114
+ * And spare me any lectures about the evils of ANY logic in templates... if you send them my way, I'll assume you
115
+ * are someone who has spent your whole life working in a university system and never having to make a payroll
116
+ * @param args
117
+ */
118
+ public static reversePolishNotation(...args: any[]): string {
119
+ let rval: string = null;
120
+
121
+ try {
122
+ // Disabling ban-types here because I really DO want to accept and function-like object here
123
+ // eslint-disable-next-line @typescript-eslint/ban-types
124
+ const fns: Record<string, Function> = Object.assign({}, HandlebarsRatchet.functionMap());
125
+ delete fns['formatBytes']; // Not a 2-function op
126
+
127
+ const stack = [];
128
+ // Skip the last value since it is a ref back to the function itself
129
+ for (let i = 0; i < args.length - 1; i++) {
130
+ const a = args[i];
131
+ if (fns[a]) {
132
+ if (stack.length > 1) {
133
+ const op2: any = stack.pop();
134
+ const op1: any = stack.pop();
135
+ const res: any = fns[a](op1, op2, {}); // Add back in the last-place placeholder for any ...any f
136
+ stack.push(res);
137
+ } else {
138
+ ErrorRatchet.throwFormattedErr('Cannot execute operation %s - not enough args', a);
139
+ }
140
+ } else {
141
+ stack.push(a);
142
+ }
143
+ }
144
+ rval = stack.pop();
145
+ } catch (err) {
146
+ Logger.error('Failed to execute RPN: %s', err, err);
147
+ rval = ErrorRatchet.asErr(err)?.message || 'Failure';
148
+ }
149
+ return rval;
150
+ }
151
+ }
@@ -0,0 +1,87 @@
1
+ import handlebars from 'handlebars';
2
+ import fetch from 'cross-fetch';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
5
+ import layouts from 'handlebars-layouts';
6
+ import { RatchetTemplateRenderer } from '@bitblit/ratchet-common/template/ratchet-template-renderer';
7
+ import Template = Handlebars.Template;
8
+
9
+ /**
10
+ */
11
+
12
+ export class RemoteHandlebarsTemplateRenderer implements RatchetTemplateRenderer {
13
+ private cache: Map<string, HandlebarsTemplateDelegate>;
14
+
15
+ constructor(
16
+ private prefix: string = '',
17
+ private suffix: string = '',
18
+ private maxCacheTemplates: number = 10,
19
+ ) {
20
+ if (this.maxCacheTemplates > 0) {
21
+ this.cache = new Map<string, HandlebarsTemplateDelegate>();
22
+ }
23
+ }
24
+
25
+ public async renderTemplate(templateName: string, context: any, layoutName: string = null): Promise<string> {
26
+ return this.renderRemoteTemplate(templateName, context, layoutName);
27
+ }
28
+
29
+ public async renderRemoteTemplate(templateName: string, inContext: any, layoutName: string = null): Promise<string> {
30
+ const template: HandlebarsTemplateDelegate = await this.fetchTemplate(templateName);
31
+ const layoutText: string = layoutName ? await this.fetchTemplateText(layoutName) : null;
32
+
33
+ if (layoutText) {
34
+ await layouts.register(handlebars);
35
+ handlebars.registerPartial(layoutName, layoutText);
36
+ }
37
+
38
+ const context: any = inContext || {};
39
+ const result: string = template ? template(context) : null;
40
+ return result;
41
+ }
42
+
43
+ public async renderTemplateDirect(templateText: string, context: any, layoutName: string = null): Promise<string> {
44
+ const template: Template = handlebars.compile(templateText);
45
+ const result: string = template(context);
46
+ return result;
47
+ }
48
+
49
+ private async fetchTemplate(templateName: string): Promise<HandlebarsTemplateDelegate> {
50
+ let rval: HandlebarsTemplateDelegate = null;
51
+ try {
52
+ if (!!this.cache && this.cache.has(templateName)) {
53
+ Logger.silly('Cache hit for template : %s', templateName);
54
+ rval = this.cache.get(templateName);
55
+ } else {
56
+ Logger.debug('Cache miss for template : %s', templateName);
57
+ const templateText: string = await this.fetchTemplateText(templateName);
58
+ if (templateText) {
59
+ rval = handlebars.compile(templateText);
60
+ if (!!this.cache && !!rval) {
61
+ this.cache.set(templateName, rval);
62
+ if (this.cache.size > this.maxCacheTemplates) {
63
+ this.cache.delete(Array.from(this.cache.keys())[0]);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ } catch (err) {
69
+ Logger.warn('Could not fetch and compile template : %s : %s', templateName, err, err);
70
+ rval = null;
71
+ }
72
+ return rval;
73
+ }
74
+
75
+ private async fetchTemplateText(templateName: string): Promise<string> {
76
+ let rval: string = null;
77
+ const url: string = StringRatchet.trimToEmpty(this.prefix) + templateName + StringRatchet.trimToEmpty(this.suffix);
78
+ try {
79
+ const resp: Response = await fetch(url);
80
+ rval = await resp.text();
81
+ } catch (err) {
82
+ Logger.warn('Could not fetch url : %s : %s', url, err, err);
83
+ rval = null;
84
+ }
85
+ return rval;
86
+ }
87
+ }
@@ -0,0 +1,43 @@
1
+ import { ModelValidator } from './model-validator.js';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
5
+ import { EsmRatchet } from '@bitblit/ratchet-common/lang/esm-ratchet';
6
+ import { describe, expect, test } from 'vitest';
7
+
8
+ describe('#modelValidator', function () {
9
+ test('should list an error', function () {
10
+ const yamlString: string = fs
11
+ .readFileSync(path.join(EsmRatchet.fetchDirName(import.meta.url), '../../../../test-data/sample-objects.spec.yaml'))
12
+ .toString();
13
+ const validator: ModelValidator = ModelValidator.createFromYamlString(yamlString, ['ModelObjects']);
14
+
15
+ const shouldPass: any = {
16
+ numberField: 7,
17
+ stringField: 'xxx',
18
+ };
19
+
20
+ const shouldFail: any = {
21
+ numberField: 70,
22
+ stringField: 'xxx',
23
+ };
24
+
25
+ const errShouldPass: string[] = validator.validate('SimpleItem', shouldPass, false, true);
26
+ const errShouldFail: string[] = validator.validate('SimpleItem', shouldFail, false, true);
27
+
28
+ Logger.silly('shouldPass: %j', errShouldPass);
29
+ Logger.silly('shouldFail: %j', errShouldFail);
30
+
31
+ expect(errShouldPass).toBeTruthy();
32
+ expect(errShouldPass.length).toEqual(0);
33
+
34
+ expect(errShouldFail).toBeTruthy();
35
+ expect(errShouldFail.length).toEqual(1);
36
+
37
+ const modelNames: string[] = validator.modelNames;
38
+ expect(modelNames.length).toEqual(2);
39
+ expect(modelNames.includes('SimpleItem')).toBeTruthy();
40
+ expect(modelNames.includes('ApiErrorResponse')).toBeTruthy();
41
+ expect(modelNames.includes('XYZ')).toBeFalsy();
42
+ });
43
+ });
@@ -0,0 +1,67 @@
1
+ import Validator from 'swagger-model-validator';
2
+ import yaml from 'js-yaml';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
5
+ import { MapRatchet } from '@bitblit/ratchet-common/lang/map-ratchet';
6
+
7
+ /**
8
+ * Helper for validating endpoints
9
+ */
10
+ export class ModelValidator {
11
+ constructor(private allModels: any) {
12
+ if (!allModels || Object.keys(allModels).length == 0) {
13
+ ErrorRatchet.throwFormattedErr('Cannot create model validator, passed models was null/empty : %j', allModels);
14
+ }
15
+ }
16
+
17
+ public static createFromYamlString(yamlString: string, rootPath: string[]): ModelValidator {
18
+ const src: any = yaml.load(yamlString);
19
+ const modelSrc: any = rootPath && rootPath.length > 0 ? MapRatchet.findValue(src, rootPath) : src;
20
+ return ModelValidator.createFromParsedObject(modelSrc);
21
+ }
22
+
23
+ public static createFromParsedObject(parsedObject: any): ModelValidator {
24
+ return new ModelValidator(parsedObject);
25
+ }
26
+
27
+ public get modelNames(): string[] {
28
+ return Object.keys(this.allModels);
29
+ }
30
+
31
+ public addModel(modelName: string, model: any): void {
32
+ this.allModels[modelName] = model;
33
+ }
34
+
35
+ public fetchModel(modelName: string): any {
36
+ return this.allModels[modelName];
37
+ }
38
+
39
+ public validate(modelName: string, modelObject: any, emptyAllowed: boolean = false, extraPropertiesAllowed: boolean = true): string[] {
40
+ let rval: string[] = [];
41
+ Logger.silly('Validating model %s all definitions are : %j', modelName, this.allModels);
42
+
43
+ const modelEmpty: boolean = !modelObject || Object.keys(modelObject).length === 0;
44
+ if (modelEmpty) {
45
+ if (!emptyAllowed) {
46
+ rval.push('Empty / null object sent, but empty not allowed here');
47
+ }
48
+ } else {
49
+ if (this.allModels && modelName && this.allModels[modelName]) {
50
+ const validation = new Validator().validate(
51
+ modelObject,
52
+ this.allModels[modelName],
53
+ this.allModels,
54
+ emptyAllowed,
55
+ extraPropertiesAllowed,
56
+ );
57
+
58
+ if (validation.errorCount > 0) {
59
+ rval = validation.errors.map((e) => e.message);
60
+ }
61
+ } else {
62
+ rval = ['Model named "' + modelName + '" not present in schema'];
63
+ }
64
+ }
65
+ return rval;
66
+ }
67
+ }
@@ -0,0 +1,21 @@
1
+ import { timer } from 'rxjs';
2
+ import { ObservableRatchet } from './observable-ratchet.js';
3
+ import { TimeoutToken } from '@bitblit/ratchet-common/lang/timeout-token';
4
+ import { describe, expect, test } from 'vitest';
5
+
6
+ describe('#timeout', function () {
7
+ test('should correctly return before timeout', function () {
8
+ const src = timer(1000);
9
+ const timeoutOb = ObservableRatchet.timeout(src, '1000ms interval', 1500);
10
+ timeoutOb.subscribe((result) => expect(result).toEqual(0));
11
+ });
12
+
13
+ test('should correctly returns null after timeout', function () {
14
+ const src = timer(1500);
15
+ const timeoutOb = ObservableRatchet.timeout(src, '1500ms interval', 1000);
16
+ timeoutOb.subscribe((result) => {
17
+ expect(result).toBeTruthy();
18
+ expect(result instanceof TimeoutToken).toBeTruthy();
19
+ });
20
+ });
21
+ });
@@ -0,0 +1,27 @@
1
+ import { Observable, Observer, race } from 'rxjs';
2
+ import { TimeoutToken } from '@bitblit/ratchet-common/lang/timeout-token';
3
+
4
+ /**
5
+ * A class for simplifying working with rxjs observables.
6
+ *
7
+ * Contributed by William Weiss <npm@codification.org>
8
+ */
9
+ export class ObservableRatchet {
10
+ public static timeout<T>(
11
+ srcObservable: Observable<T | TimeoutToken>,
12
+ title: string,
13
+ timeoutMillis: number,
14
+ ): Observable<T | TimeoutToken> {
15
+ const rval: Observable<unknown> = race(srcObservable, this.createTimeoutObservable(title, timeoutMillis));
16
+ return rval as Observable<T | TimeoutToken>;
17
+ }
18
+
19
+ public static createTimeoutObservable<T>(title: string, timeoutMillis: number): Observable<T | TimeoutToken> {
20
+ return Observable.create((observer: Observer<T | TimeoutToken>) => {
21
+ const id = setTimeout(() => {
22
+ clearTimeout(id);
23
+ observer.next(new TimeoutToken(title, timeoutMillis));
24
+ }, timeoutMillis);
25
+ });
26
+ }
27
+ }
@@ -0,0 +1,22 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { RxjsRatchet } from './rxjs-ratchet.js';
3
+ import { PromiseRatchet } from '@bitblit/ratchet-common/lang/promise-ratchet';
4
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
5
+ import { describe, expect, test } from 'vitest';
6
+
7
+ describe('#waitForNonNullOnSubject', function () {
8
+ test('should resolve after 1 second', async () => {
9
+ const sub: BehaviorSubject<number> = new BehaviorSubject<number>(null);
10
+ //const testFn: any =
11
+ PromiseRatchet.wait(1000).then((r) => {
12
+ sub.next(5);
13
+ });
14
+
15
+ Logger.info('Waiting for non-null');
16
+
17
+ const result: number = await RxjsRatchet.waitForNonNullOnSubject(sub);
18
+ Logger.info('Got %d', result);
19
+
20
+ expect(result).toEqual(5);
21
+ }, 10000);
22
+ });
@@ -0,0 +1,44 @@
1
+ /*
2
+ Functions for working with rxjs objects
3
+ */
4
+
5
+ import { MapRatchet } from '@bitblit/ratchet-common/lang/map-ratchet';
6
+ import { BehaviorSubject, Subscription } from 'rxjs';
7
+
8
+ export class RxjsRatchet {
9
+ public static safeUnsubscribe(sub: any): boolean {
10
+ return MapRatchet.safeCallFunction(sub, 'unsubscribe');
11
+ }
12
+
13
+ public static async waitForNonNullOnSubject<T>(subject: BehaviorSubject<T>): Promise<T> {
14
+ if (subject.value) {
15
+ return subject.value;
16
+ } else {
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ return new Promise<T>((resolve, reject) => {
19
+ const innerSub: Subscription = subject.subscribe((val) => {
20
+ if (val) {
21
+ RxjsRatchet.safeUnsubscribe(innerSub);
22
+ resolve(val);
23
+ }
24
+ });
25
+ });
26
+ }
27
+ }
28
+
29
+ public static async waitForTargetValueOnSubject<T>(subject: BehaviorSubject<T>, targetValue: T): Promise<T> {
30
+ if (subject.value === targetValue) {
31
+ return subject.value;
32
+ } else {
33
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
+ return new Promise<T>((resolve, reject) => {
35
+ const innerSub: Subscription = subject.subscribe((val) => {
36
+ if (val === targetValue) {
37
+ RxjsRatchet.safeUnsubscribe(innerSub);
38
+ resolve(val);
39
+ }
40
+ });
41
+ });
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,53 @@
1
+ .openapi-generator-ignore
2
+ apis/AgreementsApi.ts
3
+ apis/CustomFieldValuesApi.ts
4
+ apis/CustomFieldsApi.ts
5
+ apis/GoalsApi.ts
6
+ apis/RoleAssignmentsApi.ts
7
+ apis/RolesApi.ts
8
+ apis/TeamsApi.ts
9
+ apis/UsersApi.ts
10
+ apis/index.ts
11
+ index.ts
12
+ models/Address.ts
13
+ models/AddressTypeInternalEnum.ts
14
+ models/Agreement.ts
15
+ models/AgreementOwnersInner.ts
16
+ models/AgreementSignatoriesInner.ts
17
+ models/CustomField.ts
18
+ models/CustomFieldBadgeConfig.ts
19
+ models/CustomFieldBadgeConfigOptionsValue.ts
20
+ models/CustomFieldBadgeContent.ts
21
+ models/CustomFieldBadgeContentBadgesInner.ts
22
+ models/CustomFieldConfig.ts
23
+ models/CustomFieldMultiSelectDropDownConfig.ts
24
+ models/CustomFieldMultiSelectDropDownContent.ts
25
+ models/CustomFieldMultiSelectDropDownContentSelectedOptions.ts
26
+ models/CustomFieldSingleSelectDropDownConfig.ts
27
+ models/CustomFieldSingleSelectDropDownConfigOptionsValue.ts
28
+ models/CustomFieldSingleSelectDropDownContent.ts
29
+ models/CustomFieldSingleSelectDropDownContentSelectedOptions.ts
30
+ models/CustomFieldTextConfig.ts
31
+ models/CustomFieldTextContent.ts
32
+ models/CustomFieldValue.ts
33
+ models/CustomFieldValueContent.ts
34
+ models/FeatureToggle.ts
35
+ models/GlobalIdentity.ts
36
+ models/GlobalUserSettings.ts
37
+ models/Goal.ts
38
+ models/GoalOwnersInner.ts
39
+ models/GoalParentGoal.ts
40
+ models/GoalValue.ts
41
+ models/LocalIdentity.ts
42
+ models/ObjectRef.ts
43
+ models/Role.ts
44
+ models/RoleAccountableTo.ts
45
+ models/RoleAssignment.ts
46
+ models/RoleAssignmentsInner.ts
47
+ models/RoleContributesTo.ts
48
+ models/Team.ts
49
+ models/TeamOwnersInner.ts
50
+ models/User.ts
51
+ models/UserLocalIdentitiesInner.ts
52
+ models/index.ts
53
+ runtime.ts
@@ -0,0 +1,23 @@
1
+ # OpenAPI Generator Ignore
2
+ # Generated by openapi-generator https://github.com/openapitools/openapi-generator
3
+
4
+ # Use this file to prevent files from being overwritten by the generator.
5
+ # The patterns follow closely to .gitignore or .dockerignore.
6
+
7
+ # As an example, the C# client generator defines ApiClient.cs.
8
+ # You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9
+ #ApiClient.cs
10
+
11
+ # You can match any string of characters against a directory, file or extension with a single asterisk (*):
12
+ #foo/*/qux
13
+ # The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14
+
15
+ # You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16
+ #foo/**/qux
17
+ # This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18
+
19
+ # You can also negate patterns with an exclamation (!).
20
+ # For example, you can ignore all files in a docs folder with the file extension .md:
21
+ #docs/*.md
22
+ # Then explicitly reverse the ignore rule for a single file:
23
+ #!docs/README.md