@things-factory/announcement 10.1.249 → 10.1.254

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.
@@ -0,0 +1,55 @@
1
+ import { EntityManager } from 'typeorm';
2
+ import { Announcement, AnnouncementImportance, AnnouncementReceipt } from './announcement';
3
+ import { ANNOUNCEMENT_CATEGORIES } from './announcement-rules';
4
+ export interface AnnouncementTrigger {
5
+ /** `compliance.regulation-adopted` - the module's name, a dot, the fact. */
6
+ name: string;
7
+ description: string;
8
+ }
9
+ export interface AnnouncementTriggerRule {
10
+ category?: (typeof ANNOUNCEMENT_CATEGORIES)[number];
11
+ importance?: AnnouncementImportance | 'NORMAL' | 'IMPORTANT' | 'URGENT';
12
+ requiresAcknowledgement?: boolean;
13
+ popup?: boolean;
14
+ sendEmail?: boolean;
15
+ /** Who reads it when the trigger names nobody: the whole domain, or nobody (the trigger must name them). */
16
+ audience?: 'DOMAIN' | 'GIVEN';
17
+ /** Out at once; otherwise written as a draft for its writer to look over and send (ADR-0187 정한 것 2). */
18
+ publish?: boolean;
19
+ }
20
+ export interface AnnouncementOfTrigger {
21
+ trigger: string;
22
+ sourceKind: string;
23
+ sourceId: string;
24
+ title: string;
25
+ body?: string;
26
+ links?: {
27
+ label: string;
28
+ url: string;
29
+ }[];
30
+ audiences?: {
31
+ scope: 'DOMAIN' | 'DEPARTMENT' | 'ROLE' | 'USER';
32
+ targetId: string;
33
+ targetName?: string;
34
+ }[];
35
+ /** The day by which the readers are asked to acknowledge it, where the rule asks for that. */
36
+ acknowledgeBy?: Date | null;
37
+ }
38
+ /** What a module calls at load to declare a trigger of its own. */
39
+ export declare function registerAnnouncementTrigger(trigger: AnnouncementTrigger): void;
40
+ /** What an application calls at boot: how announcements of a trigger go out. */
41
+ export declare function configureAnnouncementTrigger(name: string, rule: AnnouncementTriggerRule): void;
42
+ export declare function announcementTriggers(): (AnnouncementTrigger & {
43
+ rule?: AnnouncementTriggerRule;
44
+ })[];
45
+ /**
46
+ * Writes the announcement of a trigger in the request's transaction, its writer the request's person. Answers it, or
47
+ * nothing where the application set no rule for the trigger.
48
+ */
49
+ export declare function announce(context: any, of: AnnouncementOfTrigger): Promise<Announcement | null>;
50
+ /** The announcements of a record, newest first - drafts too, the record's keepers read where it stands. */
51
+ export declare function announcementsOfSource(domain: {
52
+ id: string;
53
+ }, sourceKind: string, sourceIds: string[], tx?: EntityManager): Promise<Announcement[]>;
54
+ /** A person's readings of announcements, by announcement. */
55
+ export declare function receiptsOf(announcementIds: string[], userId: string, tx?: EntityManager): Promise<Map<string, AnnouncementReceipt>>;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerAnnouncementTrigger = registerAnnouncementTrigger;
4
+ exports.configureAnnouncementTrigger = configureAnnouncementTrigger;
5
+ exports.announcementTriggers = announcementTriggers;
6
+ exports.announce = announce;
7
+ exports.announcementsOfSource = announcementsOfSource;
8
+ exports.receiptsOf = receiptsOf;
9
+ /*
10
+ * 계기 (ADR-0163 decision 7, the least of it) - a module tells of a fact of its own as an announcement: a company rule
11
+ * adopted, a training scheduled. The module names the trigger and gives the words and the record; the application says,
12
+ * once at boot, how an announcement of that trigger goes out (its kind, its weight, who reads it, draft or out at once).
13
+ * A trigger with no rule writes nothing - an application that has not decided tells nobody.
14
+ *
15
+ * The announcement keeps its trigger and record (`trigger`, `sourceKind`, `sourceId`), so the record finds the
16
+ * announcements of it and their readings - the reading is kept here once, never again by the module.
17
+ */
18
+ const typeorm_1 = require("typeorm");
19
+ const env_1 = require("@things-factory/env");
20
+ const shell_1 = require("@things-factory/shell");
21
+ const announcement_1 = require("./announcement");
22
+ const announcement_rules_1 = require("./announcement-rules");
23
+ const announcement_service_1 = require("./announcement-service");
24
+ const TRIGGERS = new Map();
25
+ const RULES = new Map();
26
+ /** What a module calls at load to declare a trigger of its own. */
27
+ function registerAnnouncementTrigger(trigger) {
28
+ TRIGGERS.set(trigger.name, trigger);
29
+ }
30
+ /** What an application calls at boot: how announcements of a trigger go out. */
31
+ function configureAnnouncementTrigger(name, rule) {
32
+ RULES.set(name, rule);
33
+ }
34
+ function announcementTriggers() {
35
+ return [...TRIGGERS.values()].map(one => ({ ...one, rule: RULES.get(one.name) }));
36
+ }
37
+ /**
38
+ * Writes the announcement of a trigger in the request's transaction, its writer the request's person. Answers it, or
39
+ * nothing where the application set no rule for the trigger.
40
+ */
41
+ async function announce(context, of) {
42
+ const { domain, user, tx } = context.state;
43
+ if (!TRIGGERS.has(of.trigger))
44
+ throw new Error(`announcement trigger '${of.trigger}' is not registered`);
45
+ const rule = RULES.get(of.trigger);
46
+ if (!rule) {
47
+ env_1.logger.info(`[Announcement] ${domain?.subdomain}: no rule for '${of.trigger}' - nothing written`);
48
+ return null;
49
+ }
50
+ const importance = rule.importance ?? announcement_1.AnnouncementImportance.NORMAL;
51
+ const requiresAcknowledgement = !!rule.requiresAcknowledgement;
52
+ const repository = (0, shell_1.getRepository)(announcement_1.Announcement, tx);
53
+ const saved = await repository.save({
54
+ domain,
55
+ title: of.title.trim().slice(0, 200),
56
+ body: of.body ?? null,
57
+ category: rule.category ?? 'GENERAL',
58
+ importance,
59
+ pinned: false,
60
+ rank: (0, announcement_rules_1.rankOf)({ pinned: false, importance }),
61
+ requiresAcknowledgement,
62
+ acknowledgeBy: requiresAcknowledgement ? (of.acknowledgeBy ?? null) : null,
63
+ popup: !!rule.popup,
64
+ sendEmail: !!rule.sendEmail,
65
+ links: (of.links ?? []).slice(0, 10),
66
+ trigger: of.trigger,
67
+ sourceKind: of.sourceKind,
68
+ sourceId: of.sourceId,
69
+ status: announcement_1.AnnouncementStatus.DRAFT,
70
+ version: 1,
71
+ creator: user,
72
+ updater: user
73
+ });
74
+ const audiences = of.audiences?.length ? of.audiences : rule.audience === 'GIVEN' ? [] : [{ scope: 'DOMAIN', targetId: domain.id, targetName: domain.name }];
75
+ for (const target of audiences)
76
+ await (0, shell_1.getRepository)(announcement_1.AnnouncementAudience, tx).save({ domain, announcement: { id: saved.id }, scope: target.scope, targetId: target.targetId, targetName: target.targetName?.slice(0, 100), creator: user, updater: user });
77
+ if (!rule.publish || !audiences.length)
78
+ return saved;
79
+ const receivers = await (0, announcement_service_1.sendOut)(saved, domain, user, tx);
80
+ const fresh = (await repository.findOneBy({ id: saved.id }));
81
+ await (0, announcement_service_1.tellWhenCommitted)(context, fresh, 'published', receivers, true);
82
+ return fresh;
83
+ }
84
+ /** The announcements of a record, newest first - drafts too, the record's keepers read where it stands. */
85
+ async function announcementsOfSource(domain, sourceKind, sourceIds, tx) {
86
+ if (!sourceIds.length)
87
+ return [];
88
+ return await (0, shell_1.getRepository)(announcement_1.Announcement, tx).find({ where: { domain: { id: domain.id }, sourceKind, sourceId: (0, typeorm_1.In)(sourceIds) }, order: { createdAt: 'DESC' } });
89
+ }
90
+ /** A person's readings of announcements, by announcement. */
91
+ async function receiptsOf(announcementIds, userId, tx) {
92
+ if (!announcementIds.length)
93
+ return new Map();
94
+ const rows = await (0, shell_1.getRepository)(announcement_1.AnnouncementReceipt, tx).find({ where: { announcement: { id: (0, typeorm_1.In)(announcementIds) }, user: { id: userId } } });
95
+ return new Map(rows.map(one => [one.announcementId, one]));
96
+ }
97
+ //# sourceMappingURL=announcement-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"announcement-trigger.js","sourceRoot":"","sources":["../../../server/service/announcement/announcement-trigger.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * 계기 (ADR-0163 decision 7, the least of it) - a module tells of a fact of its own as an announcement: a company rule\n * adopted, a training scheduled. The module names the trigger and gives the words and the record; the application says,\n * once at boot, how an announcement of that trigger goes out (its kind, its weight, who reads it, draft or out at once).\n * A trigger with no rule writes nothing - an application that has not decided tells nobody.\n *\n * The announcement keeps its trigger and record (`trigger`, `sourceKind`, `sourceId`), so the record finds the\n * announcements of it and their readings - the reading is kept here once, never again by the module.\n */\nimport { EntityManager, In } from 'typeorm'\n\nimport { logger } from '@things-factory/env'\nimport { getRepository } from '@things-factory/shell'\n\nimport { Announcement, AnnouncementAudience, AnnouncementImportance, AnnouncementReceipt, AnnouncementStatus } from './announcement'\nimport { ANNOUNCEMENT_CATEGORIES, rankOf } from './announcement-rules'\nimport { sendOut, tellWhenCommitted } from './announcement-service'\n\nexport interface AnnouncementTrigger {\n /** `compliance.regulation-adopted` - the module's name, a dot, the fact. */\n name: string\n description: string\n}\n\nexport interface AnnouncementTriggerRule {\n category?: (typeof ANNOUNCEMENT_CATEGORIES)[number]\n importance?: AnnouncementImportance | 'NORMAL' | 'IMPORTANT' | 'URGENT'\n requiresAcknowledgement?: boolean\n popup?: boolean\n sendEmail?: boolean\n /** Who reads it when the trigger names nobody: the whole domain, or nobody (the trigger must name them). */\n audience?: 'DOMAIN' | 'GIVEN'\n /** Out at once; otherwise written as a draft for its writer to look over and send (ADR-0187 정한 것 2). */\n publish?: boolean\n}\n\nexport interface AnnouncementOfTrigger {\n trigger: string\n sourceKind: string\n sourceId: string\n title: string\n body?: string\n links?: { label: string; url: string }[]\n audiences?: { scope: 'DOMAIN' | 'DEPARTMENT' | 'ROLE' | 'USER'; targetId: string; targetName?: string }[]\n /** The day by which the readers are asked to acknowledge it, where the rule asks for that. */\n acknowledgeBy?: Date | null\n}\n\nconst TRIGGERS = new Map<string, AnnouncementTrigger>()\nconst RULES = new Map<string, AnnouncementTriggerRule>()\n\n/** What a module calls at load to declare a trigger of its own. */\nexport function registerAnnouncementTrigger(trigger: AnnouncementTrigger): void {\n TRIGGERS.set(trigger.name, trigger)\n}\n\n/** What an application calls at boot: how announcements of a trigger go out. */\nexport function configureAnnouncementTrigger(name: string, rule: AnnouncementTriggerRule): void {\n RULES.set(name, rule)\n}\n\nexport function announcementTriggers(): (AnnouncementTrigger & { rule?: AnnouncementTriggerRule })[] {\n return [...TRIGGERS.values()].map(one => ({ ...one, rule: RULES.get(one.name) }))\n}\n\n/**\n * Writes the announcement of a trigger in the request's transaction, its writer the request's person. Answers it, or\n * nothing where the application set no rule for the trigger.\n */\nexport async function announce(context: any, of: AnnouncementOfTrigger): Promise<Announcement | null> {\n const { domain, user, tx } = context.state as { domain: any; user: any; tx: EntityManager }\n if (!TRIGGERS.has(of.trigger)) throw new Error(`announcement trigger '${of.trigger}' is not registered`)\n const rule = RULES.get(of.trigger)\n if (!rule) {\n logger.info(`[Announcement] ${domain?.subdomain}: no rule for '${of.trigger}' - nothing written`)\n return null\n }\n const importance = (rule.importance as AnnouncementImportance) ?? AnnouncementImportance.NORMAL\n const requiresAcknowledgement = !!rule.requiresAcknowledgement\n const repository = getRepository(Announcement, tx)\n const saved = await repository.save({\n domain,\n title: of.title.trim().slice(0, 200),\n body: of.body ?? null,\n category: rule.category ?? 'GENERAL',\n importance,\n pinned: false,\n rank: rankOf({ pinned: false, importance }),\n requiresAcknowledgement,\n acknowledgeBy: requiresAcknowledgement ? (of.acknowledgeBy ?? null) : null,\n popup: !!rule.popup,\n sendEmail: !!rule.sendEmail,\n links: (of.links ?? []).slice(0, 10),\n trigger: of.trigger,\n sourceKind: of.sourceKind,\n sourceId: of.sourceId,\n status: AnnouncementStatus.DRAFT,\n version: 1,\n creator: user,\n updater: user\n } as any)\n const audiences = of.audiences?.length ? of.audiences : rule.audience === 'GIVEN' ? [] : [{ scope: 'DOMAIN' as const, targetId: domain.id, targetName: domain.name }]\n for (const target of audiences)\n await getRepository(AnnouncementAudience, tx).save({ domain, announcement: { id: saved.id }, scope: target.scope, targetId: target.targetId, targetName: target.targetName?.slice(0, 100), creator: user, updater: user } as any)\n if (!rule.publish || !audiences.length) return saved\n const receivers = await sendOut(saved, domain, user, tx)\n const fresh = (await repository.findOneBy({ id: saved.id }))!\n await tellWhenCommitted(context, fresh, 'published', receivers, true)\n return fresh\n}\n\n/** The announcements of a record, newest first - drafts too, the record's keepers read where it stands. */\nexport async function announcementsOfSource(domain: { id: string }, sourceKind: string, sourceIds: string[], tx?: EntityManager): Promise<Announcement[]> {\n if (!sourceIds.length) return []\n return await getRepository(Announcement, tx).find({ where: { domain: { id: domain.id }, sourceKind, sourceId: In(sourceIds) } as any, order: { createdAt: 'DESC' } as any })\n}\n\n/** A person's readings of announcements, by announcement. */\nexport async function receiptsOf(announcementIds: string[], userId: string, tx?: EntityManager): Promise<Map<string, AnnouncementReceipt>> {\n if (!announcementIds.length) return new Map()\n const rows = await getRepository(AnnouncementReceipt, tx).find({ where: { announcement: { id: In(announcementIds) }, user: { id: userId } } as any })\n return new Map(rows.map(one => [one.announcementId!, one]))\n}\n"]}
@@ -52,6 +52,9 @@ export declare class Announcement {
52
52
  label: string;
53
53
  url: string;
54
54
  }[];
55
+ trigger?: string;
56
+ sourceKind?: string;
57
+ sourceId?: string;
55
58
  version: number;
56
59
  publishedAt?: Date;
57
60
  publisher?: User;
@@ -128,6 +128,21 @@ tslib_1.__decorate([
128
128
  (0, type_graphql_1.Field)(type => graphql_scalars_1.GraphQLJSON, { nullable: true, description: 'Screens it points to - [{ label, url }], a screen of the application or an https address.' }),
129
129
  tslib_1.__metadata("design:type", Array)
130
130
  ], Announcement.prototype, "links", void 0);
131
+ tslib_1.__decorate([
132
+ (0, typeorm_1.Column)({ nullable: true }),
133
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The trigger that wrote it (ADR-0163 decision 7) - `compliance.regulation-adopted`; empty for one a person wrote.' }),
134
+ tslib_1.__metadata("design:type", String)
135
+ ], Announcement.prototype, "trigger", void 0);
136
+ tslib_1.__decorate([
137
+ (0, typeorm_1.Column)({ nullable: true }),
138
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The kind of record it tells of - `RegulationVersion`; set by its trigger.' }),
139
+ tslib_1.__metadata("design:type", String)
140
+ ], Announcement.prototype, "sourceKind", void 0);
141
+ tslib_1.__decorate([
142
+ (0, typeorm_1.Column)({ nullable: true }),
143
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The record it tells of; set by its trigger.' }),
144
+ tslib_1.__metadata("design:type", String)
145
+ ], Announcement.prototype, "sourceId", void 0);
131
146
  tslib_1.__decorate([
132
147
  (0, typeorm_1.Column)('int', { default: 1 }),
133
148
  (0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The version - one more each time it is changed after it was published.' }),
@@ -198,6 +213,7 @@ tslib_1.__decorate([
198
213
  exports.Announcement = Announcement = tslib_1.__decorate([
199
214
  (0, typeorm_1.Entity)(),
200
215
  (0, typeorm_1.Index)('ix_announcement_0', (one) => [one.domain, one.status, one.startsAt]),
216
+ (0, typeorm_1.Index)('ix_announcement_1', (one) => [one.domain, one.sourceKind, one.sourceId]),
201
217
  (0, type_graphql_1.ObjectType)({ description: 'An announcement of a domain - written once, addressed to an audience, read and acknowledged by each of its people.' })
202
218
  ], Announcement);
203
219
  let AnnouncementAudience = class AnnouncementAudience {
@@ -1 +1 @@
1
- {"version":3,"file":"announcement.js","sourceRoot":"","sources":["../../../server/service/announcement/announcement.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The tables of announcements (ADR-0163 decisions 1-4): an announcement, whom it is addressed to, each person's reading\n * of it, and the versions it went through after it was published. Whom it reaches and who read it are kept here -\n * the inbox, web push and the popup only tell of it.\n */\nimport { Column, CreateDateColumn, DeleteDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\nimport { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport { GraphQLJSON } from 'graphql-scalars'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/** Where an announcement stands. An announcement past its end is still PUBLISHED - it is a past one, read from the list of past ones. */\nexport enum AnnouncementStatus {\n /** Being written - only its writer sees it. */\n DRAFT = 'DRAFT',\n /** Published to start later - published and told when its start comes. */\n SCHEDULED = 'SCHEDULED',\n /** Out to its audience. */\n PUBLISHED = 'PUBLISHED',\n /** Taken back, with the reason - no longer shown to its audience. */\n WITHDRAWN = 'WITHDRAWN'\n}\n\nregisterEnumType(AnnouncementStatus, { name: 'AnnouncementStatus', description: 'Where an announcement stands: draft, scheduled, published or withdrawn.' })\n\n/** How much an announcement asks of the reader's attention - the list puts the urgent and important ones first. */\nexport enum AnnouncementImportance {\n NORMAL = 'NORMAL',\n IMPORTANT = 'IMPORTANT',\n URGENT = 'URGENT'\n}\n\nregisterEnumType(AnnouncementImportance, { name: 'AnnouncementImportance', description: 'How much an announcement asks of the reader: normal, important or urgent.' })\n\n@Entity()\n@Index('ix_announcement_0', (one: Announcement) => [one.domain, one.status, one.startsAt])\n@ObjectType({ description: 'An announcement of a domain - written once, addressed to an audience, read and acknowledged by each of its people.' })\nexport class Announcement {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Announcement id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain the announcement is in.' })\n domain?: Domain\n\n @RelationId((one: Announcement) => one.domain)\n domainId?: string\n\n @Column()\n @Field({ description: 'The title.' })\n title: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The body, in Markdown.' })\n body?: string\n\n @Column({ default: 'GENERAL' })\n @Field({ description: 'The kind of announcement - one of the codes this module declares.' })\n category: string\n\n @Column({ default: AnnouncementImportance.NORMAL })\n @Field(type => AnnouncementImportance, { description: 'Normal, important or urgent.' })\n importance: AnnouncementImportance\n\n @Column({ default: AnnouncementStatus.DRAFT })\n @Field(type => AnnouncementStatus, { description: 'Draft, scheduled, published or withdrawn.' })\n status: AnnouncementStatus\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it starts to be shown - empty publishes it at once.' })\n startsAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it stops being a current one - empty keeps it current.' })\n endsAt?: Date\n\n @Column({ default: false })\n @Field({ description: 'Kept on top of the list while it is current.' })\n pinned: boolean\n\n @Column('int', { default: 12 })\n @Field(type => Int, { description: \"Its place in the readers' list - pinned first, then urgent, important and normal (announcement-rules rankOf).\" })\n rank: number\n\n @Column({ default: false })\n @Field({ description: 'Each reader is asked to acknowledge it, apart from reading it.' })\n requiresAcknowledgement: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The day by which the readers are asked to acknowledge it.' })\n acknowledgeBy?: Date\n\n @Column({ default: false })\n @Field({ description: 'Shown in a popup to its readers - once, or until acknowledged when it asks for that.' })\n popup: boolean\n\n @Column({ default: false })\n @Field({ description: 'Sent by mail too - where the domain has turned mail on (notification Notice::email).' })\n sendEmail: boolean\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, {\n nullable: true,\n description: 'Each time its people were told - [{ at, kind: published | changed | reminder, receivers, email: { sent, failed }, teams: { sent, failed } }], the newest last.'\n })\n deliveries?: { at: string; kind: string; receivers: number; email: { sent: number; failed: number }; teams: { sent: number; failed: number }; failed?: boolean }[]\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, { nullable: true, description: 'Screens it points to - [{ label, url }], a screen of the application or an https address.' })\n links?: { label: string; url: string }[]\n\n @Column('int', { default: 1 })\n @Field(type => Int, { description: 'The version - one more each time it is changed after it was published.' })\n version: number\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it went out to its audience.' })\n publishedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who published it.' })\n publisher?: User\n\n @RelationId((one: Announcement) => one.publisher)\n publisherId?: string\n\n @Column('int', { nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many people it was addressed to - counted when it went out, and again when its audience changed.' })\n audienceSize?: number\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it was withdrawn.' })\n withdrawnAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Why it was withdrawn.' })\n withdrawReason?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it.' })\n creator?: User\n\n @RelationId((one: Announcement) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: Announcement) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_audience_0', (one: AnnouncementAudience) => [one.announcement, one.scope, one.targetId], { unique: true, where: '\"deleted_at\" IS NULL' })\n@Index('ix_announcement_audience_1', (one: AnnouncementAudience) => [one.domain, one.scope, one.targetId])\n@ObjectType({ description: 'One target of an announcement - the domain, a department with those under it, a role or a person (organization audience).' })\nexport class AnnouncementAudience {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Target id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementAudience) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementAudience) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @Column()\n @Field({ description: 'DOMAIN, DEPARTMENT, ROLE or USER.' })\n scope: string\n\n @Column()\n @Field({ description: 'The domain, department, role or user id.' })\n targetId: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Its name when it was given - shown to the writer.' })\n targetName?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who gave it.' })\n creator?: User\n\n @RelationId((one: AnnouncementAudience) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementAudience) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'When the target was taken off.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_receipt_0', (one: AnnouncementReceipt) => [one.announcement, one.user], { unique: true, where: '\"deleted_at\" IS NULL' })\n@Index('ix_announcement_receipt_1', (one: AnnouncementReceipt) => [one.domain, one.user])\n@ObjectType({ description: \"One person's reading of an announcement - whether they were addressed when it went out, when they read it and when they acknowledged it.\" })\nexport class AnnouncementReceipt {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Receipt id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementReceipt) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementReceipt) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @ManyToOne(type => User)\n @Field(type => User, { nullable: true, description: 'The reader.' })\n user?: User\n\n @RelationId((one: AnnouncementReceipt) => one.user)\n @Field({ description: 'The reader user id.' })\n userId?: string\n\n @Column({ default: false })\n @Field({ description: 'Whether the person is on its roster - addressed when it went out or when its audience changed; one who came to it later is not.' })\n listed: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person was last told of it.' })\n notifiedAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person first read it.' })\n readAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person acknowledged it.' })\n acknowledgedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who made the row - the publisher for the roster, the reader otherwise.' })\n creator?: User\n\n @RelationId((one: AnnouncementReceipt) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementReceipt) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_revision_0', (one: AnnouncementRevision) => [one.announcement, one.version], { unique: true, where: '\"deleted_at\" IS NULL' })\n@ObjectType({ description: 'One version of a published announcement - what it said and whom it was addressed to.' })\nexport class AnnouncementRevision {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Revision id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementRevision) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementRevision) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'The version.' })\n version: number\n\n @Column()\n @Field({ description: 'The title of this version.' })\n title: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The body of this version.' })\n body?: string\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, { nullable: true, description: 'The rest of this version - kind, importance, period, flags, links and audience.' })\n rest?: Record<string, unknown>\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who made this version.' })\n creator?: User\n\n @RelationId((one: AnnouncementRevision) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementRevision) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n"]}
1
+ {"version":3,"file":"announcement.js","sourceRoot":"","sources":["../../../server/service/announcement/announcement.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The tables of announcements (ADR-0163 decisions 1-4): an announcement, whom it is addressed to, each person's reading\n * of it, and the versions it went through after it was published. Whom it reaches and who read it are kept here -\n * the inbox, web push and the popup only tell of it.\n */\nimport { Column, CreateDateColumn, DeleteDateColumn, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId, UpdateDateColumn } from 'typeorm'\nimport { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport { GraphQLJSON } from 'graphql-scalars'\n\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n/** Where an announcement stands. An announcement past its end is still PUBLISHED - it is a past one, read from the list of past ones. */\nexport enum AnnouncementStatus {\n /** Being written - only its writer sees it. */\n DRAFT = 'DRAFT',\n /** Published to start later - published and told when its start comes. */\n SCHEDULED = 'SCHEDULED',\n /** Out to its audience. */\n PUBLISHED = 'PUBLISHED',\n /** Taken back, with the reason - no longer shown to its audience. */\n WITHDRAWN = 'WITHDRAWN'\n}\n\nregisterEnumType(AnnouncementStatus, { name: 'AnnouncementStatus', description: 'Where an announcement stands: draft, scheduled, published or withdrawn.' })\n\n/** How much an announcement asks of the reader's attention - the list puts the urgent and important ones first. */\nexport enum AnnouncementImportance {\n NORMAL = 'NORMAL',\n IMPORTANT = 'IMPORTANT',\n URGENT = 'URGENT'\n}\n\nregisterEnumType(AnnouncementImportance, { name: 'AnnouncementImportance', description: 'How much an announcement asks of the reader: normal, important or urgent.' })\n\n@Entity()\n@Index('ix_announcement_0', (one: Announcement) => [one.domain, one.status, one.startsAt])\n@Index('ix_announcement_1', (one: Announcement) => [one.domain, one.sourceKind, one.sourceId])\n@ObjectType({ description: 'An announcement of a domain - written once, addressed to an audience, read and acknowledged by each of its people.' })\nexport class Announcement {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Announcement id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain the announcement is in.' })\n domain?: Domain\n\n @RelationId((one: Announcement) => one.domain)\n domainId?: string\n\n @Column()\n @Field({ description: 'The title.' })\n title: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The body, in Markdown.' })\n body?: string\n\n @Column({ default: 'GENERAL' })\n @Field({ description: 'The kind of announcement - one of the codes this module declares.' })\n category: string\n\n @Column({ default: AnnouncementImportance.NORMAL })\n @Field(type => AnnouncementImportance, { description: 'Normal, important or urgent.' })\n importance: AnnouncementImportance\n\n @Column({ default: AnnouncementStatus.DRAFT })\n @Field(type => AnnouncementStatus, { description: 'Draft, scheduled, published or withdrawn.' })\n status: AnnouncementStatus\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it starts to be shown - empty publishes it at once.' })\n startsAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it stops being a current one - empty keeps it current.' })\n endsAt?: Date\n\n @Column({ default: false })\n @Field({ description: 'Kept on top of the list while it is current.' })\n pinned: boolean\n\n @Column('int', { default: 12 })\n @Field(type => Int, { description: \"Its place in the readers' list - pinned first, then urgent, important and normal (announcement-rules rankOf).\" })\n rank: number\n\n @Column({ default: false })\n @Field({ description: 'Each reader is asked to acknowledge it, apart from reading it.' })\n requiresAcknowledgement: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The day by which the readers are asked to acknowledge it.' })\n acknowledgeBy?: Date\n\n @Column({ default: false })\n @Field({ description: 'Shown in a popup to its readers - once, or until acknowledged when it asks for that.' })\n popup: boolean\n\n @Column({ default: false })\n @Field({ description: 'Sent by mail too - where the domain has turned mail on (notification Notice::email).' })\n sendEmail: boolean\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, {\n nullable: true,\n description: 'Each time its people were told - [{ at, kind: published | changed | reminder, receivers, email: { sent, failed }, teams: { sent, failed } }], the newest last.'\n })\n deliveries?: { at: string; kind: string; receivers: number; email: { sent: number; failed: number }; teams: { sent: number; failed: number }; failed?: boolean }[]\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, { nullable: true, description: 'Screens it points to - [{ label, url }], a screen of the application or an https address.' })\n links?: { label: string; url: string }[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The trigger that wrote it (ADR-0163 decision 7) - `compliance.regulation-adopted`; empty for one a person wrote.' })\n trigger?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The kind of record it tells of - `RegulationVersion`; set by its trigger.' })\n sourceKind?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The record it tells of; set by its trigger.' })\n sourceId?: string\n\n @Column('int', { default: 1 })\n @Field(type => Int, { description: 'The version - one more each time it is changed after it was published.' })\n version: number\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it went out to its audience.' })\n publishedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who published it.' })\n publisher?: User\n\n @RelationId((one: Announcement) => one.publisher)\n publisherId?: string\n\n @Column('int', { nullable: true })\n @Field(type => Int, { nullable: true, description: 'How many people it was addressed to - counted when it went out, and again when its audience changed.' })\n audienceSize?: number\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it was withdrawn.' })\n withdrawnAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Why it was withdrawn.' })\n withdrawReason?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it.' })\n creator?: User\n\n @RelationId((one: Announcement) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: Announcement) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_audience_0', (one: AnnouncementAudience) => [one.announcement, one.scope, one.targetId], { unique: true, where: '\"deleted_at\" IS NULL' })\n@Index('ix_announcement_audience_1', (one: AnnouncementAudience) => [one.domain, one.scope, one.targetId])\n@ObjectType({ description: 'One target of an announcement - the domain, a department with those under it, a role or a person (organization audience).' })\nexport class AnnouncementAudience {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Target id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementAudience) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementAudience) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @Column()\n @Field({ description: 'DOMAIN, DEPARTMENT, ROLE or USER.' })\n scope: string\n\n @Column()\n @Field({ description: 'The domain, department, role or user id.' })\n targetId: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Its name when it was given - shown to the writer.' })\n targetName?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who gave it.' })\n creator?: User\n\n @RelationId((one: AnnouncementAudience) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementAudience) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'When the target was taken off.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_receipt_0', (one: AnnouncementReceipt) => [one.announcement, one.user], { unique: true, where: '\"deleted_at\" IS NULL' })\n@Index('ix_announcement_receipt_1', (one: AnnouncementReceipt) => [one.domain, one.user])\n@ObjectType({ description: \"One person's reading of an announcement - whether they were addressed when it went out, when they read it and when they acknowledged it.\" })\nexport class AnnouncementReceipt {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Receipt id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementReceipt) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementReceipt) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @ManyToOne(type => User)\n @Field(type => User, { nullable: true, description: 'The reader.' })\n user?: User\n\n @RelationId((one: AnnouncementReceipt) => one.user)\n @Field({ description: 'The reader user id.' })\n userId?: string\n\n @Column({ default: false })\n @Field({ description: 'Whether the person is on its roster - addressed when it went out or when its audience changed; one who came to it later is not.' })\n listed: boolean\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person was last told of it.' })\n notifiedAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person first read it.' })\n readAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When the person acknowledged it.' })\n acknowledgedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who made the row - the publisher for the roster, the reader otherwise.' })\n creator?: User\n\n @RelationId((one: AnnouncementReceipt) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementReceipt) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n\n@Entity()\n@Index('ix_announcement_revision_0', (one: AnnouncementRevision) => [one.announcement, one.version], { unique: true, where: '\"deleted_at\" IS NULL' })\n@ObjectType({ description: 'One version of a published announcement - what it said and whom it was addressed to.' })\nexport class AnnouncementRevision {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Revision id.' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain.' })\n domain?: Domain\n\n @RelationId((one: AnnouncementRevision) => one.domain)\n domainId?: string\n\n @ManyToOne(type => Announcement, { onDelete: 'CASCADE' })\n announcement?: Announcement\n\n @RelationId((one: AnnouncementRevision) => one.announcement)\n @Field({ description: 'The announcement.' })\n announcementId?: string\n\n @Column('int')\n @Field(type => Int, { description: 'The version.' })\n version: number\n\n @Column()\n @Field({ description: 'The title of this version.' })\n title: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'The body of this version.' })\n body?: string\n\n @Column('simple-json', { nullable: true })\n @Field(type => GraphQLJSON, { nullable: true, description: 'The rest of this version - kind, importance, period, flags, links and audience.' })\n rest?: Record<string, unknown>\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who made this version.' })\n creator?: User\n\n @RelationId((one: AnnouncementRevision) => one.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last.' })\n updater?: User\n\n @RelationId((one: AnnouncementRevision) => one.updater)\n updaterId?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Creation timestamp.' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Last update timestamp.' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'Soft delete timestamp.' })\n deletedAt?: Date\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  export * from './announcement/announcement';
2
2
  export * from './announcement/announcement-rules';
3
3
  export { ANNOUNCEMENT_REF_TYPE, visibleAnnouncement } from './announcement/announcement-service';
4
+ export * from './announcement/announcement-trigger';
4
5
  export declare const entities: (typeof import("./announcement/announcement").Announcement | typeof import("./announcement/announcement").AnnouncementAudience | typeof import("./announcement/announcement").AnnouncementReceipt | typeof import("./announcement/announcement").AnnouncementRevision)[];
5
6
  export declare const schema: {
6
7
  resolverClasses: typeof import("./announcement/announcement-resolver").AnnouncementResolver[];
@@ -8,6 +8,7 @@ tslib_1.__exportStar(require("./announcement/announcement-rules"), exports);
8
8
  var announcement_service_1 = require("./announcement/announcement-service");
9
9
  Object.defineProperty(exports, "ANNOUNCEMENT_REF_TYPE", { enumerable: true, get: function () { return announcement_service_1.ANNOUNCEMENT_REF_TYPE; } });
10
10
  Object.defineProperty(exports, "visibleAnnouncement", { enumerable: true, get: function () { return announcement_service_1.visibleAnnouncement; } });
11
+ tslib_1.__exportStar(require("./announcement/announcement-trigger"), exports);
11
12
  /* IMPORT ENTITIES AND RESOLVERS */
12
13
  const announcement_1 = require("./announcement");
13
14
  exports.entities = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,sEAA2C;AAC3C,4EAAiD;AACjD,4EAAgG;AAAvF,6HAAA,qBAAqB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAEnD,mCAAmC;AACnC,iDAAqG;AAExF,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,uBAAoB;CACxB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,wBAAqB;KACzB;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './announcement/announcement'\nexport * from './announcement/announcement-rules'\nexport { ANNOUNCEMENT_REF_TYPE, visibleAnnouncement } from './announcement/announcement-service'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as AnnouncementEntities, resolvers as AnnouncementResolvers } from './announcement'\n\nexport const entities = [\n /* ENTITIES */\n ...AnnouncementEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...AnnouncementResolvers\n ]\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,sEAA2C;AAC3C,4EAAiD;AACjD,4EAAgG;AAAvF,6HAAA,qBAAqB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AACnD,8EAAmD;AAEnD,mCAAmC;AACnC,iDAAqG;AAExF,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,uBAAoB;CACxB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,wBAAqB;KACzB;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './announcement/announcement'\nexport * from './announcement/announcement-rules'\nexport { ANNOUNCEMENT_REF_TYPE, visibleAnnouncement } from './announcement/announcement-service'\nexport * from './announcement/announcement-trigger'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport { entities as AnnouncementEntities, resolvers as AnnouncementResolvers } from './announcement'\n\nexport const entities = [\n /* ENTITIES */\n ...AnnouncementEntities\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...AnnouncementResolvers\n ]\n}\n"]}