@opfr/quests 1.1.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 (206) hide show
  1. package/assets/berry.webp +0 -0
  2. package/assets/success_COMMON.webp +0 -0
  3. package/assets/success_EPIC.webp +0 -0
  4. package/assets/success_LEGENDARY.webp +0 -0
  5. package/assets/success_MYTHIC.webp +0 -0
  6. package/assets/success_RARE.webp +0 -0
  7. package/assets/xp.webp +0 -0
  8. package/dist/canvas.d.ts +9 -0
  9. package/dist/canvas.d.ts.map +1 -0
  10. package/dist/canvas.js +102 -0
  11. package/dist/canvas.js.map +1 -0
  12. package/dist/class/crewBaseQuest.d.ts +14 -0
  13. package/dist/class/crewBaseQuest.d.ts.map +1 -0
  14. package/dist/class/crewBaseQuest.js +70 -0
  15. package/dist/class/crewBaseQuest.js.map +1 -0
  16. package/dist/class/userBaseQuest.d.ts +20 -0
  17. package/dist/class/userBaseQuest.d.ts.map +1 -0
  18. package/dist/class/userBaseQuest.js +100 -0
  19. package/dist/class/userBaseQuest.js.map +1 -0
  20. package/dist/constants.d.ts +5 -0
  21. package/dist/constants.d.ts.map +1 -0
  22. package/dist/constants.js +13 -0
  23. package/dist/constants.js.map +1 -0
  24. package/dist/events/callbacks.d.ts +4 -0
  25. package/dist/events/callbacks.d.ts.map +1 -0
  26. package/dist/events/callbacks.js +53 -0
  27. package/dist/events/callbacks.js.map +1 -0
  28. package/dist/events/event.d.ts +7 -0
  29. package/dist/events/event.d.ts.map +1 -0
  30. package/dist/events/event.js +12 -0
  31. package/dist/events/event.js.map +1 -0
  32. package/dist/events/index.d.ts +3 -0
  33. package/dist/events/index.d.ts.map +1 -0
  34. package/dist/events/index.js +10 -0
  35. package/dist/events/index.js.map +1 -0
  36. package/dist/events/types.d.ts +5 -0
  37. package/dist/events/types.d.ts.map +1 -0
  38. package/dist/events/types.js +2 -0
  39. package/dist/events/types.js.map +1 -0
  40. package/dist/index.d.ts +6 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.es.js +5189 -0
  43. package/dist/index.js +5 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/index.umd.js +4 -0
  46. package/dist/quests/alcohols.d.ts +224 -0
  47. package/dist/quests/alcohols.d.ts.map +1 -0
  48. package/dist/quests/alcohols.js +325 -0
  49. package/dist/quests/alcohols.js.map +1 -0
  50. package/dist/quests/background.d.ts +34 -0
  51. package/dist/quests/background.d.ts.map +1 -0
  52. package/dist/quests/background.js +45 -0
  53. package/dist/quests/background.js.map +1 -0
  54. package/dist/quests/berry.d.ts +60 -0
  55. package/dist/quests/berry.d.ts.map +1 -0
  56. package/dist/quests/berry.js +75 -0
  57. package/dist/quests/berry.js.map +1 -0
  58. package/dist/quests/bet.d.ts +84 -0
  59. package/dist/quests/bet.d.ts.map +1 -0
  60. package/dist/quests/bet.js +109 -0
  61. package/dist/quests/bet.js.map +1 -0
  62. package/dist/quests/birthday.d.ts +14 -0
  63. package/dist/quests/birthday.d.ts.map +1 -0
  64. package/dist/quests/birthday.js +17 -0
  65. package/dist/quests/birthday.js.map +1 -0
  66. package/dist/quests/botPing.d.ts +17 -0
  67. package/dist/quests/botPing.d.ts.map +1 -0
  68. package/dist/quests/botPing.js +20 -0
  69. package/dist/quests/botPing.js.map +1 -0
  70. package/dist/quests/characteristics.d.ts +310 -0
  71. package/dist/quests/characteristics.d.ts.map +1 -0
  72. package/dist/quests/characteristics.js +400 -0
  73. package/dist/quests/characteristics.js.map +1 -0
  74. package/dist/quests/craft.d.ts +170 -0
  75. package/dist/quests/craft.d.ts.map +1 -0
  76. package/dist/quests/craft.js +245 -0
  77. package/dist/quests/craft.js.map +1 -0
  78. package/dist/quests/crewCarpenter.d.ts +70 -0
  79. package/dist/quests/crewCarpenter.d.ts.map +1 -0
  80. package/dist/quests/crewCarpenter.js +95 -0
  81. package/dist/quests/crewCarpenter.js.map +1 -0
  82. package/dist/quests/crewDaily.d.ts +27 -0
  83. package/dist/quests/crewDaily.d.ts.map +1 -0
  84. package/dist/quests/crewDaily.js +39 -0
  85. package/dist/quests/crewDaily.js.map +1 -0
  86. package/dist/quests/crewDisintegration.d.ts +16 -0
  87. package/dist/quests/crewDisintegration.d.ts.map +1 -0
  88. package/dist/quests/crewDisintegration.js +19 -0
  89. package/dist/quests/crewDisintegration.js.map +1 -0
  90. package/dist/quests/crewLevel.d.ts +65 -0
  91. package/dist/quests/crewLevel.d.ts.map +1 -0
  92. package/dist/quests/crewLevel.js +80 -0
  93. package/dist/quests/crewLevel.js.map +1 -0
  94. package/dist/quests/crewMoney.d.ts +65 -0
  95. package/dist/quests/crewMoney.d.ts.map +1 -0
  96. package/dist/quests/crewMoney.js +80 -0
  97. package/dist/quests/crewMoney.js.map +1 -0
  98. package/dist/quests/crewSize.d.ts +65 -0
  99. package/dist/quests/crewSize.d.ts.map +1 -0
  100. package/dist/quests/crewSize.js +80 -0
  101. package/dist/quests/crewSize.js.map +1 -0
  102. package/dist/quests/crewVocal.d.ts +65 -0
  103. package/dist/quests/crewVocal.d.ts.map +1 -0
  104. package/dist/quests/crewVocal.js +90 -0
  105. package/dist/quests/crewVocal.js.map +1 -0
  106. package/dist/quests/draw.d.ts +55 -0
  107. package/dist/quests/draw.d.ts.map +1 -0
  108. package/dist/quests/draw.js +80 -0
  109. package/dist/quests/draw.js.map +1 -0
  110. package/dist/quests/edito.d.ts +17 -0
  111. package/dist/quests/edito.d.ts.map +1 -0
  112. package/dist/quests/edito.js +22 -0
  113. package/dist/quests/edito.js.map +1 -0
  114. package/dist/quests/everyone.d.ts +15 -0
  115. package/dist/quests/everyone.d.ts.map +1 -0
  116. package/dist/quests/everyone.js +18 -0
  117. package/dist/quests/everyone.js.map +1 -0
  118. package/dist/quests/games.d.ts +135 -0
  119. package/dist/quests/games.d.ts.map +1 -0
  120. package/dist/quests/games.js +220 -0
  121. package/dist/quests/games.js.map +1 -0
  122. package/dist/quests/index.d.ts +6 -0
  123. package/dist/quests/index.d.ts.map +1 -0
  124. package/dist/quests/index.js +14 -0
  125. package/dist/quests/index.js.map +1 -0
  126. package/dist/quests/items.d.ts +117 -0
  127. package/dist/quests/items.d.ts.map +1 -0
  128. package/dist/quests/items.js +172 -0
  129. package/dist/quests/items.js.map +1 -0
  130. package/dist/quests/joinCrew.d.ts +12 -0
  131. package/dist/quests/joinCrew.d.ts.map +1 -0
  132. package/dist/quests/joinCrew.js +15 -0
  133. package/dist/quests/joinCrew.js.map +1 -0
  134. package/dist/quests/level.d.ts +114 -0
  135. package/dist/quests/level.d.ts.map +1 -0
  136. package/dist/quests/level.js +145 -0
  137. package/dist/quests/level.js.map +1 -0
  138. package/dist/quests/premium.d.ts +16 -0
  139. package/dist/quests/premium.d.ts.map +1 -0
  140. package/dist/quests/premium.js +19 -0
  141. package/dist/quests/premium.js.map +1 -0
  142. package/dist/quests/raid.d.ts +55 -0
  143. package/dist/quests/raid.d.ts.map +1 -0
  144. package/dist/quests/raid.js +80 -0
  145. package/dist/quests/raid.js.map +1 -0
  146. package/dist/quests/randomMessage.d.ts +55 -0
  147. package/dist/quests/randomMessage.d.ts.map +1 -0
  148. package/dist/quests/randomMessage.js +80 -0
  149. package/dist/quests/randomMessage.js.map +1 -0
  150. package/dist/quests/recipe.d.ts +60 -0
  151. package/dist/quests/recipe.d.ts.map +1 -0
  152. package/dist/quests/recipe.js +86 -0
  153. package/dist/quests/recipe.js.map +1 -0
  154. package/dist/quests/report.d.ts +15 -0
  155. package/dist/quests/report.d.ts.map +1 -0
  156. package/dist/quests/report.js +20 -0
  157. package/dist/quests/report.js.map +1 -0
  158. package/dist/quests/sendMessage.d.ts +60 -0
  159. package/dist/quests/sendMessage.d.ts.map +1 -0
  160. package/dist/quests/sendMessage.js +85 -0
  161. package/dist/quests/sendMessage.js.map +1 -0
  162. package/dist/quests/shop.d.ts +61 -0
  163. package/dist/quests/shop.d.ts.map +1 -0
  164. package/dist/quests/shop.js +86 -0
  165. package/dist/quests/shop.js.map +1 -0
  166. package/dist/quests/timeInVoice.d.ts +60 -0
  167. package/dist/quests/timeInVoice.d.ts.map +1 -0
  168. package/dist/quests/timeInVoice.js +85 -0
  169. package/dist/quests/timeInVoice.js.map +1 -0
  170. package/dist/quests/title.d.ts +34 -0
  171. package/dist/quests/title.d.ts.map +1 -0
  172. package/dist/quests/title.js +43 -0
  173. package/dist/quests/title.js.map +1 -0
  174. package/dist/quests/tournament.d.ts +234 -0
  175. package/dist/quests/tournament.d.ts.map +1 -0
  176. package/dist/quests/tournament.js +277 -0
  177. package/dist/quests/tournament.js.map +1 -0
  178. package/dist/quests/userCrew.d.ts +30 -0
  179. package/dist/quests/userCrew.d.ts.map +1 -0
  180. package/dist/quests/userCrew.js +36 -0
  181. package/dist/quests/userCrew.js.map +1 -0
  182. package/dist/quests/userDaily.d.ts +78 -0
  183. package/dist/quests/userDaily.d.ts.map +1 -0
  184. package/dist/quests/userDaily.js +113 -0
  185. package/dist/quests/userDaily.js.map +1 -0
  186. package/dist/quests/userXpToCrew.d.ts +60 -0
  187. package/dist/quests/userXpToCrew.d.ts.map +1 -0
  188. package/dist/quests/userXpToCrew.js +75 -0
  189. package/dist/quests/userXpToCrew.js.map +1 -0
  190. package/dist/quests/work.d.ts +55 -0
  191. package/dist/quests/work.d.ts.map +1 -0
  192. package/dist/quests/work.js +80 -0
  193. package/dist/quests/work.js.map +1 -0
  194. package/dist/quests/writeDifferentChat.d.ts +60 -0
  195. package/dist/quests/writeDifferentChat.d.ts.map +1 -0
  196. package/dist/quests/writeDifferentChat.js +85 -0
  197. package/dist/quests/writeDifferentChat.js.map +1 -0
  198. package/dist/types.d.ts +9 -0
  199. package/dist/types.d.ts.map +1 -0
  200. package/dist/types.js +2 -0
  201. package/dist/types.js.map +1 -0
  202. package/dist/utils.d.ts +11 -0
  203. package/dist/utils.d.ts.map +1 -0
  204. package/dist/utils.js +70 -0
  205. package/dist/utils.js.map +1 -0
  206. package/package.json +45 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/assets/xp.webp ADDED
Binary file
@@ -0,0 +1,9 @@
1
+ import type { CanvasInstance } from '@opfr/canvas';
2
+ import type { ObjectId } from '@opfr/services';
3
+ import type { CrewBaseQuest } from './class/crewBaseQuest';
4
+ import type { UserBaseQuest } from './class/userBaseQuest';
5
+ export declare const questCanvas: <T extends CrewBaseQuest | UserBaseQuest>(quest: T, userId: ObjectId, canvas: CanvasInstance<string, string>, { berry, xp }: {
6
+ berry: number;
7
+ xp: number;
8
+ }) => Promise<Buffer<ArrayBufferLike>>;
9
+ //# sourceMappingURL=canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS,aAAa,GAAG,aAAa,EACvE,OAAO,CAAC,EACR,QAAQ,QAAQ,EAChB,QAAQ,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,eAAe;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,qCAwJ7C,CAAC"}
package/dist/canvas.js ADDED
@@ -0,0 +1,102 @@
1
+ import { CanvasOrigin, nextAllToXAxis } from '@opfr/canvas';
2
+ import { RANKS, progressiveBadgeTypeGuard } from '@opfr/definitions';
3
+ import { ornamentService, userQuestService, userService } from '@opfr/services';
4
+ import { formatNumber } from '@opfr/utils-lang';
5
+ import { getFactionTitle } from './utils';
6
+ export const questCanvas = async (quest, userId, canvas, { berry, xp }) => {
7
+ const user = await userService.getByObjectId(userId);
8
+ const multiplier = await userQuestService.getStreakMultiplier(userId, quest.id);
9
+ const factionTitle = await getFactionTitle(userId, user.faction);
10
+ const { badge, isFactionBadge, rankId, name, description, daily, secret, titleId, } = quest;
11
+ const title = await ornamentService.get(titleId ?? '');
12
+ canvas
13
+ .Image()
14
+ .setImageName(`quest_success_${rankId}`)
15
+ .setDimensions(2080, 636)
16
+ .draw();
17
+ if (badge) {
18
+ canvas
19
+ .Image()
20
+ .setImageName(progressiveBadgeTypeGuard(badge)
21
+ ? `cropped_badge_${badge.img}_${rankId}`
22
+ : `cropped_badge_${badge.img}`)
23
+ .setOrigin(CanvasOrigin.CENTER)
24
+ .setScale(2)
25
+ .setPosition(370, 318)
26
+ .draw();
27
+ }
28
+ else if (isFactionBadge && user.faction !== 'citizen') {
29
+ canvas
30
+ .Image()
31
+ .setImageName(`cropped_badge_${user.faction}_${rankId}`)
32
+ .setOrigin(CanvasOrigin.CENTER)
33
+ .setScale(2)
34
+ .setPosition(370, 318)
35
+ .draw();
36
+ }
37
+ else {
38
+ canvas
39
+ .Image()
40
+ .setImageName(`badge_default_${rankId}`)
41
+ .setScale(2)
42
+ .setOrigin(CanvasOrigin.CENTER)
43
+ .setPosition(370, 318)
44
+ .draw();
45
+ }
46
+ canvas
47
+ .Text(daily ? 'QUÊTE JOURNALIÈRE TERMINÉE !' : 'SUCCÈS DÉBLOQUÉ !')
48
+ .setPosition(739, 100)
49
+ .setFont('text', 70)
50
+ .setColor(RANKS[rankId].color)
51
+ .draw();
52
+ canvas
53
+ .Text(name)
54
+ .setPosition(739, 325)
55
+ .setOrigin(CanvasOrigin.BOTTOM_LEFT)
56
+ .setFont('poppins', name.length >= 35 ? 65 - (name.length - 35) : 65)
57
+ .draw();
58
+ canvas
59
+ .Text(secret ? 'Succès caché' : description)
60
+ .setPosition(739, 360)
61
+ .setFont('poppins_italic', 35)
62
+ .draw();
63
+ canvas
64
+ .Text(`Récompenses: ${formatNumber(berry)}${daily && multiplier > 1
65
+ ? ` (+${formatNumber(berry * (multiplier - 1))})`
66
+ : ''} `)
67
+ .setPosition(739, 520)
68
+ .setFont('poppins', 35)
69
+ .setOrigin(CanvasOrigin.LEFT)
70
+ .draw(berry !== 0)
71
+ .next((instance, options) => nextAllToXAxis(instance.Image(), options))
72
+ .setImageName('quest_berry')
73
+ .setDimensions(50, 79)
74
+ .draw(berry !== 0)
75
+ .next((instance, options) => nextAllToXAxis(instance.Text(` / ${formatNumber(xp)}${daily && multiplier > 1
76
+ ? ` (+${formatNumber(xp * (multiplier - 1))})`
77
+ : ''} `), options))
78
+ .draw(xp !== 0)
79
+ .next((instance, options) => nextAllToXAxis(instance.Image(), options))
80
+ .setImageName('quest_xp')
81
+ .setDimensions(57, 59)
82
+ .draw(xp !== 0)
83
+ .next((instance, options) => nextAllToXAxis(instance.Text(` combo x${multiplier}`), options))
84
+ .draw(daily && multiplier > 1)
85
+ .next((instance, options) => nextAllToXAxis(instance.Text(' et la possibilité '), options))
86
+ .draw(isFactionBadge && user.faction === 'citizen')
87
+ .next((instance, options) => nextAllToXAxis(instance.Text('de choisir ta faction'), options))
88
+ .setFont('poppins_bold', 35)
89
+ .draw(isFactionBadge && user.faction === 'citizen')
90
+ .next((instance, options) => nextAllToXAxis(instance.Text(' et le titre '), options))
91
+ .setFont('poppins', 35)
92
+ .draw(Boolean(titleId) || (isFactionBadge && user.faction !== 'citizen'))
93
+ .next((instance, options) => nextAllToXAxis(instance.Text(title?.name ?? ''), options))
94
+ .setFont('poppins_bold', 35)
95
+ .setColor((title?.rankId && RANKS[title.rankId].color) ?? 'white')
96
+ .draw(Boolean(title))
97
+ .next((instance, options) => nextAllToXAxis(instance.Text(factionTitle?.name ?? ''), options))
98
+ .setColor((factionTitle?.rankId && RANKS[factionTitle.rankId].color) ?? 'white')
99
+ .draw(isFactionBadge && Boolean(factionTitle));
100
+ return await canvas.encode('webp');
101
+ };
102
+ //# sourceMappingURL=canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../src/canvas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type QUEST_MIDDLEWARE_EVENT_NAME } from '@opfr/services';
2
+ import type { ObjectId, QuestMiddlewareEventName } from '@opfr/services';
3
+ import { UserBaseQuest } from './userBaseQuest';
4
+ export type CrewQuestMiddlewareEventName = Extract<QuestMiddlewareEventName, typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_META | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_ORNAMENTS | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_QUEST | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_STATS_ENGAGEMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.CREW_STATS_FREQUENCY>;
5
+ export declare abstract class CrewBaseQuest extends UserBaseQuest {
6
+ abstract readonly berry: number;
7
+ abstract readonly xp: number;
8
+ abstract readonly crew: true;
9
+ static crewDependencies: CrewQuestMiddlewareEventName[];
10
+ completeForCrew(crewId: ObjectId): Promise<void>;
11
+ applyCrewReward(crewId: ObjectId): Promise<void>;
12
+ isCompletedForCrew(crew: ObjectId): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=crewBaseQuest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewBaseQuest.d.ts","sourceRoot":"","sources":["../../src/class/crewBaseQuest.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,2BAA2B,EAIjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAQ,QAAQ,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,wBAAwB,EACtB,OAAO,2BAA2B,CAAC,IAAI,GACvC,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,cAAc,GACjD,OAAO,2BAA2B,CAAC,UAAU,GAC7C,OAAO,2BAA2B,CAAC,qBAAqB,GACxD,OAAO,2BAA2B,CAAC,oBAAoB,CAC1D,CAAC;AAEF,8BAAsB,aAAc,SAAQ,aAAa;IACvD,kBAA2B,KAAK,EAAE,MAAM,CAAC;IACzC,kBAA2B,EAAE,EAAE,MAAM,CAAC;IAEtC,kBAA2B,IAAI,EAAE,IAAI,CAAC;IAEtC,OAAc,gBAAgB,EAAE,4BAA4B,EAAE,CAAM;IAE9D,eAAe,CAAC,MAAM,EAAE,QAAQ;IA+ChC,eAAe,CAAC,MAAM,EAAE,QAAQ;IAMhC,kBAAkB,CAAC,IAAI,EAAE,QAAQ;CAkBxC"}
@@ -0,0 +1,70 @@
1
+ import { QuestStatus } from '@opfr/definitions';
2
+ import { crewOrnamentsService, crewQuestService, userCrewService, } from '@opfr/services';
3
+ import { sameDay } from '@opfr/utils-lang';
4
+ import { emitQuestCompleteEvent } from '../events';
5
+ import { UserBaseQuest } from './userBaseQuest';
6
+ export class CrewBaseQuest extends UserBaseQuest {
7
+ static crewDependencies = [];
8
+ async completeForCrew(crewId) {
9
+ if (await this.isCompletedForCrew(crewId)) {
10
+ return;
11
+ }
12
+ const TODAY_START = new Date();
13
+ TODAY_START.setHours(0, 0, 0, 0);
14
+ let resultDoc;
15
+ if (this.daily) {
16
+ resultDoc = await crewQuestService.completeQuest({
17
+ lastCompletionDate: { $lt: TODAY_START },
18
+ questId: this.id,
19
+ crew: crewId,
20
+ });
21
+ }
22
+ else if (this.repeatable) {
23
+ resultDoc = await crewQuestService.completeQuest({
24
+ questId: this.id,
25
+ crew: crewId,
26
+ });
27
+ }
28
+ else {
29
+ resultDoc = await crewQuestService.completeQuest({
30
+ questId: this.id,
31
+ crew: crewId,
32
+ status: QuestStatus.IN_PROGRESS,
33
+ });
34
+ }
35
+ if (!resultDoc) {
36
+ return;
37
+ }
38
+ const allUserIds = await userCrewService.getAllUserIdsFromCrew(crewId);
39
+ const completedUserIds = [];
40
+ await this.applyCrewReward(crewId);
41
+ for (const userId of allUserIds) {
42
+ const userReward = await this.complete(userId, false);
43
+ if (userReward) {
44
+ completedUserIds.push(userId);
45
+ }
46
+ }
47
+ emitQuestCompleteEvent(completedUserIds, this);
48
+ }
49
+ async applyCrewReward(crewId) {
50
+ if (this.badge) {
51
+ await crewOrnamentsService.unlockBadge(crewId, this.badge, this.rankId);
52
+ }
53
+ }
54
+ async isCompletedForCrew(crew) {
55
+ const { lastCompletionDate, status } = await crewQuestService.get({
56
+ crew,
57
+ questId: this.id,
58
+ });
59
+ if (this.repeatable) {
60
+ return false;
61
+ }
62
+ if (this.daily) {
63
+ return (status === 'COMPLETED' &&
64
+ !!lastCompletionDate &&
65
+ sameDay(lastCompletionDate, new Date()));
66
+ }
67
+ return status === 'COMPLETED';
68
+ }
69
+ }
70
+ //# sourceMappingURL=crewBaseQuest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crewBaseQuest.js","sourceRoot":"","sources":["../../src/class/crewBaseQuest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BaseQuest } from '@opfr/definitions';
2
+ import type { QUEST_MIDDLEWARE_EVENT_NAME, QuestMiddlewareEventName } from '@opfr/services';
3
+ import { type ObjectId, type UserMeta } from '@opfr/services';
4
+ import type { QuestValidationDocumentMap } from '../types';
5
+ export type UserQuestMiddlewareEventName = Extract<QuestMiddlewareEventName, typeof QUEST_MIDDLEWARE_EVENT_NAME.USER | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_META | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_QUEST | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_INVENTORY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_ORNAMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_CASINO | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_CREW | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_ECONOMY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_ENGAGEMENT | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_FLAGS | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_FREQUENCY | typeof QUEST_MIDDLEWARE_EVENT_NAME.USER_STATS_INVENTORY>;
6
+ export declare abstract class UserBaseQuest extends BaseQuest {
7
+ abstract readonly berry: number | ((userMeta: UserMeta) => number);
8
+ abstract readonly xp: number | ((userMeta: UserMeta) => number);
9
+ static dependencies: UserQuestMiddlewareEventName[];
10
+ abstract isValidated(documentMap: QuestValidationDocumentMap, userId: ObjectId): Promise<boolean>;
11
+ complete(userId: ObjectId, withEventEmit: boolean): Promise<true | undefined>;
12
+ applyReward(user: ObjectId): Promise<void>;
13
+ getComputedRewards(userId: ObjectId): Promise<{
14
+ xp: number;
15
+ berry: number;
16
+ }>;
17
+ specificQuestCompletion(userId: ObjectId): Promise<void>;
18
+ isCompleted(user: ObjectId): Promise<boolean>;
19
+ }
20
+ //# sourceMappingURL=userBaseQuest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userBaseQuest.d.ts","sourceRoot":"","sources":["../../src/class/userBaseQuest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAOd,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,wBAAwB,EACtB,OAAO,2BAA2B,CAAC,IAAI,GACvC,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,SAAS,GAC5C,OAAO,2BAA2B,CAAC,UAAU,GAC7C,OAAO,2BAA2B,CAAC,cAAc,GACjD,OAAO,2BAA2B,CAAC,aAAa,GAChD,OAAO,2BAA2B,CAAC,iBAAiB,GACpD,OAAO,2BAA2B,CAAC,eAAe,GAClD,OAAO,2BAA2B,CAAC,kBAAkB,GACrD,OAAO,2BAA2B,CAAC,qBAAqB,GACxD,OAAO,2BAA2B,CAAC,gBAAgB,GACnD,OAAO,2BAA2B,CAAC,oBAAoB,GACvD,OAAO,2BAA2B,CAAC,oBAAoB,CAC1D,CAAC;AAEF,8BAAsB,aAAc,SAAQ,SAAS;IACnD,kBAA2B,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;IAC5E,kBAA2B,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC;IAEzE,OAAc,YAAY,EAAE,4BAA4B,EAAE,CAAM;IAEhE,QAAQ,CAAC,WAAW,CAClB,WAAW,EAAE,0BAA0B,EACvC,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC;IAEb,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO;IA2CjD,WAAW,CAAC,IAAI,EAAE,QAAQ;IAoB1B,kBAAkB,CAAC,MAAM,EAAE,QAAQ;;;;IAgBnC,uBAAuB,CAAC,MAAM,EAAE,QAAQ;IASxC,WAAW,CAAC,IAAI,EAAE,QAAQ;CAkBjC"}
@@ -0,0 +1,100 @@
1
+ import { BaseQuest, QuestStatus } from '@opfr/definitions';
2
+ import { userInventoryService, userMetaService, userOrnamentService, userQuestService, userService, } from '@opfr/services';
3
+ import { isFunction, sameDay } from '@opfr/utils-lang';
4
+ import { emitQuestCompleteEvent } from '../events';
5
+ import { DailyAll } from '../quests/userDaily';
6
+ export class UserBaseQuest extends BaseQuest {
7
+ static dependencies = [];
8
+ async complete(userId, withEventEmit) {
9
+ const TODAY_START = new Date();
10
+ TODAY_START.setHours(0, 0, 0, 0);
11
+ let resultDoc;
12
+ if (await this.isCompleted(userId)) {
13
+ return;
14
+ }
15
+ if (this.daily) {
16
+ resultDoc = await userQuestService.completeQuest({
17
+ lastCompletionDate: { $lt: TODAY_START },
18
+ questId: this.id,
19
+ user: userId,
20
+ }, true);
21
+ }
22
+ else if (this.repeatable) {
23
+ resultDoc = await userQuestService.completeQuest({
24
+ questId: this.id,
25
+ user: userId,
26
+ });
27
+ }
28
+ else {
29
+ resultDoc = await userQuestService.completeQuest({
30
+ questId: this.id,
31
+ user: userId,
32
+ status: QuestStatus.IN_PROGRESS,
33
+ });
34
+ }
35
+ if (!resultDoc) {
36
+ return;
37
+ }
38
+ await this.specificQuestCompletion(userId);
39
+ await this.applyReward(userId);
40
+ if (withEventEmit) {
41
+ emitQuestCompleteEvent([userId], this);
42
+ }
43
+ return true;
44
+ }
45
+ async applyReward(user) {
46
+ if (!this.crew) {
47
+ if (this.titleId) {
48
+ await userOrnamentService.unlockTitle(user, this.titleId);
49
+ }
50
+ if (this.badge) {
51
+ await userOrnamentService.unlockBadge(user, this.badge, this.rankId);
52
+ }
53
+ if (this.isFactionBadge) {
54
+ await userOrnamentService.unlockFactionBadge(user, this.rankId);
55
+ }
56
+ if (this.asset) {
57
+ await userOrnamentService.unlockProfileAsset(user, this.asset);
58
+ }
59
+ if (this.items) {
60
+ await userInventoryService.addItems(user, this.items);
61
+ }
62
+ }
63
+ }
64
+ async getComputedRewards(userId) {
65
+ const dailyAllId = new DailyAll().id;
66
+ const multiplier = this.daily
67
+ ? await userQuestService.getStreakMultiplier(userId, dailyAllId)
68
+ : 1;
69
+ const userMeta = await userMetaService.get(userId);
70
+ return {
71
+ xp: (isFunction(this.xp) ? this.xp(userMeta) : this.xp) * multiplier,
72
+ berry: (isFunction(this.berry) ? this.berry(userMeta) : this.berry) *
73
+ multiplier,
74
+ };
75
+ }
76
+ async specificQuestCompletion(userId) {
77
+ if (this.id === 'be_level_10') {
78
+ await userService.canChooseFaction(userId, true);
79
+ }
80
+ if (this.id !== 'be_level_10' && this.id.startsWith('be_level_')) {
81
+ await userService.canChangeFaction(userId, true);
82
+ }
83
+ }
84
+ async isCompleted(user) {
85
+ const { lastCompletionDate, status } = await userQuestService.get({
86
+ user,
87
+ questId: this.id,
88
+ });
89
+ if (this.repeatable) {
90
+ return false;
91
+ }
92
+ if (this.daily) {
93
+ return (status === 'COMPLETED' &&
94
+ !!lastCompletionDate &&
95
+ sameDay(lastCompletionDate, new Date()));
96
+ }
97
+ return status === 'COMPLETED';
98
+ }
99
+ }
100
+ //# sourceMappingURL=userBaseQuest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userBaseQuest.js","sourceRoot":"","sources":["../../src/class/userBaseQuest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const BET_MIN_VALUE: 10;
2
+ export declare const BET_MAX_VALUE: 10000000;
3
+ export declare const EDITO_READ: 100;
4
+ export declare const QUEST_ASSET_IMAGES: readonly ["berry", "success_COMMON", "success_RARE", "success_EPIC", "success_LEGENDARY", "success_MYTHIC", "xp"];
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,EAAG,EAAW,CAAC;AACzC,eAAO,MAAM,aAAa,EAAG,QAAmB,CAAC;AAEjD,eAAO,MAAM,UAAU,EAAG,GAAY,CAAC;AAEvC,eAAO,MAAM,kBAAkB,mHAQrB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const BET_MIN_VALUE = 10;
2
+ export const BET_MAX_VALUE = 10_000_000;
3
+ export const EDITO_READ = 100;
4
+ export const QUEST_ASSET_IMAGES = [
5
+ 'berry',
6
+ 'success_COMMON',
7
+ 'success_RARE',
8
+ 'success_EPIC',
9
+ 'success_LEGENDARY',
10
+ 'success_MYTHIC',
11
+ 'xp',
12
+ ];
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,EAAW,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,UAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,IAAI;CACI,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { QuestMiddlewareEventName } from '@opfr/services';
2
+ import { type QuestMiddlewareEventReceiverCallback } from '@opfr/services';
3
+ export declare const buildQuestMiddlewareEventCallback: <T extends QuestMiddlewareEventName>(eventName: T, isCrewEvent: boolean) => QuestMiddlewareEventReceiverCallback<T>;
4
+ //# sourceMappingURL=callbacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../src/events/callbacks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,gBAAgB,CAAC;AAuD3E,eAAO,MAAM,iCAAiC,GAC3C,CAAC,SAAS,wBAAwB,EACjC,WAAW,CAAC,EACZ,aAAa,OAAO,KACnB,oCAAoC,CAAC,CAAC,CAOxC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { userCrewService, } from '@opfr/services';
2
+ import {} from '@opfr/services';
3
+ import { camelcase } from '@opfr/utils-lang';
4
+ import { getQuestsByCrewDependency, getQuestsByDependency } from '../utils';
5
+ const crewEventCallback = async (eventName, crewId, document) => {
6
+ const quests = getQuestsByCrewDependency(eventName);
7
+ const docName = camelcase(eventName.split('/')[1]);
8
+ for (const QuestClass of quests) {
9
+ if (!('crewDependencies' in QuestClass)) {
10
+ return;
11
+ }
12
+ const crewQuest = new QuestClass();
13
+ if (await crewQuest.isCompletedForCrew(crewId))
14
+ continue;
15
+ if (await crewQuest.isValidated({ [docName]: document }, crewId)) {
16
+ await crewQuest.completeForCrew(crewId);
17
+ }
18
+ }
19
+ };
20
+ const userEventCallback = async (eventName, userId, document) => {
21
+ const quests = getQuestsByDependency(eventName);
22
+ const docName = camelcase(eventName.split('/')[1]);
23
+ for (const QuestClass of quests) {
24
+ if ('crewDependencies' in QuestClass) {
25
+ const crewQuest = new QuestClass();
26
+ const userCrew = await userCrewService.get(userId);
27
+ if (!userCrew || !userCrew.crew)
28
+ continue;
29
+ if (await crewQuest.isCompletedForCrew(userCrew.crew))
30
+ continue;
31
+ if (await crewQuest.isValidated({ [docName]: document }, userCrew.crew)) {
32
+ await crewQuest.completeForCrew(userCrew.crew);
33
+ }
34
+ }
35
+ else {
36
+ const userQuest = new QuestClass();
37
+ if (await userQuest.isCompleted(userId))
38
+ continue;
39
+ if (await userQuest.isValidated({ [docName]: document }, userId)) {
40
+ await userQuest.complete(userId, true);
41
+ }
42
+ }
43
+ }
44
+ };
45
+ export const buildQuestMiddlewareEventCallback = (eventName, isCrewEvent) => async (objectId, document) => {
46
+ if (isCrewEvent) {
47
+ await crewEventCallback(eventName, objectId, document);
48
+ }
49
+ else {
50
+ await userEventCallback(eventName, objectId, document);
51
+ }
52
+ };
53
+ //# sourceMappingURL=callbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/events/callbacks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Types } from 'mongoose';
2
+ import type { CrewBaseQuest } from '../class/crewBaseQuest';
3
+ import type { UserBaseQuest } from '../class/userBaseQuest';
4
+ import type { CompletedQuestEventCallbackReceiver } from './types';
5
+ export declare const emitQuestCompleteEvent: (userIds: Types.ObjectId[], quest: UserBaseQuest | CrewBaseQuest) => void;
6
+ export declare const onQuestCompleteEvent: (callback: CompletedQuestEventCallbackReceiver) => void;
7
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/events/event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAMnE,eAAO,MAAM,sBAAsB,GACjC,SAAS,KAAK,CAAC,QAAQ,EAAE,EACzB,OAAO,aAAa,GAAG,aAAa,SAGrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,mCAAmC,SAK9C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as events from 'events';
2
+ const eventEmitter = new events.EventEmitter();
3
+ const COMPLETED_QUEST_EVENT_NAME = 'quest/COMPLETED_QUEST';
4
+ export const emitQuestCompleteEvent = (userIds, quest) => {
5
+ eventEmitter.emit(COMPLETED_QUEST_EVENT_NAME, userIds, quest);
6
+ };
7
+ export const onQuestCompleteEvent = (callback) => {
8
+ eventEmitter.on(COMPLETED_QUEST_EVENT_NAME, (userIds, quest) => {
9
+ callback(userIds, quest);
10
+ });
11
+ };
12
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/events/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAOjC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;AAE/C,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAE3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAyB,EACzB,KAAoC,EACpC,EAAE;IACF,YAAY,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,QAA6C,EAC7C,EAAE;IACF,YAAY,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7D,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './event';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAQA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { QUEST_MIDDLEWARE_EVENT_NAME, registerQuestMiddlewareEvents, } from '@opfr/services';
2
+ import { arrayToRecord } from '@opfr/utils-lang';
3
+ import { buildQuestMiddlewareEventCallback } from './callbacks';
4
+ export * from './types';
5
+ export * from './event';
6
+ registerQuestMiddlewareEvents(arrayToRecord(Object.values(QUEST_MIDDLEWARE_EVENT_NAME).map(value => [
7
+ value,
8
+ buildQuestMiddlewareEventCallback(value, value.startsWith('middleware/CREW')),
9
+ ])));
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAEhE,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,6BAA6B,CAC3B,aAAa,CACX,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACtD,KAAK;IACL,iCAAiC,CAC/B,KAAK,EACL,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CACpC;CACF,CAAC,CACH,CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Types } from 'mongoose';
2
+ import type { CrewBaseQuest } from '../class/crewBaseQuest';
3
+ import type { UserBaseQuest } from '../class/userBaseQuest';
4
+ export type CompletedQuestEventCallbackReceiver = (userIds: Types.ObjectId[], quest: UserBaseQuest | CrewBaseQuest) => void;
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,MAAM,mCAAmC,GAAG,CAChD,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EACzB,KAAK,EAAE,aAAa,GAAG,aAAa,KACjC,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './canvas';
2
+ export * from './constants';
3
+ export * from './utils';
4
+ export * from './events';
5
+ export type * from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AAEzB,mBAAmB,SAAS,CAAC"}