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.
- package/CHANGELOG.md +10 -0
- package/LICENSE +21 -0
- package/README.md +308 -0
- package/dist/core.d.ts +72 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +617 -0
- package/dist/core.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/preferences.d.ts +14 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +46 -0
- package/dist/preferences.js.map +1 -0
- package/dist/schema.d.ts +2237 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +149 -0
- package/dist/schema.js.map +1 -0
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/docs/adoption-notes.md +45 -0
- package/docs/architecture.md +75 -0
- package/examples/basic.ts +74 -0
- package/package.json +58 -0
|
@@ -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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|