backend-test-tools 1.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 (187) hide show
  1. package/.env.example +51 -0
  2. package/.mocharc.js +9 -0
  3. package/.prettierrc +7 -0
  4. package/README.md +271 -0
  5. package/babel.config.json +33 -0
  6. package/dist/factory/factory.d.ts +11 -0
  7. package/dist/factory/factory.js +39 -0
  8. package/dist/factory/factory.js.map +1 -0
  9. package/dist/factory/factory.types.d.ts +38 -0
  10. package/dist/factory/factory.types.js +2 -0
  11. package/dist/factory/factory.types.js.map +1 -0
  12. package/dist/factory/index.d.ts +2 -0
  13. package/dist/factory/index.js +28 -0
  14. package/dist/factory/index.js.map +1 -0
  15. package/dist/factory/workers/connection.d.ts +3 -0
  16. package/dist/factory/workers/connection.js +25 -0
  17. package/dist/factory/workers/connection.js.map +1 -0
  18. package/dist/factory/workers/connection.types.d.ts +28 -0
  19. package/dist/factory/workers/connection.types.js +2 -0
  20. package/dist/factory/workers/connection.types.js.map +1 -0
  21. package/dist/factory/workers/index.d.ts +6 -0
  22. package/dist/factory/workers/index.js +72 -0
  23. package/dist/factory/workers/index.js.map +1 -0
  24. package/dist/factory/workers/organization.d.ts +3 -0
  25. package/dist/factory/workers/organization.js +36 -0
  26. package/dist/factory/workers/organization.js.map +1 -0
  27. package/dist/factory/workers/organization.types.d.ts +51 -0
  28. package/dist/factory/workers/organization.types.js +2 -0
  29. package/dist/factory/workers/organization.types.js.map +1 -0
  30. package/dist/factory/workers/user.d.ts +5 -0
  31. package/dist/factory/workers/user.js +60 -0
  32. package/dist/factory/workers/user.js.map +1 -0
  33. package/dist/factory/workers/user.types.d.ts +76 -0
  34. package/dist/factory/workers/user.types.js +2 -0
  35. package/dist/factory/workers/user.types.js.map +1 -0
  36. package/dist/generators/generateAccessToken.d.ts +3 -0
  37. package/dist/generators/generateAccessToken.js +27 -0
  38. package/dist/generators/generateAccessToken.js.map +1 -0
  39. package/dist/generators/generateChatId.d.ts +2 -0
  40. package/dist/generators/generateChatId.js +13 -0
  41. package/dist/generators/generateChatId.js.map +1 -0
  42. package/dist/generators/generateEcdsaKeyPair.d.ts +2 -0
  43. package/dist/generators/generateEcdsaKeyPair.js +31 -0
  44. package/dist/generators/generateEcdsaKeyPair.js.map +1 -0
  45. package/dist/generators/generateImageBuffer.d.ts +3 -0
  46. package/dist/generators/generateImageBuffer.js +23 -0
  47. package/dist/generators/generateImageBuffer.js.map +1 -0
  48. package/dist/generators/generateImageBuffer.types.d.ts +7 -0
  49. package/dist/generators/generateImageBuffer.types.js +2 -0
  50. package/dist/generators/generateImageBuffer.types.js.map +1 -0
  51. package/dist/generators/generateKeyPair.d.ts +6 -0
  52. package/dist/generators/generateKeyPair.js +36 -0
  53. package/dist/generators/generateKeyPair.js.map +1 -0
  54. package/dist/generators/generateKeyPair.types.d.ts +9 -0
  55. package/dist/generators/generateKeyPair.types.js +2 -0
  56. package/dist/generators/generateKeyPair.types.js.map +1 -0
  57. package/dist/generators/generateLocale.d.ts +5 -0
  58. package/dist/generators/generateLocale.js +16 -0
  59. package/dist/generators/generateLocale.js.map +1 -0
  60. package/dist/generators/generateRegId.d.ts +4 -0
  61. package/dist/generators/generateRegId.js +14 -0
  62. package/dist/generators/generateRegId.js.map +1 -0
  63. package/dist/generators/generateRsaKeyPair.d.ts +2 -0
  64. package/dist/generators/generateRsaKeyPair.js +22 -0
  65. package/dist/generators/generateRsaKeyPair.js.map +1 -0
  66. package/dist/generators/generateUserCrypto.d.ts +15 -0
  67. package/dist/generators/generateUserCrypto.js +33 -0
  68. package/dist/generators/generateUserCrypto.js.map +1 -0
  69. package/dist/generators/index.d.ts +9 -0
  70. package/dist/generators/index.js +105 -0
  71. package/dist/generators/index.js.map +1 -0
  72. package/dist/index.d.ts +4 -0
  73. package/dist/index.js +50 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/stubs/index.d.ts +1 -0
  76. package/dist/stubs/index.js +17 -0
  77. package/dist/stubs/index.js.map +1 -0
  78. package/dist/stubs/server-engine/Leader.types.d.ts +8 -0
  79. package/dist/stubs/server-engine/Leader.types.js +2 -0
  80. package/dist/stubs/server-engine/Leader.types.js.map +1 -0
  81. package/dist/stubs/server-engine/Localizator.d.ts +3 -0
  82. package/dist/stubs/server-engine/Localizator.js +34 -0
  83. package/dist/stubs/server-engine/Localizator.js.map +1 -0
  84. package/dist/stubs/server-engine/Localizator.types.d.ts +22 -0
  85. package/dist/stubs/server-engine/Localizator.types.js +2 -0
  86. package/dist/stubs/server-engine/Localizator.types.js.map +1 -0
  87. package/dist/stubs/server-engine/PubSub.d.ts +3 -0
  88. package/dist/stubs/server-engine/PubSub.js +24 -0
  89. package/dist/stubs/server-engine/PubSub.js.map +1 -0
  90. package/dist/stubs/server-engine/PubSub.types.d.ts +14 -0
  91. package/dist/stubs/server-engine/PubSub.types.js +2 -0
  92. package/dist/stubs/server-engine/PubSub.types.js.map +1 -0
  93. package/dist/stubs/server-engine/PushNotification.d.ts +3 -0
  94. package/dist/stubs/server-engine/PushNotification.js +18 -0
  95. package/dist/stubs/server-engine/PushNotification.js.map +1 -0
  96. package/dist/stubs/server-engine/PushNotification.types.d.ts +8 -0
  97. package/dist/stubs/server-engine/PushNotification.types.js +2 -0
  98. package/dist/stubs/server-engine/PushNotification.types.js.map +1 -0
  99. package/dist/stubs/server-engine/index.d.ts +4 -0
  100. package/dist/stubs/server-engine/index.js +50 -0
  101. package/dist/stubs/server-engine/index.js.map +1 -0
  102. package/dist/stubs/server-engine/sendPush.d.ts +3 -0
  103. package/dist/stubs/server-engine/sendPush.js +15 -0
  104. package/dist/stubs/server-engine/sendPush.js.map +1 -0
  105. package/dist/utils/generateCerts/generateCerts.const.d.ts +5 -0
  106. package/dist/utils/generateCerts/generateCerts.const.js +35 -0
  107. package/dist/utils/generateCerts/generateCerts.const.js.map +1 -0
  108. package/dist/utils/generateCerts/generateCerts.d.ts +9 -0
  109. package/dist/utils/generateCerts/generateCerts.js +108 -0
  110. package/dist/utils/generateCerts/generateCerts.js.map +1 -0
  111. package/dist/utils/generateCerts/generateCerts.types.d.ts +19 -0
  112. package/dist/utils/generateCerts/generateCerts.types.js +2 -0
  113. package/dist/utils/generateCerts/generateCerts.types.js.map +1 -0
  114. package/dist/utils/generateCerts/index.d.ts +1 -0
  115. package/dist/utils/generateCerts/index.js +17 -0
  116. package/dist/utils/generateCerts/index.js.map +1 -0
  117. package/dist/utils/getAdminApiBearer.d.ts +2 -0
  118. package/dist/utils/getAdminApiBearer.js +19 -0
  119. package/dist/utils/getAdminApiBearer.js.map +1 -0
  120. package/dist/utils/getBearer.d.ts +3 -0
  121. package/dist/utils/getBearer.js +12 -0
  122. package/dist/utils/getBearer.js.map +1 -0
  123. package/dist/utils/index.d.ts +6 -0
  124. package/dist/utils/index.js +72 -0
  125. package/dist/utils/index.js.map +1 -0
  126. package/dist/utils/jwtRequest.d.ts +9 -0
  127. package/dist/utils/jwtRequest.js +29 -0
  128. package/dist/utils/jwtRequest.js.map +1 -0
  129. package/dist/utils/staticRequest.d.ts +10 -0
  130. package/dist/utils/staticRequest.js +24 -0
  131. package/dist/utils/staticRequest.js.map +1 -0
  132. package/dist/utils/tlsRequest.d.ts +6 -0
  133. package/dist/utils/tlsRequest.js +44 -0
  134. package/dist/utils/tlsRequest.js.map +1 -0
  135. package/dist/utils/tlsRequest.types.d.ts +9 -0
  136. package/dist/utils/tlsRequest.types.js +2 -0
  137. package/dist/utils/tlsRequest.types.js.map +1 -0
  138. package/eslint.config.mjs +11 -0
  139. package/jsconfig.json +14 -0
  140. package/package.json +83 -0
  141. package/src/factory/factory.ts +51 -0
  142. package/src/factory/factory.types.ts +50 -0
  143. package/src/factory/index.ts +2 -0
  144. package/src/factory/workers/connection.ts +22 -0
  145. package/src/factory/workers/connection.types.ts +29 -0
  146. package/src/factory/workers/index.ts +6 -0
  147. package/src/factory/workers/organization.ts +35 -0
  148. package/src/factory/workers/organization.types.ts +53 -0
  149. package/src/factory/workers/user.ts +57 -0
  150. package/src/factory/workers/user.types.ts +77 -0
  151. package/src/generators/generateAccessToken.ts +24 -0
  152. package/src/generators/generateChatId.ts +6 -0
  153. package/src/generators/generateEcdsaKeyPair.ts +16 -0
  154. package/src/generators/generateImageBuffer.ts +19 -0
  155. package/src/generators/generateImageBuffer.types.ts +7 -0
  156. package/src/generators/generateKeyPair.ts +24 -0
  157. package/src/generators/generateKeyPair.types.ts +9 -0
  158. package/src/generators/generateLocale.ts +28 -0
  159. package/src/generators/generateRegId.ts +9 -0
  160. package/src/generators/generateRsaKeyPair.ts +12 -0
  161. package/src/generators/generateUserCrypto.ts +24 -0
  162. package/src/generators/index.ts +9 -0
  163. package/src/index.ts +4 -0
  164. package/src/stubs/index.ts +1 -0
  165. package/src/stubs/server-engine/Leader.types.ts +9 -0
  166. package/src/stubs/server-engine/Localizator.ts +25 -0
  167. package/src/stubs/server-engine/Localizator.types.ts +24 -0
  168. package/src/stubs/server-engine/PubSub.ts +13 -0
  169. package/src/stubs/server-engine/PubSub.types.ts +15 -0
  170. package/src/stubs/server-engine/PushNotification.ts +11 -0
  171. package/src/stubs/server-engine/PushNotification.types.ts +9 -0
  172. package/src/stubs/server-engine/index.ts +4 -0
  173. package/src/stubs/server-engine/sendPush.ts +7 -0
  174. package/src/utils/generateCerts/generateCerts.const.ts +48 -0
  175. package/src/utils/generateCerts/generateCerts.ts +108 -0
  176. package/src/utils/generateCerts/generateCerts.types.ts +21 -0
  177. package/src/utils/generateCerts/index.ts +1 -0
  178. package/src/utils/getAdminApiBearer.ts +17 -0
  179. package/src/utils/getBearer.ts +11 -0
  180. package/src/utils/index.ts +6 -0
  181. package/src/utils/jwtRequest.ts +25 -0
  182. package/src/utils/staticRequest.ts +22 -0
  183. package/src/utils/tlsRequest.ts +41 -0
  184. package/src/utils/tlsRequest.types.ts +9 -0
  185. package/test/env.ts +10 -0
  186. package/tsconfig.build.json +4 -0
  187. package/tsconfig.json +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_user","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_user2","_connection","_connection2","_organization","_organization2"],"sources":["../../../src/factory/workers/index.ts"],"sourcesContent":["export * from './user';\nexport * from './user.types';\nexport * from './connection';\nexport * from './connection.types';\nexport * from './organization';\nexport * from './organization.types';\n"],"mappings":";;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,WAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,WAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,WAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,WAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,YAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,YAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,YAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,YAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,aAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,aAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,aAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,aAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,cAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,cAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,cAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAK,cAAA,CAAAT,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { OrganizationModel } from './organization.types';
2
+ /** Create a random organization */
3
+ export declare function organizationFactoryWorker(): OrganizationModel;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.organizationFactoryWorker = organizationFactoryWorker;
7
+ var _faker = require("@faker-js/faker");
8
+ /** Create a random organization */
9
+ function organizationFactoryWorker() {
10
+ return {
11
+ name: _faker.faker.company.name(),
12
+ territory: _faker.faker.address.countryCode(),
13
+ description: _faker.faker.company.catchPhrase(),
14
+ contactInfo: _faker.faker.address.streetAddress(),
15
+ productsInfo: _faker.faker.company.catchPhrase(),
16
+ avatarUrl: _faker.faker.internet.url(),
17
+ coverUrl: _faker.faker.internet.url(),
18
+ membersVisible: _faker.faker.datatype.boolean(),
19
+ searchable: _faker.faker.datatype.boolean(),
20
+ activities: [{
21
+ id: _faker.faker.string.uuid(),
22
+ translationKey: _faker.faker.lorem.word()
23
+ }],
24
+ members: [{
25
+ id: _faker.faker.string.uuid(),
26
+ organizationId: _faker.faker.string.uuid(),
27
+ userId: _faker.faker.string.uuid(),
28
+ requested: _faker.faker.datatype.boolean(),
29
+ requestedAt: _faker.faker.date.recent(),
30
+ invited: _faker.faker.datatype.boolean(),
31
+ invitedAt: _faker.faker.date.recent(),
32
+ admin: _faker.faker.datatype.boolean()
33
+ }]
34
+ };
35
+ }
36
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","names":["_faker","require","organizationFactoryWorker","name","faker","company","territory","address","countryCode","description","catchPhrase","contactInfo","streetAddress","productsInfo","avatarUrl","internet","url","coverUrl","membersVisible","datatype","boolean","searchable","activities","id","string","uuid","translationKey","lorem","word","members","organizationId","userId","requested","requestedAt","date","recent","invited","invitedAt","admin"],"sources":["../../../src/factory/workers/organization.ts"],"sourcesContent":["import { faker } from '@faker-js/faker';\nimport {OrganizationModel} from './organization.types';\n\n/** Create a random organization */\nexport function organizationFactoryWorker(): OrganizationModel {\n return {\n name: faker.company.name(),\n territory: faker.address.countryCode(),\n description: faker.company.catchPhrase(),\n contactInfo: faker.address.streetAddress(),\n productsInfo: faker.company.catchPhrase(),\n avatarUrl: faker.internet.url(),\n coverUrl: faker.internet.url(),\n membersVisible: faker.datatype.boolean(),\n searchable: faker.datatype.boolean(),\n activities: [\n {\n id: faker.string.uuid(),\n translationKey: faker.lorem.word(),\n },\n ],\n members: [\n {\n id: faker.string.uuid(),\n organizationId: faker.string.uuid(),\n userId: faker.string.uuid(),\n requested: faker.datatype.boolean(),\n requestedAt: faker.date.recent(),\n invited: faker.datatype.boolean(),\n invitedAt: faker.date.recent(),\n admin: faker.datatype.boolean(),\n },\n ],\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA;AACO,SAASC,yBAAyBA,CAAA,EAAsB;EAC7D,OAAO;IACLC,IAAI,EAAEC,YAAK,CAACC,OAAO,CAACF,IAAI,CAAC,CAAC;IAC1BG,SAAS,EAAEF,YAAK,CAACG,OAAO,CAACC,WAAW,CAAC,CAAC;IACtCC,WAAW,EAAEL,YAAK,CAACC,OAAO,CAACK,WAAW,CAAC,CAAC;IACxCC,WAAW,EAAEP,YAAK,CAACG,OAAO,CAACK,aAAa,CAAC,CAAC;IAC1CC,YAAY,EAAET,YAAK,CAACC,OAAO,CAACK,WAAW,CAAC,CAAC;IACzCI,SAAS,EAAEV,YAAK,CAACW,QAAQ,CAACC,GAAG,CAAC,CAAC;IAC/BC,QAAQ,EAAEb,YAAK,CAACW,QAAQ,CAACC,GAAG,CAAC,CAAC;IAC9BE,cAAc,EAAEd,YAAK,CAACe,QAAQ,CAACC,OAAO,CAAC,CAAC;IACxCC,UAAU,EAAEjB,YAAK,CAACe,QAAQ,CAACC,OAAO,CAAC,CAAC;IACpCE,UAAU,EAAE,CACV;MACEC,EAAE,EAAEnB,YAAK,CAACoB,MAAM,CAACC,IAAI,CAAC,CAAC;MACvBC,cAAc,EAAEtB,YAAK,CAACuB,KAAK,CAACC,IAAI,CAAC;IACnC,CAAC,CACF;IACDC,OAAO,EAAE,CACP;MACEN,EAAE,EAAEnB,YAAK,CAACoB,MAAM,CAACC,IAAI,CAAC,CAAC;MACvBK,cAAc,EAAE1B,YAAK,CAACoB,MAAM,CAACC,IAAI,CAAC,CAAC;MACnCM,MAAM,EAAE3B,YAAK,CAACoB,MAAM,CAACC,IAAI,CAAC,CAAC;MAC3BO,SAAS,EAAE5B,YAAK,CAACe,QAAQ,CAACC,OAAO,CAAC,CAAC;MACnCa,WAAW,EAAE7B,YAAK,CAAC8B,IAAI,CAACC,MAAM,CAAC,CAAC;MAChCC,OAAO,EAAEhC,YAAK,CAACe,QAAQ,CAACC,OAAO,CAAC,CAAC;MACjCiB,SAAS,EAAEjC,YAAK,CAAC8B,IAAI,CAACC,MAAM,CAAC,CAAC;MAC9BG,KAAK,EAAElC,YAAK,CAACe,QAAQ,CAACC,OAAO,CAAC;IAChC,CAAC;EAEL,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ /** Organization base model */
2
+ export interface OrganizationModel {
3
+ /** Name of the organization */
4
+ name: string;
5
+ /** ISO Code of the territory in which the organization is located */
6
+ territory: string;
7
+ /** Description of the organization */
8
+ description: string;
9
+ /** Contact information of the organization */
10
+ contactInfo: string;
11
+ /** Product information fo the organization */
12
+ productsInfo: string;
13
+ /** URL of the organization avatar */
14
+ avatarUrl: string;
15
+ /** URL of the organization cover picture */
16
+ coverUrl: string;
17
+ /** Indicates if organization members are visible publicly */
18
+ membersVisible: boolean;
19
+ /** Indicates if organization is searchable publicly */
20
+ searchable: boolean;
21
+ /** List of activities that the organization has */
22
+ activities: Array<OrganizationActivityModel>;
23
+ /** List of organization members */
24
+ members: Array<OrganizationMemberModel>;
25
+ }
26
+ /** Organization activity template */
27
+ export interface OrganizationActivityModel {
28
+ /** ID of the activity */
29
+ id: string;
30
+ /** Translation key to display the activity name */
31
+ translationKey: string;
32
+ }
33
+ /** Organization member */
34
+ export interface OrganizationMemberModel {
35
+ /** ID of the membership */
36
+ id: string;
37
+ /** ID of the organization on which the user has membership */
38
+ organizationId: string;
39
+ /** ID of the user */
40
+ userId: string;
41
+ /** Did the user accept/request to join the organization */
42
+ requested: boolean;
43
+ /** Time at which the user accepted/requested to join the organization */
44
+ requestedAt: Date;
45
+ /** Did the user get accepted/invited by an organization admin */
46
+ invited: boolean;
47
+ /** Time at which the user got accepted/invited by an organization admin */
48
+ invitedAt: Date;
49
+ /** Is the user an admin of the organization */
50
+ admin: boolean;
51
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=organization.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.types.js","names":[],"sources":["../../../src/factory/workers/organization.types.ts"],"sourcesContent":["/** Organization base model */\nexport interface OrganizationModel {\n /** Name of the organization */\n name: string;\n /** ISO Code of the territory in which the organization is located */\n territory: string;\n /** Description of the organization */\n description: string;\n /** Contact information of the organization */\n contactInfo: string;\n /** Product information fo the organization */\n productsInfo: string;\n /** URL of the organization avatar */\n avatarUrl: string;\n /** URL of the organization cover picture */\n coverUrl: string;\n /** Indicates if organization members are visible publicly */\n membersVisible: boolean;\n /** Indicates if organization is searchable publicly */\n searchable: boolean;\n /** List of activities that the organization has */\n activities: Array<OrganizationActivityModel>;\n /** List of organization members */\n members: Array<OrganizationMemberModel>;\n}\n\n/** Organization activity template */\nexport interface OrganizationActivityModel {\n /** ID of the activity */\n id: string;\n /** Translation key to display the activity name */\n translationKey: string;\n}\n\n/** Organization member */\nexport interface OrganizationMemberModel {\n /** ID of the membership */\n id: string;\n /** ID of the organization on which the user has membership */\n organizationId: string;\n /** ID of the user */\n userId: string;\n /** Did the user accept/request to join the organization */\n requested: boolean;\n /** Time at which the user accepted/requested to join the organization */\n requestedAt: Date;\n /** Did the user get accepted/invited by an organization admin */\n invited: boolean;\n /** Time at which the user got accepted/invited by an organization admin */\n invitedAt: Date;\n /** Is the user an admin of the organization */\n admin: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import { UserModel, UserBuildOptions } from './user.types';
2
+ /**
3
+ * Create a random user
4
+ */
5
+ export declare function userFactoryWorker(buildOptions?: UserBuildOptions): UserModel;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.userFactoryWorker = userFactoryWorker;
7
+ var _crypto = require("crypto");
8
+ var _faker = require("@faker-js/faker");
9
+ var _generators = require("../../generators");
10
+ /**
11
+ * Create a random user
12
+ */
13
+ function userFactoryWorker(buildOptions = {}) {
14
+ const firstName = buildOptions.firstName ?? _faker.faker.person.firstName();
15
+ const lastName = buildOptions.lastName ?? _faker.faker.person.lastName();
16
+ const email = _faker.faker.internet.email({
17
+ firstName,
18
+ lastName
19
+ });
20
+ const userName = _faker.faker.internet.userName({
21
+ firstName,
22
+ lastName
23
+ });
24
+ const random = Math.random().toString(36).substring(7);
25
+ const organizationId = buildOptions.organizationId;
26
+ const organizationMember = buildOptions.member ?? false;
27
+ const organizationAdmin = buildOptions.admin ?? false;
28
+ return {
29
+ firstName,
30
+ lastName,
31
+ firstNameLastName: `${firstName}${lastName}`,
32
+ firstNameSpaceLastName: `${firstName} ${lastName}`,
33
+ lastNameFirstName: `${lastName}${firstName}`,
34
+ lastNameSpaceFirstName: `${lastName} ${firstName}`,
35
+ displayName: `${firstName} ${lastName}`,
36
+ casualName: `${firstName}`,
37
+ formalName: `${firstName}`,
38
+ email: buildOptions.moreRandom ? `${random}${email}` : email,
39
+ username: buildOptions.moreRandom ? `${random}${userName}` : userName,
40
+ regId: (0, _generators.generateRegId)(),
41
+ locale: (0, _generators.generateLocale)(),
42
+ pictureUrl: _faker.faker.image.avatar(),
43
+ organizationId,
44
+ joinedOrganizationAt: organizationId ? _faker.faker.date.recent() : null,
45
+ organizationAdmin: organizationAdmin,
46
+ requestedToJoinOrganization: organizationMember || organizationAdmin,
47
+ acceptedInOrganization: organizationMember || organizationAdmin,
48
+ linkId: (0, _crypto.randomUUID)(),
49
+ bbId: (0, _crypto.randomUUID)(),
50
+ bbEncrypted: (0, _generators.generateBbEncrypted)(),
51
+ signKeyEncrypted: (0, _generators.generateSignKeyEncrypted)(),
52
+ signKeyPub: (0, _generators.generateSignKeyPub)(),
53
+ autoConnect: true,
54
+ searchable: true,
55
+ enableUrlScan: true,
56
+ enableMessageTranslation: true,
57
+ emailVisibility: true
58
+ };
59
+ }
60
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","names":["_crypto","require","_faker","_generators","userFactoryWorker","buildOptions","firstName","faker","person","lastName","email","internet","userName","random","Math","toString","substring","organizationId","organizationMember","member","organizationAdmin","admin","firstNameLastName","firstNameSpaceLastName","lastNameFirstName","lastNameSpaceFirstName","displayName","casualName","formalName","moreRandom","username","regId","generateRegId","locale","generateLocale","pictureUrl","image","avatar","joinedOrganizationAt","date","recent","requestedToJoinOrganization","acceptedInOrganization","linkId","randomUUID","bbId","bbEncrypted","generateBbEncrypted","signKeyEncrypted","generateSignKeyEncrypted","signKeyPub","generateSignKeyPub","autoConnect","searchable","enableUrlScan","enableMessageTranslation","emailVisibility"],"sources":["../../../src/factory/workers/user.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { faker } from '@faker-js/faker';\nimport { UserModel, UserBuildOptions } from './user.types';\nimport {\n generateRegId,\n generateLocale,\n generateSignKeyPub,\n generateSignKeyEncrypted,\n generateBbEncrypted\n} from 'generators';\n\n/**\n * Create a random user\n */\nexport function userFactoryWorker(\n buildOptions: UserBuildOptions = {}\n): UserModel {\n const firstName = buildOptions.firstName ?? faker.person.firstName();\n const lastName = buildOptions.lastName ?? faker.person.lastName();\n const email = faker.internet.email({ firstName, lastName });\n const userName = faker.internet.userName({ firstName, lastName });\n const random = Math.random().toString(36).substring(7);\n const organizationId = buildOptions.organizationId;\n const organizationMember = buildOptions.member ?? false;\n const organizationAdmin = buildOptions.admin ?? false;\n return {\n firstName,\n lastName,\n firstNameLastName: `${firstName}${lastName}`,\n firstNameSpaceLastName: `${firstName} ${lastName}`,\n lastNameFirstName: `${lastName}${firstName}`,\n lastNameSpaceFirstName: `${lastName} ${firstName}`,\n displayName: `${firstName} ${lastName}`,\n casualName: `${firstName}`,\n formalName: `${firstName}`,\n email: buildOptions.moreRandom ? `${random}${email}` : email,\n username: buildOptions.moreRandom ? `${random}${userName}` : userName,\n regId: generateRegId(),\n locale: generateLocale(),\n pictureUrl: faker.image.avatar(),\n organizationId,\n joinedOrganizationAt: organizationId ? faker.date.recent() : null,\n organizationAdmin: organizationAdmin,\n requestedToJoinOrganization: organizationMember || organizationAdmin,\n acceptedInOrganization: organizationMember || organizationAdmin,\n linkId: randomUUID(),\n bbId: randomUUID(),\n bbEncrypted: generateBbEncrypted(),\n signKeyEncrypted: generateSignKeyEncrypted(),\n signKeyPub: generateSignKeyPub(),\n autoConnect: true,\n searchable: true,\n enableUrlScan: true,\n enableMessageTranslation: true,\n emailVisibility: true\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAQA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BC,YAA8B,GAAG,CAAC,CAAC,EACxB;EACX,MAAMC,SAAS,GAAGD,YAAY,CAACC,SAAS,IAAIC,YAAK,CAACC,MAAM,CAACF,SAAS,CAAC,CAAC;EACpE,MAAMG,QAAQ,GAAGJ,YAAY,CAACI,QAAQ,IAAIF,YAAK,CAACC,MAAM,CAACC,QAAQ,CAAC,CAAC;EACjE,MAAMC,KAAK,GAAGH,YAAK,CAACI,QAAQ,CAACD,KAAK,CAAC;IAAEJ,SAAS;IAAEG;EAAS,CAAC,CAAC;EAC3D,MAAMG,QAAQ,GAAGL,YAAK,CAACI,QAAQ,CAACC,QAAQ,CAAC;IAAEN,SAAS;IAAEG;EAAS,CAAC,CAAC;EACjE,MAAMI,MAAM,GAAGC,IAAI,CAACD,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,CAAC;EACtD,MAAMC,cAAc,GAAGZ,YAAY,CAACY,cAAc;EAClD,MAAMC,kBAAkB,GAAGb,YAAY,CAACc,MAAM,IAAI,KAAK;EACvD,MAAMC,iBAAiB,GAAGf,YAAY,CAACgB,KAAK,IAAI,KAAK;EACrD,OAAO;IACLf,SAAS;IACTG,QAAQ;IACRa,iBAAiB,EAAE,GAAGhB,SAAS,GAAGG,QAAQ,EAAE;IAC5Cc,sBAAsB,EAAE,GAAGjB,SAAS,IAAIG,QAAQ,EAAE;IAClDe,iBAAiB,EAAE,GAAGf,QAAQ,GAAGH,SAAS,EAAE;IAC5CmB,sBAAsB,EAAE,GAAGhB,QAAQ,IAAIH,SAAS,EAAE;IAClDoB,WAAW,EAAE,GAAGpB,SAAS,IAAIG,QAAQ,EAAE;IACvCkB,UAAU,EAAE,GAAGrB,SAAS,EAAE;IAC1BsB,UAAU,EAAE,GAAGtB,SAAS,EAAE;IAC1BI,KAAK,EAAEL,YAAY,CAACwB,UAAU,GAAG,GAAGhB,MAAM,GAAGH,KAAK,EAAE,GAAGA,KAAK;IAC5DoB,QAAQ,EAAEzB,YAAY,CAACwB,UAAU,GAAG,GAAGhB,MAAM,GAAGD,QAAQ,EAAE,GAAGA,QAAQ;IACrEmB,KAAK,EAAE,IAAAC,yBAAa,EAAC,CAAC;IACtBC,MAAM,EAAE,IAAAC,0BAAc,EAAC,CAAC;IACxBC,UAAU,EAAE5B,YAAK,CAAC6B,KAAK,CAACC,MAAM,CAAC,CAAC;IAChCpB,cAAc;IACdqB,oBAAoB,EAAErB,cAAc,GAAGV,YAAK,CAACgC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,IAAI;IACjEpB,iBAAiB,EAAEA,iBAAiB;IACpCqB,2BAA2B,EAAEvB,kBAAkB,IAAIE,iBAAiB;IACpEsB,sBAAsB,EAAExB,kBAAkB,IAAIE,iBAAiB;IAC/DuB,MAAM,EAAE,IAAAC,kBAAU,EAAC,CAAC;IACpBC,IAAI,EAAE,IAAAD,kBAAU,EAAC,CAAC;IAClBE,WAAW,EAAE,IAAAC,+BAAmB,EAAC,CAAC;IAClCC,gBAAgB,EAAE,IAAAC,oCAAwB,EAAC,CAAC;IAC5CC,UAAU,EAAE,IAAAC,8BAAkB,EAAC,CAAC;IAChCC,WAAW,EAAE,IAAI;IACjBC,UAAU,EAAE,IAAI;IAChBC,aAAa,EAAE,IAAI;IACnBC,wBAAwB,EAAE,IAAI;IAC9BC,eAAe,EAAE;EACnB,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ /** User model template */
2
+ export interface UserModel {
3
+ /** User's first name */
4
+ firstName: string;
5
+ /** User's last name */
6
+ lastName: string;
7
+ /** @deprecated */
8
+ firstNameLastName: string;
9
+ /** @deprecated */
10
+ firstNameSpaceLastName: string;
11
+ /** @deprecated */
12
+ lastNameFirstName: string;
13
+ /** @deprecated */
14
+ lastNameSpaceFirstName: string;
15
+ /** User's regular display name */
16
+ displayName: string;
17
+ /** User's casual display name */
18
+ casualName: string;
19
+ /** User's formal display name */
20
+ formalName: string;
21
+ /** User's email address */
22
+ email: string;
23
+ /** @deprecated User's username */
24
+ username: string;
25
+ /** User's RegId */
26
+ regId: string;
27
+ /** User's locale */
28
+ locale: string;
29
+ /** URL opf the user's avatar */
30
+ pictureUrl: string;
31
+ /** @deprecated ID of the user's organization */
32
+ organizationId?: string;
33
+ /** @deprecated Date at which the user joined the organization */
34
+ joinedOrganizationAt?: Date | null;
35
+ /** @deprecated Admin status of the user in the organization */
36
+ organizationAdmin: boolean;
37
+ /** @deprecated */
38
+ requestedToJoinOrganization: boolean;
39
+ /** @deprecated */
40
+ acceptedInOrganization: boolean;
41
+ /** User's ID for QR codes */
42
+ linkId: string;
43
+ /** User's BlackBerry ID */
44
+ bbId: string;
45
+ /** User's BlackBerry encrypted key */
46
+ bbEncrypted: string;
47
+ /** User's signature keys */
48
+ signKeyEncrypted: string;
49
+ /** User's public key */
50
+ signKeyPub: string;
51
+ /** Enables auto-acceptance of contact requests */
52
+ autoConnect: boolean;
53
+ /** Is the user searchable publicly */
54
+ searchable: boolean;
55
+ /** Is URL scanning enabled for the user */
56
+ enableUrlScan: boolean;
57
+ /** Is message translation enabled for the user */
58
+ enableMessageTranslation: boolean;
59
+ /** Is the user's email visible publicly */
60
+ emailVisibility: boolean;
61
+ }
62
+ /** User template build options */
63
+ export interface UserBuildOptions {
64
+ /** User's first name */
65
+ firstName?: string;
66
+ /** User's last name */
67
+ lastName?: string;
68
+ /** Id of the organization to which the user is affiliated */
69
+ organizationId?: string;
70
+ /** Admin status of the user in his organization */
71
+ admin?: boolean;
72
+ /** Membership status of the user in his organization */
73
+ member?: boolean;
74
+ /** Add randomness to avoid collisions when generating a large number of entities */
75
+ moreRandom?: boolean;
76
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=user.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.types.js","names":[],"sources":["../../../src/factory/workers/user.types.ts"],"sourcesContent":["/** User model template */\nexport interface UserModel {\n /** User's first name */\n firstName: string;\n /** User's last name */\n lastName: string;\n /** @deprecated */\n firstNameLastName: string;\n /** @deprecated */\n firstNameSpaceLastName: string;\n /** @deprecated */\n lastNameFirstName: string;\n /** @deprecated */\n lastNameSpaceFirstName: string;\n /** User's regular display name */\n displayName: string;\n /** User's casual display name */\n casualName: string;\n /** User's formal display name */\n formalName: string;\n /** User's email address */\n email: string;\n /** @deprecated User's username */\n username: string;\n /** User's RegId */\n regId: string;\n /** User's locale */\n locale: string;\n /** URL opf the user's avatar */\n pictureUrl: string;\n /** @deprecated ID of the user's organization */\n organizationId?: string;\n /** @deprecated Date at which the user joined the organization */\n joinedOrganizationAt?: Date | null;\n /** @deprecated Admin status of the user in the organization */\n organizationAdmin: boolean;\n /** @deprecated */\n requestedToJoinOrganization: boolean;\n /** @deprecated */\n acceptedInOrganization: boolean;\n /** User's ID for QR codes */\n linkId: string;\n /** User's BlackBerry ID */\n bbId: string;\n /** User's BlackBerry encrypted key */\n bbEncrypted: string;\n /** User's signature keys */\n signKeyEncrypted: string;\n /** User's public key */\n signKeyPub: string;\n /** Enables auto-acceptance of contact requests */\n autoConnect: boolean;\n /** Is the user searchable publicly */\n searchable: boolean;\n /** Is URL scanning enabled for the user */\n enableUrlScan: boolean;\n /** Is message translation enabled for the user */\n enableMessageTranslation: boolean;\n /** Is the user's email visible publicly */\n emailVisibility: boolean;\n}\n\n/** User template build options */\nexport interface UserBuildOptions {\n /** User's first name */\n firstName?: string;\n /** User's last name */\n lastName?: string;\n /** Id of the organization to which the user is affiliated */\n organizationId?: string;\n /** Admin status of the user in his organization */\n admin?: boolean;\n /** Membership status of the user in his organization */\n member?: boolean;\n /** Add randomness to avoid collisions when generating a large number of entities */\n moreRandom?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { SignOptions } from 'jsonwebtoken';
2
+ /** Returns an API access token valid in test environment */
3
+ export declare function generateAccessToken(userId: string, options?: SignOptions, payload?: string | Buffer | object): string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateAccessToken = generateAccessToken;
7
+ var _crypto = require("crypto");
8
+ var _jsonwebtoken = require("jsonwebtoken");
9
+ /** Returns an API access token valid in test environment */
10
+ function generateAccessToken(userId, options = {}, payload = {}) {
11
+ const id = userId ?? (0, _crypto.randomUUID)();
12
+ if (!process.env.JWT_SECRET) throw new Error('Missing JWT signing secret');
13
+ return (0, _jsonwebtoken.sign)(typeof payload === 'object' ? {
14
+ ...payload,
15
+ user: {
16
+ id
17
+ }
18
+ } : payload, process.env.JWT_SECRET, {
19
+ expiresIn: '1d',
20
+ audience: process.env.ACCESS_TOKEN_AUDIENCE,
21
+ issuer: process.env.ACCESS_TOKEN_ISSUER,
22
+ subject: id,
23
+ jwtid: (0, _crypto.randomUUID)(),
24
+ ...options
25
+ });
26
+ }
27
+ //# sourceMappingURL=generateAccessToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateAccessToken.js","names":["_crypto","require","_jsonwebtoken","generateAccessToken","userId","options","payload","id","randomUUID","process","env","JWT_SECRET","Error","sign","user","expiresIn","audience","ACCESS_TOKEN_AUDIENCE","issuer","ACCESS_TOKEN_ISSUER","subject","jwtid"],"sources":["../../src/generators/generateAccessToken.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { sign, SignOptions } from 'jsonwebtoken';\n\n/** Returns an API access token valid in test environment */\nexport function generateAccessToken(\n userId: string,\n options: SignOptions = {},\n payload: string | Buffer | object = {}\n): string {\n const id = userId ?? randomUUID();\n if (!process.env.JWT_SECRET) throw new Error('Missing JWT signing secret');\n return sign(\n typeof payload === 'object' ? { ...payload, user: { id } } : payload,\n process.env.JWT_SECRET,\n {\n expiresIn: '1d',\n audience: process.env.ACCESS_TOKEN_AUDIENCE,\n issuer: process.env.ACCESS_TOKEN_ISSUER,\n subject: id,\n jwtid: randomUUID(),\n ...options\n }\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA;AACO,SAASE,mBAAmBA,CACjCC,MAAc,EACdC,OAAoB,GAAG,CAAC,CAAC,EACzBC,OAAiC,GAAG,CAAC,CAAC,EAC9B;EACR,MAAMC,EAAE,GAAGH,MAAM,IAAI,IAAAI,kBAAU,EAAC,CAAC;EACjC,IAAI,CAACC,OAAO,CAACC,GAAG,CAACC,UAAU,EAAE,MAAM,IAAIC,KAAK,CAAC,4BAA4B,CAAC;EAC1E,OAAO,IAAAC,kBAAI,EACT,OAAOP,OAAO,KAAK,QAAQ,GAAG;IAAE,GAAGA,OAAO;IAAEQ,IAAI,EAAE;MAAEP;IAAG;EAAE,CAAC,GAAGD,OAAO,EACpEG,OAAO,CAACC,GAAG,CAACC,UAAU,EACtB;IACEI,SAAS,EAAE,IAAI;IACfC,QAAQ,EAAEP,OAAO,CAACC,GAAG,CAACO,qBAAqB;IAC3CC,MAAM,EAAET,OAAO,CAACC,GAAG,CAACS,mBAAmB;IACvCC,OAAO,EAAEb,EAAE;IACXc,KAAK,EAAE,IAAAb,kBAAU,EAAC,CAAC;IACnB,GAAGH;EACL,CACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ /** Generate a BlackBerry Spark chatId */
2
+ export declare function generateChatId(): string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateChatId = generateChatId;
8
+ var _crypto = _interopRequireDefault(require("crypto"));
9
+ /** Generate a BlackBerry Spark chatId */
10
+ function generateChatId() {
11
+ return `${_crypto.default.randomBytes(20).toString('hex')}.1`;
12
+ }
13
+ //# sourceMappingURL=generateChatId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateChatId.js","names":["_crypto","_interopRequireDefault","require","generateChatId","crypto","randomBytes","toString"],"sources":["../../src/generators/generateChatId.ts"],"sourcesContent":["import crypto from 'crypto';\n\n/** Generate a BlackBerry Spark chatId */\nexport function generateChatId(): string {\n return `${crypto.randomBytes(20).toString('hex')}.1`;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA;AACO,SAASC,cAAcA,CAAA,EAAW;EACvC,OAAO,GAAGC,eAAM,CAACC,WAAW,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC,IAAI;AACtD","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ /** Generate a signature key pair for ECDSA */
2
+ export declare function generateEcdsaKeyPair(): void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateEcdsaKeyPair = generateEcdsaKeyPair;
7
+ var _crypto = require("crypto");
8
+ var _fs = require("fs");
9
+ var _path = require("path");
10
+ /** Generate a signature key pair for ECDSA */
11
+ function generateEcdsaKeyPair() {
12
+ const DIR = (0, _path.resolve)('certs');
13
+ if (!(0, _fs.existsSync)(DIR)) (0, _fs.mkdirSync)(DIR);
14
+ const {
15
+ privateKey,
16
+ publicKey
17
+ } = (0, _crypto.generateKeyPairSync)('ec', {
18
+ namedCurve: 'prime256v1',
19
+ privateKeyEncoding: {
20
+ type: 'pkcs8',
21
+ format: 'pem'
22
+ },
23
+ publicKeyEncoding: {
24
+ type: 'spki',
25
+ format: 'pem'
26
+ }
27
+ });
28
+ (0, _fs.writeFileSync)(`${DIR}/ecdsa.key`, privateKey);
29
+ (0, _fs.writeFileSync)(`${DIR}/ecdsa.key.pub`, publicKey);
30
+ }
31
+ //# sourceMappingURL=generateEcdsaKeyPair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateEcdsaKeyPair.js","names":["_crypto","require","_fs","_path","generateEcdsaKeyPair","DIR","resolve","existsSync","mkdirSync","privateKey","publicKey","generateKeyPairSync","namedCurve","privateKeyEncoding","type","format","publicKeyEncoding","writeFileSync"],"sources":["../../src/generators/generateEcdsaKeyPair.ts"],"sourcesContent":["import {generateKeyPairSync} from 'crypto';\nimport {writeFileSync, existsSync, mkdirSync} from 'fs';\nimport {resolve} from 'path';\n\n/** Generate a signature key pair for ECDSA */\nexport function generateEcdsaKeyPair(): void {\n const DIR = resolve('certs');\n if (!existsSync(DIR)) mkdirSync(DIR);\n const {privateKey, publicKey} = generateKeyPairSync('ec', {\n namedCurve: 'prime256v1',\n privateKeyEncoding: {type: 'pkcs8', format: 'pem'},\n publicKeyEncoding: {type: 'spki', format: 'pem'},\n });\n writeFileSync(`${DIR}/ecdsa.key`, privateKey);\n writeFileSync(`${DIR}/ecdsa.key.pub`, publicKey);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,GAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAEA;AACO,SAASG,oBAAoBA,CAAA,EAAS;EAC3C,MAAMC,GAAG,GAAG,IAAAC,aAAO,EAAC,OAAO,CAAC;EAC5B,IAAI,CAAC,IAAAC,cAAU,EAACF,GAAG,CAAC,EAAE,IAAAG,aAAS,EAACH,GAAG,CAAC;EACpC,MAAM;IAACI,UAAU;IAAEC;EAAS,CAAC,GAAG,IAAAC,2BAAmB,EAAC,IAAI,EAAE;IACxDC,UAAU,EAAE,YAAY;IACxBC,kBAAkB,EAAE;MAACC,IAAI,EAAE,OAAO;MAAEC,MAAM,EAAE;IAAK,CAAC;IAClDC,iBAAiB,EAAE;MAACF,IAAI,EAAE,MAAM;MAAEC,MAAM,EAAE;IAAK;EACjD,CAAC,CAAC;EACF,IAAAE,iBAAa,EAAC,GAAGZ,GAAG,YAAY,EAAEI,UAAU,CAAC;EAC7C,IAAAQ,iBAAa,EAAC,GAAGZ,GAAG,gBAAgB,EAAEK,SAAS,CAAC;AAClD","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { generateImageBufferOptions } from './generateImageBuffer.types';
2
+ /** Generate a binary buffer containing a PNG image */
3
+ export declare function generateImageBuffer(options?: generateImageBufferOptions): Promise<Buffer>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateImageBuffer = generateImageBuffer;
8
+ var _jimp = _interopRequireDefault(require("jimp"));
9
+ /** Generate a binary buffer containing a PNG image */
10
+ async function generateImageBuffer(options = {}) {
11
+ const image = await generateImage(options);
12
+ return image.getBufferAsync(_jimp.default.MIME_PNG);
13
+ }
14
+
15
+ /** Generate the asynchronously image using Jimp */
16
+ async function generateImage(options = {}) {
17
+ return new Promise(resolve => {
18
+ new _jimp.default(options.width ?? 150, options.height ?? 150, function (err, image) {
19
+ resolve(image);
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=generateImageBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateImageBuffer.js","names":["_jimp","_interopRequireDefault","require","generateImageBuffer","options","image","generateImage","getBufferAsync","Jimp","MIME_PNG","Promise","resolve","width","height","err"],"sources":["../../src/generators/generateImageBuffer.ts"],"sourcesContent":["import Jimp from 'jimp';\nimport {generateImageBufferOptions} from './generateImageBuffer.types';\n\n/** Generate a binary buffer containing a PNG image */\nexport async function generateImageBuffer(\n options: generateImageBufferOptions = {},\n): Promise<Buffer> {\n const image = await generateImage(options);\n return image.getBufferAsync(Jimp.MIME_PNG);\n}\n\n/** Generate the asynchronously image using Jimp */\nasync function generateImage(options: generateImageBufferOptions = {}): Promise<Jimp> {\n return new Promise<Jimp>((resolve) => {\n new Jimp(options.width ?? 150, options.height ?? 150, function (err, image) {\n resolve(image);\n });\n });\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA;AACO,eAAeC,mBAAmBA,CACvCC,OAAmC,GAAG,CAAC,CAAC,EACvB;EACjB,MAAMC,KAAK,GAAG,MAAMC,aAAa,CAACF,OAAO,CAAC;EAC1C,OAAOC,KAAK,CAACE,cAAc,CAACC,aAAI,CAACC,QAAQ,CAAC;AAC5C;;AAEA;AACA,eAAeH,aAAaA,CAACF,OAAmC,GAAG,CAAC,CAAC,EAAiB;EACpF,OAAO,IAAIM,OAAO,CAAQC,OAAO,IAAK;IACpC,IAAIH,aAAI,CAACJ,OAAO,CAACQ,KAAK,IAAI,GAAG,EAAER,OAAO,CAACS,MAAM,IAAI,GAAG,EAAE,UAAUC,GAAG,EAAET,KAAK,EAAE;MAC1EM,OAAO,CAACN,KAAK,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ /** Options to generate a fake image buffer */
2
+ export interface generateImageBufferOptions {
3
+ /** Image width */
4
+ width?: number;
5
+ /** Image height */
6
+ height?: number;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=generateImageBuffer.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateImageBuffer.types.js","names":[],"sources":["../../src/generators/generateImageBuffer.types.ts"],"sourcesContent":["/** Options to generate a fake image buffer */\nexport interface generateImageBufferOptions {\n /** Image width */\n width?: number;\n /** Image height */\n height?: number;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ import { GeneratedKeyPair } from './generateKeyPair.types';
2
+ /**
3
+ * Generate a RSA key pair
4
+ * @param pass - passphrase used to encrypt the private key (default: generates a random passphrase)
5
+ */
6
+ export declare function generateKeyPair(pass: string): GeneratedKeyPair;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateKeyPair = generateKeyPair;
7
+ var _crypto = require("crypto");
8
+ /**
9
+ * Generate a RSA key pair
10
+ * @param pass - passphrase used to encrypt the private key (default: generates a random passphrase)
11
+ */
12
+ function generateKeyPair(pass) {
13
+ const passphrase = pass ?? process.env.ID_TOKEN_PASSPHRASE ?? (0, _crypto.randomBytes)(32).toString('base64');
14
+ const {
15
+ publicKey,
16
+ privateKey
17
+ } = (0, _crypto.generateKeyPairSync)('rsa', {
18
+ modulusLength: 1024,
19
+ publicKeyEncoding: {
20
+ type: 'spki',
21
+ format: 'pem'
22
+ },
23
+ privateKeyEncoding: {
24
+ type: 'pkcs8',
25
+ format: 'pem',
26
+ cipher: 'aes-256-cbc',
27
+ passphrase
28
+ }
29
+ });
30
+ return {
31
+ passphrase,
32
+ publicKey,
33
+ privateKey
34
+ };
35
+ }
36
+ //# sourceMappingURL=generateKeyPair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateKeyPair.js","names":["_crypto","require","generateKeyPair","pass","passphrase","process","env","ID_TOKEN_PASSPHRASE","randomBytes","toString","publicKey","privateKey","generateKeyPairSync","modulusLength","publicKeyEncoding","type","format","privateKeyEncoding","cipher"],"sources":["../../src/generators/generateKeyPair.ts"],"sourcesContent":["import {generateKeyPairSync, randomBytes} from 'crypto';\nimport {GeneratedKeyPair} from './generateKeyPair.types';\n\n/**\n * Generate a RSA key pair\n * @param pass - passphrase used to encrypt the private key (default: generates a random passphrase)\n */\nexport function generateKeyPair(pass: string): GeneratedKeyPair {\n const passphrase = pass ?? process.env.ID_TOKEN_PASSPHRASE ?? randomBytes(32).toString('base64');\n const {publicKey, privateKey} = generateKeyPairSync('rsa', {\n modulusLength: 1024,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem',\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem',\n cipher: 'aes-256-cbc',\n passphrase,\n },\n });\n return {passphrase, publicKey, privateKey};\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAACC,IAAY,EAAoB;EAC9D,MAAMC,UAAU,GAAGD,IAAI,IAAIE,OAAO,CAACC,GAAG,CAACC,mBAAmB,IAAI,IAAAC,mBAAW,EAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,QAAQ,CAAC;EAChG,MAAM;IAACC,SAAS;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAmB,EAAC,KAAK,EAAE;IACzDC,aAAa,EAAE,IAAI;IACnBC,iBAAiB,EAAE;MACjBC,IAAI,EAAE,MAAM;MACZC,MAAM,EAAE;IACV,CAAC;IACDC,kBAAkB,EAAE;MAClBF,IAAI,EAAE,OAAO;MACbC,MAAM,EAAE,KAAK;MACbE,MAAM,EAAE,aAAa;MACrBd;IACF;EACF,CAAC,CAAC;EACF,OAAO;IAACA,UAAU;IAAEM,SAAS;IAAEC;EAAU,CAAC;AAC5C","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ /** Key pair that was generated */
2
+ export interface GeneratedKeyPair {
3
+ /** PAssphrase used to encrypt the private key */
4
+ passphrase: string;
5
+ /** Public key generated, PEM encoded */
6
+ publicKey: string;
7
+ /** Private key generated, PEM encoded */
8
+ privateKey: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=generateKeyPair.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateKeyPair.types.js","names":[],"sources":["../../src/generators/generateKeyPair.types.ts"],"sourcesContent":["/** Key pair that was generated */\nexport interface GeneratedKeyPair {\n /** PAssphrase used to encrypt the private key */\n passphrase: string;\n /** Public key generated, PEM encoded */\n publicKey: string;\n /** Private key generated, PEM encoded */\n privateKey: string;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export declare const TEST_LOCALES: string[];
2
+ /**
3
+ * Pick up a random locale from the list of testable ones
4
+ */
5
+ export declare function generateLocale(): string;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TEST_LOCALES = void 0;
7
+ exports.generateLocale = generateLocale;
8
+ const TEST_LOCALES = exports.TEST_LOCALES = ['ar', 'en-US', 'es-ES', 'fr-FR', 'id-ID', 'it-IT', 'ja-JP', 'km-KH', 'ko-KR', 'ms-MY', 'my-MM', 'nl-NL', 'pt-PT', 'ry-RU', 'th-TH', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-TW'];
9
+
10
+ /**
11
+ * Pick up a random locale from the list of testable ones
12
+ */
13
+ function generateLocale() {
14
+ return TEST_LOCALES[Math.floor(Math.random() * TEST_LOCALES.length)];
15
+ }
16
+ //# sourceMappingURL=generateLocale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateLocale.js","names":["TEST_LOCALES","exports","generateLocale","Math","floor","random","length"],"sources":["../../src/generators/generateLocale.ts"],"sourcesContent":["export const TEST_LOCALES = [\n 'ar',\n 'en-US',\n 'es-ES',\n 'fr-FR',\n 'id-ID',\n 'it-IT',\n 'ja-JP',\n 'km-KH',\n 'ko-KR',\n 'ms-MY',\n 'my-MM',\n 'nl-NL',\n 'pt-PT',\n 'ry-RU',\n 'th-TH',\n 'uk-UA',\n 'vi-VN',\n 'zh-CN',\n 'zh-TW',\n];\n\n/**\n * Pick up a random locale from the list of testable ones\n */\nexport function generateLocale(): string {\n return TEST_LOCALES[Math.floor(Math.random() * TEST_LOCALES.length)];\n}\n"],"mappings":";;;;;;;AAAO,MAAMA,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,CAC1B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR;;AAED;AACA;AACA;AACO,SAASE,cAAcA,CAAA,EAAW;EACvC,OAAOF,YAAY,CAACG,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGL,YAAY,CAACM,MAAM,CAAC,CAAC;AACtE","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generates a regID like BBM Spark would
3
+ */
4
+ export declare function generateRegId(): string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateRegId = generateRegId;
7
+ /**
8
+ * Generates a regID like BBM Spark would
9
+ */
10
+ function generateRegId() {
11
+ const length = 18;
12
+ return Math.floor(Math.random() * Math.pow(10, length)).toString().padStart(length, '0');
13
+ }
14
+ //# sourceMappingURL=generateRegId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateRegId.js","names":["generateRegId","length","Math","floor","random","pow","toString","padStart"],"sources":["../../src/generators/generateRegId.ts"],"sourcesContent":["/**\n * Generates a regID like BBM Spark would\n */\nexport function generateRegId(): string {\n const length = 18;\n return Math.floor(Math.random() * Math.pow(10, length))\n .toString()\n .padStart(length, '0');\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACO,SAASA,aAAaA,CAAA,EAAW;EACtC,MAAMC,MAAM,GAAG,EAAE;EACjB,OAAOC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGF,IAAI,CAACG,GAAG,CAAC,EAAE,EAAEJ,MAAM,CAAC,CAAC,CACpDK,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAACN,MAAM,EAAE,GAAG,CAAC;AAC1B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ /** Generate a RSA key pair and store it under "{cwd}/certs/rsa.*" */
2
+ export declare function generateRsaKeyPair(passphrase: string): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.generateRsaKeyPair = generateRsaKeyPair;
8
+ var _fs = require("fs");
9
+ var _path = _interopRequireDefault(require("path"));
10
+ var _generateKeyPair = require("./generateKeyPair");
11
+ /** Generate a RSA key pair and store it under "{cwd}/certs/rsa.*" */
12
+ function generateRsaKeyPair(passphrase) {
13
+ const DIR = _path.default.resolve('certs');
14
+ if (!(0, _fs.existsSync)(DIR)) (0, _fs.mkdirSync)(DIR);
15
+ const {
16
+ publicKey,
17
+ privateKey
18
+ } = (0, _generateKeyPair.generateKeyPair)(passphrase);
19
+ (0, _fs.writeFileSync)(`${DIR}/rsa.key`, privateKey);
20
+ (0, _fs.writeFileSync)(`${DIR}/rsa.pub.key`, publicKey);
21
+ }
22
+ //# sourceMappingURL=generateRsaKeyPair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateRsaKeyPair.js","names":["_fs","require","_path","_interopRequireDefault","_generateKeyPair","generateRsaKeyPair","passphrase","DIR","path","resolve","existsSync","mkdirSync","publicKey","privateKey","generateKeyPair","writeFileSync"],"sources":["../../src/generators/generateRsaKeyPair.ts"],"sourcesContent":["import {writeFileSync, mkdirSync, existsSync} from 'fs';\nimport path from 'path';\nimport {generateKeyPair} from './generateKeyPair';\n\n/** Generate a RSA key pair and store it under \"{cwd}/certs/rsa.*\" */\nexport function generateRsaKeyPair(passphrase: string): void {\n const DIR = path.resolve('certs');\n if (!existsSync(DIR)) mkdirSync(DIR);\n const {publicKey, privateKey} = generateKeyPair(passphrase);\n writeFileSync(`${DIR}/rsa.key`, privateKey);\n writeFileSync(`${DIR}/rsa.pub.key`, publicKey);\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAEA;AACO,SAASI,kBAAkBA,CAACC,UAAkB,EAAQ;EAC3D,MAAMC,GAAG,GAAGC,aAAI,CAACC,OAAO,CAAC,OAAO,CAAC;EACjC,IAAI,CAAC,IAAAC,cAAU,EAACH,GAAG,CAAC,EAAE,IAAAI,aAAS,EAACJ,GAAG,CAAC;EACpC,MAAM;IAACK,SAAS;IAAEC;EAAU,CAAC,GAAG,IAAAC,gCAAe,EAACR,UAAU,CAAC;EAC3D,IAAAS,iBAAa,EAAC,GAAGR,GAAG,UAAU,EAAEM,UAAU,CAAC;EAC3C,IAAAE,iBAAa,EAAC,GAAGR,GAAG,cAAc,EAAEK,SAAS,CAAC;AAChD","ignoreList":[]}