unified-notification-core 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAG1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAOzD"}
package/dist/errors.js ADDED
@@ -0,0 +1,17 @@
1
+ export class NotificationConfigurationError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "NotificationConfigurationError";
5
+ }
6
+ }
7
+ export class NotificationDeliveryError extends Error {
8
+ code;
9
+ retryable;
10
+ constructor(code, message, options = {}) {
11
+ super(message, { cause: options.cause });
12
+ this.name = "NotificationDeliveryError";
13
+ this.code = code;
14
+ this.retryable = options.retryable ?? true;
15
+ }
16
+ }
17
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACzC,IAAI,CAAS;IACb,SAAS,CAAU;IAE5B,YACE,IAAY,EACZ,OAAe,EACf,UAAoD,EAAE;QAEtD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC7C,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export { NotificationConfigurationError, NotificationDeliveryError, } from "./errors.js";
2
+ export { createNotificationCore, UnifiedNotificationCore, } from "./core.js";
3
+ export { resolvePreference } from "./preferences.js";
4
+ export { createNotificationSchema, notificationDeliveries, notificationPreferences, notificationSchema, notifications, } from "./schema.js";
5
+ export type { NotificationCoreConfig, } from "./core.js";
6
+ export type { NotificationSchema, NotificationSchemaOptions, } from "./schema.js";
7
+ export { BUILT_IN_CHANNELS, PREFERENCE_WILDCARD, } from "./types.js";
8
+ export type { BuiltInChannel, DeliveryAdapter, DeliveryAdapters, DeliveryContext, DeliveryResult, DeliveryStatus, DispatchResult, NotificationLogger, InboxCursor, InboxItem, InboxPage, JsonObject, JsonPrimitive, JsonValue, NotificationPayload, PreferenceDefaults, PreferenceOverride, PublishInput, PublishedNotification, ResolvedPreference, } from "./types.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { NotificationConfigurationError, NotificationDeliveryError, } from "./errors.js";
2
+ export { createNotificationCore, UnifiedNotificationCore, } from "./core.js";
3
+ export { resolvePreference } from "./preferences.js";
4
+ export { createNotificationSchema, notificationDeliveries, notificationPreferences, notificationSchema, notifications, } from "./schema.js";
5
+ export { BUILT_IN_CHANNELS, PREFERENCE_WILDCARD, } from "./types.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,GACd,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PreferenceDefaults, ResolvedPreference } from "./types.js";
2
+ export type StoredPreference = {
3
+ topic: string;
4
+ channel: string;
5
+ enabled: boolean;
6
+ };
7
+ export declare function resolvePreference<TChannel extends string>(input: {
8
+ topic: string;
9
+ channel: TChannel;
10
+ stored: readonly StoredPreference[];
11
+ defaults: PreferenceDefaults<TChannel>;
12
+ globalDefault: boolean;
13
+ }): ResolvedPreference<TChannel>;
14
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAiD/B"}
@@ -0,0 +1,46 @@
1
+ import { PREFERENCE_WILDCARD } from "./types.js";
2
+ export function resolvePreference(input) {
3
+ const { topic, channel, stored } = input;
4
+ const byKey = new Map(stored.map((item) => [`${item.topic}\u0000${item.channel}`, item.enabled]));
5
+ const candidates = [
6
+ {
7
+ key: `${topic}\u0000${channel}`,
8
+ source: "exact",
9
+ },
10
+ {
11
+ key: `${topic}\u0000${PREFERENCE_WILDCARD}`,
12
+ source: "topic",
13
+ },
14
+ {
15
+ key: `${PREFERENCE_WILDCARD}\u0000${channel}`,
16
+ source: "channel",
17
+ },
18
+ {
19
+ key: `${PREFERENCE_WILDCARD}\u0000${PREFERENCE_WILDCARD}`,
20
+ source: "recipient",
21
+ },
22
+ ];
23
+ for (const candidate of candidates) {
24
+ const value = byKey.get(candidate.key);
25
+ if (value !== undefined) {
26
+ return { topic, channel, enabled: value, source: candidate.source };
27
+ }
28
+ }
29
+ const topicDefault = input.defaults[topic]?.[channel];
30
+ if (topicDefault !== undefined) {
31
+ return {
32
+ topic,
33
+ channel,
34
+ enabled: topicDefault,
35
+ source: "topic_default",
36
+ };
37
+ }
38
+ const configuredGlobal = input.defaults[PREFERENCE_WILDCARD]?.[channel];
39
+ return {
40
+ topic,
41
+ channel,
42
+ enabled: configuredGlobal ?? input.globalDefault,
43
+ source: "global_default",
44
+ };
45
+ }
46
+ //# sourceMappingURL=preferences.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAQjD,MAAM,UAAU,iBAAiB,CAA0B,KAM1D;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAC3E,CAAC;IAEF,MAAM,UAAU,GAAG;QACjB;YACE,GAAG,EAAE,GAAG,KAAK,SAAS,OAAO,EAAE;YAC/B,MAAM,EAAE,OAAgB;SACzB;QACD;YACE,GAAG,EAAE,GAAG,KAAK,SAAS,mBAAmB,EAAE;YAC3C,MAAM,EAAE,OAAgB;SACzB;QACD;YACE,GAAG,EAAE,GAAG,mBAAmB,SAAS,OAAO,EAAE;YAC7C,MAAM,EAAE,SAAkB;SAC3B;QACD;YACE,GAAG,EAAE,GAAG,mBAAmB,SAAS,mBAAmB,EAAE;YACzD,MAAM,EAAE,WAAoB;SAC7B;KACF,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK;YACL,OAAO;YACP,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACxE,OAAO;QACL,KAAK;QACL,OAAO;QACP,OAAO,EAAE,gBAAgB,IAAI,KAAK,CAAC,aAAa;QAChD,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC"}