@builder6/rooms 0.10.7 → 0.11.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 (112) hide show
  1. package/dist/emails/UnreadMention.d.ts +9 -0
  2. package/dist/emails/UnreadMention.js +54 -0
  3. package/dist/emails/UnreadMention.js.map +1 -0
  4. package/dist/emails/UnreadReplies.d.ts +9 -0
  5. package/dist/emails/UnreadReplies.js +68 -0
  6. package/dist/emails/UnreadReplies.js.map +1 -0
  7. package/dist/emails/_components/comment.d.ts +1 -0
  8. package/dist/emails/_components/comment.js +32 -0
  9. package/dist/emails/_components/comment.js.map +1 -0
  10. package/dist/emails/_components/header.d.ts +2 -0
  11. package/dist/emails/_components/header.js +15 -0
  12. package/dist/emails/_components/header.js.map +1 -0
  13. package/dist/emails/_components/headline.d.ts +5 -0
  14. package/dist/emails/_components/headline.js +17 -0
  15. package/dist/emails/_components/headline.js.map +1 -0
  16. package/dist/emails/_components/layout.d.ts +5 -0
  17. package/dist/emails/_components/layout.js +24 -0
  18. package/dist/emails/_components/layout.js.map +1 -0
  19. package/dist/emails/_lib/types.d.ts +9 -0
  20. package/dist/emails/_lib/types.js +3 -0
  21. package/dist/emails/_lib/types.js.map +1 -0
  22. package/dist/emails/_styles/colors.d.ts +2 -0
  23. package/dist/emails/_styles/colors.js +7 -0
  24. package/dist/emails/_styles/colors.js.map +1 -0
  25. package/dist/emails/_utils/cn.d.ts +2 -0
  26. package/dist/emails/_utils/cn.js +10 -0
  27. package/dist/emails/_utils/cn.js.map +1 -0
  28. package/dist/emails/_utils/comments.d.ts +7 -0
  29. package/dist/emails/_utils/comments.js +29 -0
  30. package/dist/emails/_utils/comments.js.map +1 -0
  31. package/dist/emails/_utils/getProps.d.ts +1 -0
  32. package/dist/emails/_utils/getProps.js +11 -0
  33. package/dist/emails/_utils/getProps.js.map +1 -0
  34. package/dist/rooms/app.controller.d.ts +3 -1
  35. package/dist/rooms/app.controller.js +61 -46
  36. package/dist/rooms/app.controller.js.map +1 -1
  37. package/dist/rooms/emailNotification.service.d.ts +17 -0
  38. package/dist/rooms/emailNotification.service.js +113 -0
  39. package/dist/rooms/emailNotification.service.js.map +1 -0
  40. package/dist/rooms/emails/comment-body.d.ts +44 -0
  41. package/dist/rooms/emails/comment-body.js +138 -0
  42. package/dist/rooms/emails/comment-body.js.map +1 -0
  43. package/dist/rooms/emails/comment-with-body.d.ts +6 -0
  44. package/dist/rooms/emails/comment-with-body.js +17 -0
  45. package/dist/rooms/emails/comment-with-body.js.map +1 -0
  46. package/dist/rooms/emails/index.d.ts +4 -0
  47. package/dist/rooms/emails/index.js +7 -0
  48. package/dist/rooms/emails/index.js.map +1 -0
  49. package/dist/rooms/emails/lib/batch-users-resolver.d.ts +9 -0
  50. package/dist/rooms/emails/lib/batch-users-resolver.js +67 -0
  51. package/dist/rooms/emails/lib/batch-users-resolver.js.map +1 -0
  52. package/dist/rooms/emails/lib/css-properties.d.ts +3 -0
  53. package/dist/rooms/emails/lib/css-properties.js +96 -0
  54. package/dist/rooms/emails/lib/css-properties.js.map +1 -0
  55. package/dist/rooms/emails/lib/warning.d.ts +1 -0
  56. package/dist/rooms/emails/lib/warning.js +20 -0
  57. package/dist/rooms/emails/lib/warning.js.map +1 -0
  58. package/dist/rooms/emails/thread-notification.d.ts +90 -0
  59. package/dist/rooms/emails/thread-notification.js +297 -0
  60. package/dist/rooms/emails/thread-notification.js.map +1 -0
  61. package/dist/rooms/globals/augmentation.d.ts +0 -5
  62. package/dist/rooms/lib/utils.js +21 -10
  63. package/dist/rooms/lib/utils.js.map +1 -1
  64. package/dist/rooms/liveblocks.service.d.ts +16 -0
  65. package/dist/rooms/liveblocks.service.js +54 -0
  66. package/dist/rooms/liveblocks.service.js.map +1 -0
  67. package/dist/rooms/notifications.service.d.ts +4 -0
  68. package/dist/rooms/notifications.service.js +107 -80
  69. package/dist/rooms/notifications.service.js.map +1 -1
  70. package/dist/rooms/rooms.controller.d.ts +6 -4
  71. package/dist/rooms/rooms.controller.js +323 -244
  72. package/dist/rooms/rooms.controller.js.map +1 -1
  73. package/dist/rooms/rooms.gateway.js +132 -109
  74. package/dist/rooms/rooms.gateway.js.map +1 -1
  75. package/dist/rooms/rooms.guard.js +31 -19
  76. package/dist/rooms/rooms.guard.js.map +1 -1
  77. package/dist/rooms/rooms.module.js +12 -3
  78. package/dist/rooms/rooms.module.js.map +1 -1
  79. package/dist/rooms/rooms.moleculer.js +85 -66
  80. package/dist/rooms/rooms.moleculer.js.map +1 -1
  81. package/dist/rooms/rooms.service.d.ts +17 -4
  82. package/dist/rooms/rooms.service.js +408 -340
  83. package/dist/rooms/rooms.service.js.map +1 -1
  84. package/package.json +18 -6
  85. package/src/emails/UnreadMention.tsx +76 -0
  86. package/src/emails/UnreadReplies.tsx +106 -0
  87. package/src/emails/_components/comment.tsx +70 -0
  88. package/src/emails/_components/header.tsx +27 -0
  89. package/src/emails/_components/headline.tsx +20 -0
  90. package/src/emails/_components/layout.tsx +45 -0
  91. package/src/emails/_lib/types.ts +10 -0
  92. package/src/emails/_styles/colors.ts +7 -0
  93. package/src/emails/_utils/cn.ts +6 -0
  94. package/src/emails/_utils/comments.ts +61 -0
  95. package/src/emails/_utils/getProps.ts +7 -0
  96. package/src/rooms/app.controller.ts +7 -2
  97. package/src/rooms/emailNotification.service.tsx +152 -0
  98. package/src/rooms/emails/comment-body.tsx +342 -0
  99. package/src/rooms/emails/comment-with-body.ts +24 -0
  100. package/src/rooms/emails/index.ts +25 -0
  101. package/src/rooms/emails/lib/batch-users-resolver.ts +120 -0
  102. package/src/rooms/emails/lib/css-properties.ts +123 -0
  103. package/src/rooms/emails/lib/warning.ts +25 -0
  104. package/src/rooms/emails/thread-notification.tsx +583 -0
  105. package/src/rooms/globals/augmentation.ts +8 -8
  106. package/src/rooms/liveblocks.service.ts +25 -0
  107. package/src/rooms/notifications.service.ts +22 -10
  108. package/src/rooms/rooms.controller.ts +24 -5
  109. package/src/rooms/rooms.module.ts +11 -2
  110. package/src/rooms/rooms.service.ts +35 -20
  111. package/tsconfig.json +2 -0
  112. package/yarn-error.log +17218 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var EmailNotificationService_1;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.EmailNotificationService = void 0;
26
+ const common_1 = require("@nestjs/common");
27
+ const config_1 = require("@nestjs/config");
28
+ const emails_1 = require("./emails");
29
+ const React = require("react");
30
+ const render_1 = require("@react-email/render");
31
+ const email_1 = require("@builder6/email");
32
+ const UnreadReplies_1 = require("../emails/UnreadReplies");
33
+ const UnreadMention_1 = require("../emails/UnreadMention");
34
+ const rooms_service_1 = require("./rooms.service");
35
+ let EmailNotificationService = EmailNotificationService_1 = class EmailNotificationService {
36
+ constructor(roomsService, configService, emailService) {
37
+ this.roomsService = roomsService;
38
+ this.configService = configService;
39
+ this.emailService = emailService;
40
+ this.logger = new common_1.Logger(EmailNotificationService_1.name);
41
+ }
42
+ sendThreadNotificationEmail({ roomId, threadId, userId, fromUserId, inboxNotificationId, }) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const event = {
45
+ type: 'notification',
46
+ data: {
47
+ channel: 'email',
48
+ kind: 'thread',
49
+ projectId: 'my-project-id',
50
+ roomId,
51
+ userId,
52
+ threadId,
53
+ inboxNotificationId,
54
+ createdAt: new Date().toISOString(),
55
+ },
56
+ };
57
+ const emailData = yield (0, emails_1.prepareThreadNotificationEmailAsReact)(this.roomsService, event, {
58
+ resolveUsers: ({ userIds }) => __awaiter(this, void 0, void 0, function* () {
59
+ return yield this.roomsService.resolveUsers({ userIds });
60
+ }),
61
+ resolveRoomInfo: ({ roomId }) => __awaiter(this, void 0, void 0, function* () {
62
+ const rooms = yield this.roomsService.resolveRoomInfo({
63
+ roomIds: [roomId],
64
+ });
65
+ return rooms['0'];
66
+ }),
67
+ });
68
+ if (!emailData) {
69
+ return;
70
+ }
71
+ const company = {
72
+ name: this.configService.get('tenant.name'),
73
+ url: this.configService.get('host'),
74
+ logoUrl: this.configService.get('tenant.logo.url'),
75
+ };
76
+ const room = {
77
+ name: emailData.roomInfo.name,
78
+ url: emailData.roomInfo.url,
79
+ };
80
+ let email;
81
+ let subject;
82
+ switch (emailData.type) {
83
+ case 'unreadReplies': {
84
+ email = (React.createElement(UnreadReplies_1.default, { company: company, room: room, comments: emailData.comments }));
85
+ subject = `[${company.name}] You have ${emailData.comments.length} unread notifications in ${room.name}`;
86
+ break;
87
+ }
88
+ case 'unreadMention': {
89
+ email = (React.createElement(UnreadMention_1.default, { company: company, room: room, comment: emailData.comment }));
90
+ subject = `[${company.name}] You are mentioned in ${room.name}.`;
91
+ break;
92
+ }
93
+ }
94
+ const html = yield (0, render_1.render)(email);
95
+ yield this.emailService.sendMailToUser({
96
+ toUserId: userId,
97
+ fromUserId,
98
+ subject: subject,
99
+ html,
100
+ });
101
+ return html;
102
+ });
103
+ }
104
+ };
105
+ EmailNotificationService = EmailNotificationService_1 = __decorate([
106
+ (0, common_1.Injectable)(),
107
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => rooms_service_1.RoomsService))),
108
+ __metadata("design:paramtypes", [rooms_service_1.RoomsService,
109
+ config_1.ConfigService,
110
+ email_1.EmailService])
111
+ ], EmailNotificationService);
112
+ exports.EmailNotificationService = EmailNotificationService;
113
+ //# sourceMappingURL=emailNotification.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailNotification.service.js","sourceRoot":"","sources":["../../src/rooms/emailNotification.service.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAwE;AACxE,2CAA+C;AAE/C,qCAAiE;AACjE,+BAA+B;AAC/B,gDAA6C;AAC7C,2CAA+C;AAC/C,2DAAyD;AACzD,2DAAyD;AACzD,mDAA+C;AAGxC,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAGnC,YAEU,YAA0B,EAC1B,aAA4B,EAC5B,YAA0B;QAF1B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAc;QANnB,WAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAC;IAapE,CAAC;IAEK,2BAA2B,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAU,EACV,mBAAmB,GAOpB;;YACC,MAAM,KAAK,GAA4B;gBACrC,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE;oBACJ,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,eAAe;oBAC1B,MAAM;oBACN,MAAM;oBACN,QAAQ;oBACR,mBAAmB;oBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;aACF,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAA,8CAAqC,EAC3D,IAAI,CAAC,YAAmB,EACxB,KAAK,EACL;gBACE,YAAY,EAAE,CAAO,EAAE,OAAO,EAAE,EAAE,EAAE;oBAClC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAA;gBACD,eAAe,EAAE,CAAO,EAAE,MAAM,EAAE,EAAE,EAAE;oBACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;wBACpD,OAAO,EAAE,CAAC,MAAM,CAAC;qBAClB,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC,CAAA;aACF,CACF,CAAC;YACF,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO;aACR;YACD,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC3C,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;gBACnC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC;aACnD,CAAC;YACF,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;gBAC7B,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG;aAC5B,CAAC;YAEF,IAAI,KAAK,CAAC;YACV,IAAI,OAAO,CAAC;YA+BZ,QAAQ,SAAS,CAAC,IAAI,EAAE;gBAEtB,KAAK,eAAe,CAAC,CAAC;oBACpB,KAAK,GAAG,CACN,oBAAC,uBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAC5B,CACH,CAAC;oBACF,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,cAAc,SAAS,CAAC,QAAQ,CAAC,MAAM,4BAA4B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACzG,MAAM;iBACP;gBAED,KAAK,eAAe,CAAC,CAAC;oBACpB,KAAK,GAAG,CACN,oBAAC,uBAAkB,IACjB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,CAAC,OAAO,GAC1B,CACH,CAAC;oBACF,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,0BAA0B,IAAI,CAAC,IAAI,GAAG,CAAC;oBACjE,MAAM;iBACP;aACF;YAED,MAAM,IAAI,GAAG,MAAM,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC;YAEjC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;gBACrC,QAAQ,EAAE,MAAM;gBAChB,UAAU;gBACV,OAAO,EAAE,OAAO;gBAChB,IAAI;aACL,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;CACF,CAAA;AA3IY,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC,CAAC,CAAA;qCACjB,4BAAY;QACX,sBAAa;QACd,oBAAY;GAPzB,wBAAwB,CA2IpC;AA3IY,4DAAwB"}
@@ -0,0 +1,44 @@
1
+ import type { BaseUserMeta, CommentBody, CommentBodyLink, CommentBodyMention, CommentBodyText, DU, OptionalPromise, ResolveUsersArgs } from "@liveblocks/core";
2
+ import * as React from "react";
3
+ import type { CSSProperties } from "./lib/css-properties";
4
+ export type CommentBodyContainerComponentProps = {
5
+ children: React.ReactNode;
6
+ };
7
+ export type CommentBodyParagraphComponentProps = {
8
+ children: React.ReactNode;
9
+ };
10
+ export type CommentBodyTextComponentProps = {
11
+ element: CommentBodyText;
12
+ };
13
+ export type CommentBodyLinkComponentProps = {
14
+ element: CommentBodyLink;
15
+ href: string;
16
+ };
17
+ export type CommentBodyMentionComponentProps<U extends BaseUserMeta = DU> = {
18
+ element: CommentBodyMention;
19
+ user?: U["info"];
20
+ };
21
+ export type ConvertCommentBodyAsReactComponents<U extends BaseUserMeta = DU> = {
22
+ Container: React.ComponentType<CommentBodyContainerComponentProps>;
23
+ Paragraph: React.ComponentType<CommentBodyParagraphComponentProps>;
24
+ Text: React.ComponentType<CommentBodyTextComponentProps>;
25
+ Link: React.ComponentType<CommentBodyLinkComponentProps>;
26
+ Mention: React.ComponentType<CommentBodyMentionComponentProps<U>>;
27
+ };
28
+ export type ConvertCommentBodyAsReactOptions<U extends BaseUserMeta = DU> = {
29
+ components?: Partial<ConvertCommentBodyAsReactComponents<U>>;
30
+ resolveUsers?: (args: ResolveUsersArgs) => OptionalPromise<(U["info"] | undefined)[] | undefined>;
31
+ };
32
+ export declare function convertCommentBodyAsReact(body: CommentBody, options?: ConvertCommentBodyAsReactOptions<BaseUserMeta>): Promise<React.ReactNode>;
33
+ export type ConvertCommentBodyAsHtmlStyles = {
34
+ paragraph: CSSProperties;
35
+ strong: CSSProperties;
36
+ code: CSSProperties;
37
+ mention: CSSProperties;
38
+ link: CSSProperties;
39
+ };
40
+ export type ConvertCommentBodyAsHtmlOptions<U extends BaseUserMeta = DU> = {
41
+ styles?: Partial<ConvertCommentBodyAsHtmlStyles>;
42
+ resolveUsers?: (args: ResolveUsersArgs) => OptionalPromise<(U["info"] | undefined)[] | undefined>;
43
+ };
44
+ export declare function convertCommentBodyAsHtml(body: CommentBody, options?: ConvertCommentBodyAsHtmlOptions<BaseUserMeta>): Promise<string>;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.convertCommentBodyAsHtml = exports.convertCommentBodyAsReact = void 0;
13
+ const core_1 = require("@liveblocks/core");
14
+ const React = require("react");
15
+ const css_properties_1 = require("./lib/css-properties");
16
+ const baseComponents = {
17
+ Container: ({ children }) => React.createElement("div", null, children),
18
+ Paragraph: ({ children }) => React.createElement("p", null, children),
19
+ Text: ({ element }) => {
20
+ let children = element.text;
21
+ if (element.bold) {
22
+ children = React.createElement("strong", null, children);
23
+ }
24
+ if (element.italic) {
25
+ children = React.createElement("em", null, children);
26
+ }
27
+ if (element.strikethrough) {
28
+ children = React.createElement("s", null, children);
29
+ }
30
+ if (element.code) {
31
+ children = React.createElement("code", null, children);
32
+ }
33
+ return React.createElement("span", null, children);
34
+ },
35
+ Link: ({ element, href }) => {
36
+ var _a;
37
+ return (React.createElement("a", { href: href, target: "_blank", rel: "noopener noreferrer" }, (_a = element.text) !== null && _a !== void 0 ? _a : element.url));
38
+ },
39
+ Mention: ({ element, user }) => {
40
+ var _a;
41
+ return (React.createElement("span", { "data-mention": true },
42
+ "@", (_a = user === null || user === void 0 ? void 0 : user.name) !== null && _a !== void 0 ? _a : element.id));
43
+ },
44
+ };
45
+ function convertCommentBodyAsReact(body, options) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const Components = Object.assign(Object.assign({}, baseComponents), options === null || options === void 0 ? void 0 : options.components);
48
+ const resolvedUsers = yield (0, core_1.resolveUsersInCommentBody)(body, options === null || options === void 0 ? void 0 : options.resolveUsers);
49
+ const blocks = body.content.map((block, index) => {
50
+ switch (block.type) {
51
+ case "paragraph": {
52
+ const children = block.children.map((inline, inlineIndex) => {
53
+ var _a;
54
+ if ((0, core_1.isCommentBodyMention)(inline)) {
55
+ return inline.id ? (React.createElement(Components.Mention, { key: `lb-comment-body-mention-${inlineIndex}`, element: inline, user: resolvedUsers.get(inline.id) })) : null;
56
+ }
57
+ if ((0, core_1.isCommentBodyLink)(inline)) {
58
+ const href = (_a = (0, core_1.toAbsoluteUrl)(inline.url)) !== null && _a !== void 0 ? _a : inline.url;
59
+ return (React.createElement(Components.Link, { key: `lb-comment-body-link-${inlineIndex}`, element: inline, href: href }));
60
+ }
61
+ if ((0, core_1.isCommentBodyText)(inline)) {
62
+ return (React.createElement(Components.Text, { key: `lb-comment-body-text-${inlineIndex}`, element: inline }));
63
+ }
64
+ return null;
65
+ });
66
+ return (React.createElement(Components.Paragraph, { key: `lb-comment-body-paragraph-${index}` }, children));
67
+ }
68
+ default:
69
+ console.warn(`Unsupported comment body block type: "${JSON.stringify(block.type)}"`);
70
+ return null;
71
+ }
72
+ });
73
+ return (React.createElement(Components.Container, { key: "lb-comment-body-container" }, blocks));
74
+ });
75
+ }
76
+ exports.convertCommentBodyAsReact = convertCommentBodyAsReact;
77
+ const baseStyles = {
78
+ paragraph: {
79
+ fontSize: "14px",
80
+ },
81
+ strong: {
82
+ fontWeight: 500,
83
+ },
84
+ code: {
85
+ fontFamily: 'ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono", "Roboto Mono", "Oxygen Mono", "Ubuntu Mono", "Source Code Pro", "Fira Mono", "Droid Sans Mono", "Consolas", "Courier New", monospace',
86
+ backgroundColor: "rgba(0,0,0,0.05)",
87
+ border: "solid 1px rgba(0,0,0,0.1)",
88
+ borderRadius: "4px",
89
+ },
90
+ mention: {
91
+ color: "blue",
92
+ },
93
+ link: {
94
+ textDecoration: "underline",
95
+ },
96
+ };
97
+ function convertCommentBodyAsHtml(body, options) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ const styles = Object.assign(Object.assign({}, baseStyles), options === null || options === void 0 ? void 0 : options.styles);
100
+ const htmlBody = yield (0, core_1.stringifyCommentBody)(body, {
101
+ format: "html",
102
+ resolveUsers: options === null || options === void 0 ? void 0 : options.resolveUsers,
103
+ elements: {
104
+ paragraph: ({ children }) => children ? (0, core_1.html) `<p style="${(0, css_properties_1.toInlineCSSString)(styles.paragraph)}">${(0, core_1.htmlSafe)(children)}</p>` : children,
105
+ text: ({ element }) => {
106
+ let children = element.text;
107
+ if (!children) {
108
+ return children;
109
+ }
110
+ if (element.bold) {
111
+ children = (0, core_1.html) `<strong style="${(0, css_properties_1.toInlineCSSString)(styles.strong)}">${children}</strong>`;
112
+ }
113
+ if (element.italic) {
114
+ children = (0, core_1.html) `<em>${children}</em>`;
115
+ }
116
+ if (element.strikethrough) {
117
+ children = (0, core_1.html) `<s>${children}</s>`;
118
+ }
119
+ if (element.code) {
120
+ children = (0, core_1.html) `<code style="${(0, css_properties_1.toInlineCSSString)(styles.code)}">${children}</code>`;
121
+ }
122
+ return children;
123
+ },
124
+ link: ({ element, href }) => {
125
+ var _a;
126
+ return (0, core_1.html) `<a href="${href}" target="_blank" rel="noopener noreferrer" style="${(0, css_properties_1.toInlineCSSString)(styles.link)}">${(_a = element.text) !== null && _a !== void 0 ? _a : element.url}</a>`;
127
+ },
128
+ mention: ({ element, user }) => {
129
+ var _a;
130
+ return (0, core_1.html) `<span data-mention style="${(0, css_properties_1.toInlineCSSString)(styles.mention)}">@${(_a = user === null || user === void 0 ? void 0 : user.name) !== null && _a !== void 0 ? _a : element.id}</span>`;
131
+ },
132
+ },
133
+ });
134
+ return htmlBody;
135
+ });
136
+ }
137
+ exports.convertCommentBodyAsHtml = convertCommentBodyAsHtml;
138
+ //# sourceMappingURL=comment-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-body.js","sourceRoot":"","sources":["../../../src/rooms/emails/comment-body.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CommentBody, CommentData } from "@liveblocks/core";
2
+ export type CommentDataWithBody = Omit<CommentData, "body" | "deletedAt"> & {
3
+ body: CommentBody;
4
+ deletedAt?: never;
5
+ };
6
+ export declare function filterCommentsWithBody(comments: CommentData[]): CommentDataWithBody[];
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterCommentsWithBody = void 0;
4
+ const isCommentDataWithBody = (comment) => {
5
+ return comment.body !== undefined && comment.deletedAt === undefined;
6
+ };
7
+ function filterCommentsWithBody(comments) {
8
+ const commentsWithBody = [];
9
+ for (const comment of comments) {
10
+ if (isCommentDataWithBody(comment)) {
11
+ commentsWithBody.push(comment);
12
+ }
13
+ }
14
+ return commentsWithBody;
15
+ }
16
+ exports.filterCommentsWithBody = filterCommentsWithBody;
17
+ //# sourceMappingURL=comment-with-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-with-body.js","sourceRoot":"","sources":["../../../src/rooms/emails/comment-with-body.ts"],"names":[],"mappings":";;;AAOA,MAAM,qBAAqB,GAAG,CAC5B,OAAoB,EACY,EAAE;IAClC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACvE,CAAC,CAAC;AAEF,SAAgB,sBAAsB,CACpC,QAAuB;IAEvB,MAAM,gBAAgB,GAA0B,EAAE,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE;YAClC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;KACF;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAVD,wDAUC"}
@@ -0,0 +1,4 @@
1
+ export type { CommentBodyContainerComponentProps, CommentBodyLinkComponentProps, CommentBodyMentionComponentProps, CommentBodyParagraphComponentProps, CommentBodyTextComponentProps, ConvertCommentBodyAsHtmlStyles, ConvertCommentBodyAsReactComponents, } from "./comment-body";
2
+ export type { CommentEmailAsHtmlData, CommentEmailAsReactData, PrepareThreadNotificationEmailAsHtmlOptions, PrepareThreadNotificationEmailAsReactOptions, ResolveRoomInfoArgs, ThreadNotificationEmailDataAsHtml, ThreadNotificationEmailDataAsReact, } from "./thread-notification";
3
+ export { prepareThreadNotificationEmailAsHtml, prepareThreadNotificationEmailAsReact, } from "./thread-notification";
4
+ export type { ResolveUsersArgs } from "@liveblocks/core";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareThreadNotificationEmailAsReact = exports.prepareThreadNotificationEmailAsHtml = void 0;
4
+ var thread_notification_1 = require("./thread-notification");
5
+ Object.defineProperty(exports, "prepareThreadNotificationEmailAsHtml", { enumerable: true, get: function () { return thread_notification_1.prepareThreadNotificationEmailAsHtml; } });
6
+ Object.defineProperty(exports, "prepareThreadNotificationEmailAsReact", { enumerable: true, get: function () { return thread_notification_1.prepareThreadNotificationEmailAsReact; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rooms/emails/index.ts"],"names":[],"mappings":";;;AAoBA,6DAG+B;AAF7B,2IAAA,oCAAoC,OAAA;AACpC,4IAAA,qCAAqC,OAAA"}
@@ -0,0 +1,9 @@
1
+ import type { BaseUserMeta, DU, OptionalPromise, ResolveUsersArgs } from "@liveblocks/core";
2
+ export type CreateBatchUsersResolverReturnType<U extends BaseUserMeta> = {
3
+ resolveUsers: (args: ResolveUsersArgs) => Promise<(U["info"] | undefined)[] | undefined>;
4
+ resolve: () => Promise<void>;
5
+ };
6
+ export declare function createBatchUsersResolver<U extends BaseUserMeta = DU>({ resolveUsers, callerName, }: {
7
+ resolveUsers?: (args: ResolveUsersArgs) => OptionalPromise<(U["info"] | undefined)[] | undefined>;
8
+ callerName: string;
9
+ }): CreateBatchUsersResolverReturnType<U>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createBatchUsersResolver = void 0;
13
+ const core_1 = require("@liveblocks/core");
14
+ const warning_1 = require("./warning");
15
+ class BatchUsersResolver {
16
+ constructor(resolveUsers) {
17
+ this.resolveUsers = (args) => __awaiter(this, void 0, void 0, function* () {
18
+ if (this.isResolved) {
19
+ this.warnAsAlreadyResolved();
20
+ return undefined;
21
+ }
22
+ for (const userId of args.userIds) {
23
+ this.usersById.set(userId, undefined);
24
+ }
25
+ yield this.resolvePromise;
26
+ return args.userIds.map((userId) => this.usersById.get(userId));
27
+ });
28
+ const { promise, resolve } = (0, core_1.Promise_withResolvers)();
29
+ this.isResolved = false;
30
+ this.markAsResolved = resolve;
31
+ this.resolvePromise = promise;
32
+ this.primeResolveUsersFn = resolveUsers;
33
+ this.usersById = new Map();
34
+ this.warnAsAlreadyResolved = (0, warning_1.createDevelopmentWarning)(true, "Batch users resolver promise already resolved. It can only resolve once.");
35
+ }
36
+ resolve() {
37
+ var _a;
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ if (this.isResolved) {
40
+ this.warnAsAlreadyResolved();
41
+ return;
42
+ }
43
+ const userIds = Array.from(this.usersById.keys());
44
+ const users = yield ((_a = this.primeResolveUsersFn) === null || _a === void 0 ? void 0 : _a.call(this, { userIds }));
45
+ for (const [index, userId] of userIds.entries()) {
46
+ const user = users === null || users === void 0 ? void 0 : users[index];
47
+ this.usersById.set(userId, user);
48
+ }
49
+ this.isResolved = true;
50
+ this.markAsResolved();
51
+ });
52
+ }
53
+ }
54
+ function createBatchUsersResolver({ resolveUsers, callerName, }) {
55
+ const warnIfNoResolveUsers = (0, warning_1.createDevelopmentWarning)(() => !resolveUsers, `Set "resolveUsers" option in "${callerName}" to specify users info`);
56
+ const batchUsersResolver = new BatchUsersResolver(resolveUsers);
57
+ const resolve = () => __awaiter(this, void 0, void 0, function* () {
58
+ warnIfNoResolveUsers();
59
+ yield batchUsersResolver.resolve();
60
+ });
61
+ return {
62
+ resolveUsers: batchUsersResolver.resolveUsers,
63
+ resolve,
64
+ };
65
+ }
66
+ exports.createBatchUsersResolver = createBatchUsersResolver;
67
+ //# sourceMappingURL=batch-users-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-users-resolver.js","sourceRoot":"","sources":["../../../../src/rooms/emails/lib/batch-users-resolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,2CAAyD;AAEzD,uCAAqD;AAarD,MAAM,kBAAkB;IAUtB,YAAY,YAAuD;QAgBnE,iBAAY,GAAG,CACb,IAAsB,EAC0B,EAAE;YAClD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO,SAAS,CAAC;aAClB;YAGD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACvC;YAGD,MAAM,IAAI,CAAC,cAAc,CAAC;YAI1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC,CAAA,CAAC;QAlCA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAA,4BAAqB,GAAQ,CAAC;QAE3D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAE3B,IAAI,CAAC,qBAAqB,GAAG,IAAA,kCAAwB,EACnD,IAAI,EACJ,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IAuBK,OAAO;;;YACX,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO;aACR;YAGD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAA,MAAA,IAAI,CAAC,mBAAmB,qDAAG,EAAE,OAAO,EAAE,CAAC,CAAA,CAAC;YAE5D,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;gBAC/C,MAAM,IAAI,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aAClC;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;;KACvB;CACF;AASD,SAAgB,wBAAwB,CAA8B,EACpE,YAAY,EACZ,UAAU,GAMX;IACC,MAAM,oBAAoB,GAAG,IAAA,kCAAwB,EACnD,GAAG,EAAE,CAAC,CAAC,YAAY,EACnB,iCAAiC,UAAU,yBAAyB,CACrE,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAEhE,MAAM,OAAO,GAAG,GAAwB,EAAE;QACxC,oBAAoB,EAAE,CAAC;QACvB,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC,CAAA,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,kBAAkB,CAAC,YAAY;QAC7C,OAAO;KACC,CAAC;AACb,CAAC;AAxBD,4DAwBC"}
@@ -0,0 +1,3 @@
1
+ import type { Properties } from "csstype";
2
+ export type CSSProperties = Properties;
3
+ export declare function toInlineCSSString(styles: CSSProperties): string;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toInlineCSSString = void 0;
4
+ const VENDORS_PREFIXES = new RegExp(/^(webkit|moz|ms|o)-/);
5
+ const UNITLESS_PROPERTIES = [
6
+ "animationIterationCount",
7
+ "aspectRatio",
8
+ "borderImageOutset",
9
+ "borderImageSlice",
10
+ "borderImageWidth",
11
+ "boxFlex",
12
+ "boxFlexGroup",
13
+ "boxOrdinalGroup",
14
+ "columnCount",
15
+ "columns",
16
+ "flex",
17
+ "flexGrow",
18
+ "flexPositive",
19
+ "flexShrink",
20
+ "flexNegative",
21
+ "flexOrder",
22
+ "gridArea",
23
+ "gridRow",
24
+ "gridRowEnd",
25
+ "gridRowSpan",
26
+ "gridRowStart",
27
+ "gridColumn",
28
+ "gridColumnEnd",
29
+ "gridColumnSpan",
30
+ "gridColumnStart",
31
+ "fontWeight",
32
+ "lineClamp",
33
+ "lineHeight",
34
+ "opacity",
35
+ "order",
36
+ "orphans",
37
+ "scale",
38
+ "tabSize",
39
+ "widows",
40
+ "zIndex",
41
+ "zoom",
42
+ "fillOpacity",
43
+ "floodOpacity",
44
+ "stopOpacity",
45
+ "strokeDasharray",
46
+ "strokeDashoffset",
47
+ "strokeMiterlimit",
48
+ "strokeOpacity",
49
+ "strokeWidth",
50
+ "MozAnimationIterationCount",
51
+ "MozBoxFlex",
52
+ "MozBoxFlexGroup",
53
+ "MozLineClamp",
54
+ "msAnimationIterationCount",
55
+ "msFlex",
56
+ "msZoom",
57
+ "msFlexPositive",
58
+ "msGridColumns",
59
+ "msGridRows",
60
+ "WebkitAnimationIterationCount",
61
+ "WebkitBoxFlex",
62
+ "WebKitBoxFlexGroup",
63
+ "WebkitBoxOrdinalGroup",
64
+ "WebkitColumnCount",
65
+ "WebkitColumns",
66
+ "WebkitFlex",
67
+ "WebkitFlexGrow",
68
+ "WebkitFlexPositive",
69
+ "WebkitFlexShrink",
70
+ "WebkitLineClamp",
71
+ ];
72
+ function toInlineCSSString(styles) {
73
+ const entries = Object.entries(styles);
74
+ const inline = entries
75
+ .map(([key, value]) => {
76
+ if (value === null ||
77
+ typeof value === "boolean" ||
78
+ value === "" ||
79
+ typeof value === "undefined") {
80
+ return "";
81
+ }
82
+ let property = key.replace(/([A-Z])/g, "-$1").toLowerCase();
83
+ if (VENDORS_PREFIXES.test(property)) {
84
+ property = `-${property}`;
85
+ }
86
+ if (typeof value === "number" && !UNITLESS_PROPERTIES.includes(key)) {
87
+ return `${property}:${value}px;`;
88
+ }
89
+ return `${property}:${String(value).trim()};`;
90
+ })
91
+ .filter(Boolean)
92
+ .join("");
93
+ return inline;
94
+ }
95
+ exports.toInlineCSSString = toInlineCSSString;
96
+ //# sourceMappingURL=css-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-properties.js","sourceRoot":"","sources":["../../../../src/rooms/emails/lib/css-properties.ts"],"names":[],"mappings":";;;AAYA,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAM3D,MAAM,mBAAmB,GAAG;IAC1B,yBAAyB;IACzB,aAAa;IACb,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,SAAS;IACT,cAAc;IACd,iBAAiB;IACjB,aAAa;IACb,SAAS;IACT,MAAM;IACN,UAAU;IACV,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;IACX,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,cAAc;IACd,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,SAAS;IACT,OAAO;IACP,SAAS;IACT,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,aAAa;IACb,cAAc;IACd,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,aAAa;IACb,4BAA4B;IAC5B,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,2BAA2B;IAC3B,QAAQ;IACR,QAAQ;IACR,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,+BAA+B;IAC/B,eAAe;IACf,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,gBAAgB;IAChB,oBAAoB;IACpB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC;AAKF,SAAgB,iBAAiB,CAAC,MAAqB;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAiB,EAAE;QAEnC,IACE,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,SAAS;YAC1B,KAAK,KAAK,EAAE;YACZ,OAAO,KAAK,KAAK,WAAW,EAC5B;YACA,OAAO,EAAE,CAAC;SACX;QAGD,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAG5D,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACnC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;SAC3B;QAGD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnE,OAAO,GAAG,QAAQ,IAAI,KAAK,KAAK,CAAC;SAClC;QAED,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC;IAChD,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,MAAM,CAAC;AAChB,CAAC;AAjCD,8CAiCC"}
@@ -0,0 +1 @@
1
+ export declare const createDevelopmentWarning: (condition: boolean | (() => boolean), message?: any, ...optionalParams: any[]) => () => void;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDevelopmentWarning = void 0;
4
+ const createDevelopmentWarning = (condition, ...args) => {
5
+ let hasWarned = false;
6
+ if (process.env.NODE_ENV !== "production") {
7
+ return () => {
8
+ if (!hasWarned &&
9
+ (typeof condition === "function" ? condition() : condition)) {
10
+ console.warn(...args);
11
+ hasWarned = true;
12
+ }
13
+ };
14
+ }
15
+ else {
16
+ return () => { };
17
+ }
18
+ };
19
+ exports.createDevelopmentWarning = createDevelopmentWarning;
20
+ //# sourceMappingURL=warning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning.js","sourceRoot":"","sources":["../../../../src/rooms/emails/lib/warning.ts"],"names":[],"mappings":";;;AAIO,MAAM,wBAAwB,GAAG,CACtC,SAAoC,EACpC,GAAG,IAAqC,EACxC,EAAE;IACF,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,OAAO,GAAG,EAAE;YACV,IACE,CAAC,SAAS;gBACV,CAAC,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAC3D;gBACA,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAEtB,SAAS,GAAG,IAAI,CAAC;aAClB;QACH,CAAC,CAAC;KACH;SAAM;QACL,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;KACjB;AACH,CAAC,CAAC;AApBW,QAAA,wBAAwB,4BAoBnC"}