@chipmobilesdk/rn-notification 0.5.0 → 0.7.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 (681) hide show
  1. package/CHANGELOG.md +184 -0
  2. package/README.md +108 -16
  3. package/lib/commonjs/advanced.js +139 -0
  4. package/lib/commonjs/advanced.js.map +1 -0
  5. package/lib/commonjs/channel/migrate.js +246 -0
  6. package/lib/commonjs/channel/migrate.js.map +1 -0
  7. package/lib/commonjs/channel/tone-map.js +120 -0
  8. package/lib/commonjs/channel/tone-map.js.map +1 -0
  9. package/lib/commonjs/channel/validate-tone.js +61 -0
  10. package/lib/commonjs/channel/validate-tone.js.map +1 -0
  11. package/lib/commonjs/contract/channel.js +52 -0
  12. package/lib/commonjs/contract/channel.js.map +1 -0
  13. package/lib/commonjs/contract/diagnostics.js +25 -0
  14. package/lib/commonjs/contract/diagnostics.js.map +1 -0
  15. package/lib/commonjs/contract/errors.js +126 -0
  16. package/lib/commonjs/contract/errors.js.map +1 -0
  17. package/lib/commonjs/contract/hash.js +35 -0
  18. package/lib/commonjs/contract/hash.js.map +1 -0
  19. package/lib/commonjs/contract/index.js +94 -0
  20. package/lib/commonjs/contract/index.js.map +1 -0
  21. package/lib/commonjs/contract/interaction.js +37 -0
  22. package/lib/commonjs/contract/interaction.js.map +1 -0
  23. package/lib/commonjs/contract/notification.js +42 -0
  24. package/lib/commonjs/contract/notification.js.map +1 -0
  25. package/lib/commonjs/contract/permission.js +2 -0
  26. package/lib/commonjs/contract/permission.js.map +1 -0
  27. package/lib/commonjs/contract/reconcile.js +6 -0
  28. package/lib/commonjs/contract/reconcile.js.map +1 -0
  29. package/lib/commonjs/contract/recurrence.js +53 -0
  30. package/lib/commonjs/contract/recurrence.js.map +1 -0
  31. package/lib/commonjs/diagnostics/burst.js +89 -0
  32. package/lib/commonjs/diagnostics/burst.js.map +1 -0
  33. package/lib/commonjs/diagnostics/events.js +63 -0
  34. package/lib/commonjs/diagnostics/events.js.map +1 -0
  35. package/lib/commonjs/diagnostics/redact.js +48 -0
  36. package/lib/commonjs/diagnostics/redact.js.map +1 -0
  37. package/lib/commonjs/diagnostics/snapshot.js +68 -0
  38. package/lib/commonjs/diagnostics/snapshot.js.map +1 -0
  39. package/lib/commonjs/engine/adapter.js +6 -0
  40. package/lib/commonjs/engine/adapter.js.map +1 -0
  41. package/lib/commonjs/engine/codec.js +84 -0
  42. package/lib/commonjs/engine/codec.js.map +1 -0
  43. package/lib/commonjs/engine/notify-kit/events.js +148 -0
  44. package/lib/commonjs/engine/notify-kit/events.js.map +1 -0
  45. package/lib/commonjs/engine/notify-kit/module.js +119 -0
  46. package/lib/commonjs/engine/notify-kit/module.js.map +1 -0
  47. package/lib/commonjs/engine/notify-kit/platform/android.js +159 -0
  48. package/lib/commonjs/engine/notify-kit/platform/android.js.map +1 -0
  49. package/lib/commonjs/engine/notify-kit/platform/index.js +57 -0
  50. package/lib/commonjs/engine/notify-kit/platform/index.js.map +1 -0
  51. package/lib/commonjs/engine/notify-kit/platform/ios.js +54 -0
  52. package/lib/commonjs/engine/notify-kit/platform/ios.js.map +1 -0
  53. package/lib/commonjs/engine/notify-kit/platform/types.js +6 -0
  54. package/lib/commonjs/engine/notify-kit/platform/types.js.map +1 -0
  55. package/lib/commonjs/engine/notify-kit-engine.js +260 -0
  56. package/lib/commonjs/engine/notify-kit-engine.js.map +1 -0
  57. package/lib/commonjs/index.js +367 -0
  58. package/lib/commonjs/index.js.map +1 -0
  59. package/lib/commonjs/initialize.js +187 -0
  60. package/lib/commonjs/initialize.js.map +1 -0
  61. package/lib/commonjs/interaction/index.js +120 -0
  62. package/lib/commonjs/interaction/index.js.map +1 -0
  63. package/lib/commonjs/maintenance/cycle.js +108 -0
  64. package/lib/commonjs/maintenance/cycle.js.map +1 -0
  65. package/lib/commonjs/maintenance/permission-refresh.js +39 -0
  66. package/lib/commonjs/maintenance/permission-refresh.js.map +1 -0
  67. package/lib/commonjs/maintenance/reanchor.js +99 -0
  68. package/lib/commonjs/maintenance/reanchor.js.map +1 -0
  69. package/lib/commonjs/maintenance/toggle.js +50 -0
  70. package/lib/commonjs/maintenance/toggle.js.map +1 -0
  71. package/lib/commonjs/maintenance/verify.js +70 -0
  72. package/lib/commonjs/maintenance/verify.js.map +1 -0
  73. package/lib/commonjs/maintenance/window-refresh.js +53 -0
  74. package/lib/commonjs/maintenance/window-refresh.js.map +1 -0
  75. package/lib/commonjs/notifications.js +161 -0
  76. package/lib/commonjs/notifications.js.map +1 -0
  77. package/lib/commonjs/package.json +1 -0
  78. package/lib/commonjs/permission/index.js +182 -0
  79. package/lib/commonjs/permission/index.js.map +1 -0
  80. package/lib/commonjs/permission/state.js +92 -0
  81. package/lib/commonjs/permission/state.js.map +1 -0
  82. package/lib/commonjs/push/envelope.js +141 -0
  83. package/lib/commonjs/push/envelope.js.map +1 -0
  84. package/lib/commonjs/push/fcm-provider.js +122 -0
  85. package/lib/commonjs/push/fcm-provider.js.map +1 -0
  86. package/lib/commonjs/push/gate.js +162 -0
  87. package/lib/commonjs/push/gate.js.map +1 -0
  88. package/lib/commonjs/push/index.js +47 -0
  89. package/lib/commonjs/push/index.js.map +1 -0
  90. package/lib/commonjs/push/instructions.js +101 -0
  91. package/lib/commonjs/push/instructions.js.map +1 -0
  92. package/lib/commonjs/push/provider-adapter.js +6 -0
  93. package/lib/commonjs/push/provider-adapter.js.map +1 -0
  94. package/lib/commonjs/push/signout.js +55 -0
  95. package/lib/commonjs/push/signout.js.map +1 -0
  96. package/lib/commonjs/reconcile/chunk.js +49 -0
  97. package/lib/commonjs/reconcile/chunk.js.map +1 -0
  98. package/lib/commonjs/reconcile/diff.js +105 -0
  99. package/lib/commonjs/reconcile/diff.js.map +1 -0
  100. package/lib/commonjs/reconcile/duplicates.js +60 -0
  101. package/lib/commonjs/reconcile/duplicates.js.map +1 -0
  102. package/lib/commonjs/reconcile/index.js +164 -0
  103. package/lib/commonjs/reconcile/index.js.map +1 -0
  104. package/lib/commonjs/reconcile/truncate.js +50 -0
  105. package/lib/commonjs/reconcile/truncate.js.map +1 -0
  106. package/lib/commonjs/recurrence/clock-guard.js +65 -0
  107. package/lib/commonjs/recurrence/clock-guard.js.map +1 -0
  108. package/lib/commonjs/recurrence/expand.js +254 -0
  109. package/lib/commonjs/recurrence/expand.js.map +1 -0
  110. package/lib/commonjs/recurrence/index.js +212 -0
  111. package/lib/commonjs/recurrence/index.js.map +1 -0
  112. package/lib/commonjs/repeat/expiry.js +41 -0
  113. package/lib/commonjs/repeat/expiry.js.map +1 -0
  114. package/lib/commonjs/repeat/index.js +100 -0
  115. package/lib/commonjs/repeat/index.js.map +1 -0
  116. package/lib/commonjs/repeat/marker.js +58 -0
  117. package/lib/commonjs/repeat/marker.js.map +1 -0
  118. package/lib/commonjs/repeat/place.js +83 -0
  119. package/lib/commonjs/repeat/place.js.map +1 -0
  120. package/lib/commonjs/schedule/anchor.js +243 -0
  121. package/lib/commonjs/schedule/anchor.js.map +1 -0
  122. package/lib/commonjs/schedule/index.js +142 -0
  123. package/lib/commonjs/schedule/index.js.map +1 -0
  124. package/lib/commonjs/schedule/partition.js +59 -0
  125. package/lib/commonjs/schedule/partition.js.map +1 -0
  126. package/lib/commonjs/schedule/resolve-moment.js +72 -0
  127. package/lib/commonjs/schedule/resolve-moment.js.map +1 -0
  128. package/lib/commonjs/schedule/validate-content.js +101 -0
  129. package/lib/commonjs/schedule/validate-content.js.map +1 -0
  130. package/lib/commonjs/schedule/validate-identifier.js +126 -0
  131. package/lib/commonjs/schedule/validate-identifier.js.map +1 -0
  132. package/lib/commonjs/schedule/writer.js +44 -0
  133. package/lib/commonjs/schedule/writer.js.map +1 -0
  134. package/lib/commonjs/state/caps.js +101 -0
  135. package/lib/commonjs/state/caps.js.map +1 -0
  136. package/lib/commonjs/state/dedup-ledger.js +39 -0
  137. package/lib/commonjs/state/dedup-ledger.js.map +1 -0
  138. package/lib/commonjs/state/interaction-buffer.js +98 -0
  139. package/lib/commonjs/state/interaction-buffer.js.map +1 -0
  140. package/lib/commonjs/state/mmkv-store.js +75 -0
  141. package/lib/commonjs/state/mmkv-store.js.map +1 -0
  142. package/lib/commonjs/state/permission-history.js +64 -0
  143. package/lib/commonjs/state/permission-history.js.map +1 -0
  144. package/lib/commonjs/state/record.js +269 -0
  145. package/lib/commonjs/state/record.js.map +1 -0
  146. package/lib/commonjs/state/reset.js +37 -0
  147. package/lib/commonjs/state/reset.js.map +1 -0
  148. package/lib/commonjs/state/series-ledger.js +71 -0
  149. package/lib/commonjs/state/series-ledger.js.map +1 -0
  150. package/lib/commonjs/state/store.js +39 -0
  151. package/lib/commonjs/state/store.js.map +1 -0
  152. package/lib/commonjs/testing/conformance/index.js +218 -0
  153. package/lib/commonjs/testing/conformance/index.js.map +1 -0
  154. package/lib/commonjs/testing/fake-engine.js +338 -0
  155. package/lib/commonjs/testing/fake-engine.js.map +1 -0
  156. package/lib/commonjs/testing/fake-provider.js +93 -0
  157. package/lib/commonjs/testing/fake-provider.js.map +1 -0
  158. package/lib/commonjs/testing/faults.js +59 -0
  159. package/lib/commonjs/testing/faults.js.map +1 -0
  160. package/lib/commonjs/testing/index.js +54 -0
  161. package/lib/commonjs/testing/index.js.map +1 -0
  162. package/lib/commonjs/testing/measure.js +298 -0
  163. package/lib/commonjs/testing/measure.js.map +1 -0
  164. package/lib/module/advanced.js +29 -0
  165. package/lib/module/advanced.js.map +1 -0
  166. package/lib/module/channel/migrate.js +242 -0
  167. package/lib/module/channel/migrate.js.map +1 -0
  168. package/lib/module/channel/tone-map.js +112 -0
  169. package/lib/module/channel/tone-map.js.map +1 -0
  170. package/lib/module/channel/validate-tone.js +57 -0
  171. package/lib/module/channel/validate-tone.js.map +1 -0
  172. package/lib/module/contract/channel.js +48 -0
  173. package/lib/module/contract/channel.js.map +1 -0
  174. package/lib/module/contract/diagnostics.js +21 -0
  175. package/lib/module/contract/diagnostics.js.map +1 -0
  176. package/lib/module/contract/errors.js +119 -0
  177. package/lib/module/contract/errors.js.map +1 -0
  178. package/lib/module/contract/hash.js +29 -0
  179. package/lib/module/contract/hash.js.map +1 -0
  180. package/lib/module/contract/index.js +13 -0
  181. package/lib/module/contract/index.js.map +1 -0
  182. package/lib/module/contract/interaction.js +33 -0
  183. package/lib/module/contract/interaction.js.map +1 -0
  184. package/lib/module/contract/notification.js +38 -0
  185. package/lib/module/contract/notification.js.map +1 -0
  186. package/lib/module/contract/permission.js +2 -0
  187. package/lib/module/contract/permission.js.map +1 -0
  188. package/lib/module/contract/reconcile.js +4 -0
  189. package/lib/module/contract/reconcile.js.map +1 -0
  190. package/lib/module/contract/recurrence.js +49 -0
  191. package/lib/module/contract/recurrence.js.map +1 -0
  192. package/lib/module/diagnostics/burst.js +85 -0
  193. package/lib/module/diagnostics/burst.js.map +1 -0
  194. package/lib/module/diagnostics/events.js +58 -0
  195. package/lib/module/diagnostics/events.js.map +1 -0
  196. package/lib/module/diagnostics/redact.js +44 -0
  197. package/lib/module/diagnostics/redact.js.map +1 -0
  198. package/lib/module/diagnostics/snapshot.js +64 -0
  199. package/lib/module/diagnostics/snapshot.js.map +1 -0
  200. package/lib/module/engine/adapter.js +4 -0
  201. package/lib/module/engine/adapter.js.map +1 -0
  202. package/lib/module/engine/codec.js +79 -0
  203. package/lib/module/engine/codec.js.map +1 -0
  204. package/lib/module/engine/notify-kit/events.js +139 -0
  205. package/lib/module/engine/notify-kit/events.js.map +1 -0
  206. package/lib/module/engine/notify-kit/module.js +113 -0
  207. package/lib/module/engine/notify-kit/module.js.map +1 -0
  208. package/lib/module/engine/notify-kit/platform/android.js +155 -0
  209. package/lib/module/engine/notify-kit/platform/android.js.map +1 -0
  210. package/lib/module/engine/notify-kit/platform/index.js +51 -0
  211. package/lib/module/engine/notify-kit/platform/index.js.map +1 -0
  212. package/lib/module/engine/notify-kit/platform/ios.js +49 -0
  213. package/lib/module/engine/notify-kit/platform/ios.js.map +1 -0
  214. package/lib/module/engine/notify-kit/platform/types.js +4 -0
  215. package/lib/module/engine/notify-kit/platform/types.js.map +1 -0
  216. package/lib/module/engine/notify-kit-engine.js +257 -0
  217. package/lib/module/engine/notify-kit-engine.js.map +1 -0
  218. package/lib/module/index.js +98 -0
  219. package/lib/module/index.js.map +1 -0
  220. package/lib/module/initialize.js +182 -0
  221. package/lib/module/initialize.js.map +1 -0
  222. package/lib/module/interaction/index.js +116 -0
  223. package/lib/module/interaction/index.js.map +1 -0
  224. package/lib/module/maintenance/cycle.js +102 -0
  225. package/lib/module/maintenance/cycle.js.map +1 -0
  226. package/lib/module/maintenance/permission-refresh.js +34 -0
  227. package/lib/module/maintenance/permission-refresh.js.map +1 -0
  228. package/lib/module/maintenance/reanchor.js +94 -0
  229. package/lib/module/maintenance/reanchor.js.map +1 -0
  230. package/lib/module/maintenance/toggle.js +45 -0
  231. package/lib/module/maintenance/toggle.js.map +1 -0
  232. package/lib/module/maintenance/verify.js +65 -0
  233. package/lib/module/maintenance/verify.js.map +1 -0
  234. package/lib/module/maintenance/window-refresh.js +48 -0
  235. package/lib/module/maintenance/window-refresh.js.map +1 -0
  236. package/lib/module/notifications.js +157 -0
  237. package/lib/module/notifications.js.map +1 -0
  238. package/lib/module/package.json +1 -0
  239. package/lib/module/permission/index.js +178 -0
  240. package/lib/module/permission/index.js.map +1 -0
  241. package/lib/module/permission/state.js +83 -0
  242. package/lib/module/permission/state.js.map +1 -0
  243. package/lib/module/push/envelope.js +137 -0
  244. package/lib/module/push/envelope.js.map +1 -0
  245. package/lib/module/push/fcm-provider.js +119 -0
  246. package/lib/module/push/fcm-provider.js.map +1 -0
  247. package/lib/module/push/gate.js +158 -0
  248. package/lib/module/push/gate.js.map +1 -0
  249. package/lib/module/push/index.js +16 -0
  250. package/lib/module/push/index.js.map +1 -0
  251. package/lib/module/push/instructions.js +97 -0
  252. package/lib/module/push/instructions.js.map +1 -0
  253. package/lib/module/push/provider-adapter.js +4 -0
  254. package/lib/module/push/provider-adapter.js.map +1 -0
  255. package/lib/module/push/signout.js +51 -0
  256. package/lib/module/push/signout.js.map +1 -0
  257. package/lib/module/reconcile/chunk.js +43 -0
  258. package/lib/module/reconcile/chunk.js.map +1 -0
  259. package/lib/module/reconcile/diff.js +101 -0
  260. package/lib/module/reconcile/diff.js.map +1 -0
  261. package/lib/module/reconcile/duplicates.js +56 -0
  262. package/lib/module/reconcile/duplicates.js.map +1 -0
  263. package/lib/module/reconcile/index.js +161 -0
  264. package/lib/module/reconcile/index.js.map +1 -0
  265. package/lib/module/reconcile/truncate.js +46 -0
  266. package/lib/module/reconcile/truncate.js.map +1 -0
  267. package/lib/module/recurrence/clock-guard.js +60 -0
  268. package/lib/module/recurrence/clock-guard.js.map +1 -0
  269. package/lib/module/recurrence/expand.js +248 -0
  270. package/lib/module/recurrence/expand.js.map +1 -0
  271. package/lib/module/recurrence/index.js +208 -0
  272. package/lib/module/recurrence/index.js.map +1 -0
  273. package/lib/module/repeat/expiry.js +37 -0
  274. package/lib/module/repeat/expiry.js.map +1 -0
  275. package/lib/module/repeat/index.js +67 -0
  276. package/lib/module/repeat/index.js.map +1 -0
  277. package/lib/module/repeat/marker.js +51 -0
  278. package/lib/module/repeat/marker.js.map +1 -0
  279. package/lib/module/repeat/place.js +79 -0
  280. package/lib/module/repeat/place.js.map +1 -0
  281. package/lib/module/schedule/anchor.js +234 -0
  282. package/lib/module/schedule/anchor.js.map +1 -0
  283. package/lib/module/schedule/index.js +137 -0
  284. package/lib/module/schedule/index.js.map +1 -0
  285. package/lib/module/schedule/partition.js +53 -0
  286. package/lib/module/schedule/partition.js.map +1 -0
  287. package/lib/module/schedule/resolve-moment.js +66 -0
  288. package/lib/module/schedule/resolve-moment.js.map +1 -0
  289. package/lib/module/schedule/validate-content.js +95 -0
  290. package/lib/module/schedule/validate-content.js.map +1 -0
  291. package/lib/module/schedule/validate-identifier.js +119 -0
  292. package/lib/module/schedule/validate-identifier.js.map +1 -0
  293. package/lib/module/schedule/writer.js +40 -0
  294. package/lib/module/schedule/writer.js.map +1 -0
  295. package/lib/module/state/caps.js +96 -0
  296. package/lib/module/state/caps.js.map +1 -0
  297. package/lib/module/state/dedup-ledger.js +34 -0
  298. package/lib/module/state/dedup-ledger.js.map +1 -0
  299. package/lib/module/state/interaction-buffer.js +92 -0
  300. package/lib/module/state/interaction-buffer.js.map +1 -0
  301. package/lib/module/state/mmkv-store.js +71 -0
  302. package/lib/module/state/mmkv-store.js.map +1 -0
  303. package/lib/module/state/permission-history.js +56 -0
  304. package/lib/module/state/permission-history.js.map +1 -0
  305. package/lib/module/state/record.js +264 -0
  306. package/lib/module/state/record.js.map +1 -0
  307. package/lib/module/state/reset.js +32 -0
  308. package/lib/module/state/reset.js.map +1 -0
  309. package/lib/module/state/series-ledger.js +62 -0
  310. package/lib/module/state/series-ledger.js.map +1 -0
  311. package/lib/module/state/store.js +35 -0
  312. package/lib/module/state/store.js.map +1 -0
  313. package/lib/module/testing/conformance/index.js +214 -0
  314. package/lib/module/testing/conformance/index.js.map +1 -0
  315. package/lib/module/testing/fake-engine.js +335 -0
  316. package/lib/module/testing/fake-engine.js.map +1 -0
  317. package/lib/module/testing/fake-provider.js +89 -0
  318. package/lib/module/testing/fake-provider.js.map +1 -0
  319. package/lib/module/testing/faults.js +55 -0
  320. package/lib/module/testing/faults.js.map +1 -0
  321. package/lib/module/testing/index.js +19 -0
  322. package/lib/module/testing/index.js.map +1 -0
  323. package/lib/module/testing/measure.js +294 -0
  324. package/lib/module/testing/measure.js.map +1 -0
  325. package/lib/typescript/commonjs/advanced.d.ts +36 -0
  326. package/lib/typescript/commonjs/advanced.d.ts.map +1 -0
  327. package/lib/typescript/commonjs/channel/migrate.d.ts +38 -0
  328. package/lib/typescript/commonjs/channel/migrate.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/channel/tone-map.d.ts +34 -0
  330. package/lib/typescript/commonjs/channel/tone-map.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/channel/validate-tone.d.ts +23 -0
  332. package/lib/typescript/commonjs/channel/validate-tone.d.ts.map +1 -0
  333. package/lib/typescript/commonjs/contract/channel.d.ts +185 -0
  334. package/lib/typescript/commonjs/contract/channel.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/contract/diagnostics.d.ts +92 -0
  336. package/lib/typescript/commonjs/contract/diagnostics.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/contract/errors.d.ts +91 -0
  338. package/lib/typescript/commonjs/contract/errors.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/contract/hash.d.ts +14 -0
  340. package/lib/typescript/commonjs/contract/hash.d.ts.map +1 -0
  341. package/lib/typescript/commonjs/contract/index.d.ts +10 -0
  342. package/lib/typescript/commonjs/contract/index.d.ts.map +1 -0
  343. package/lib/typescript/commonjs/contract/interaction.d.ts +53 -0
  344. package/lib/typescript/commonjs/contract/interaction.d.ts.map +1 -0
  345. package/lib/typescript/commonjs/contract/notification.d.ts +110 -0
  346. package/lib/typescript/commonjs/contract/notification.d.ts.map +1 -0
  347. package/lib/typescript/commonjs/contract/permission.d.ts +49 -0
  348. package/lib/typescript/commonjs/contract/permission.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/contract/reconcile.d.ts +82 -0
  350. package/lib/typescript/commonjs/contract/reconcile.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/contract/recurrence.d.ts +118 -0
  352. package/lib/typescript/commonjs/contract/recurrence.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/diagnostics/burst.d.ts +39 -0
  354. package/lib/typescript/commonjs/diagnostics/burst.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/diagnostics/events.d.ts +28 -0
  356. package/lib/typescript/commonjs/diagnostics/events.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/diagnostics/redact.d.ts +22 -0
  358. package/lib/typescript/commonjs/diagnostics/redact.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/diagnostics/snapshot.d.ts +40 -0
  360. package/lib/typescript/commonjs/diagnostics/snapshot.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/engine/adapter.d.ts +172 -0
  362. package/lib/typescript/commonjs/engine/adapter.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/engine/codec.d.ts +20 -0
  364. package/lib/typescript/commonjs/engine/codec.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/engine/notify-kit/events.d.ts +37 -0
  366. package/lib/typescript/commonjs/engine/notify-kit/events.d.ts.map +1 -0
  367. package/lib/typescript/commonjs/engine/notify-kit/module.d.ts +103 -0
  368. package/lib/typescript/commonjs/engine/notify-kit/module.d.ts.map +1 -0
  369. package/lib/typescript/commonjs/engine/notify-kit/platform/android.d.ts +3 -0
  370. package/lib/typescript/commonjs/engine/notify-kit/platform/android.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/engine/notify-kit/platform/index.d.ts +12 -0
  372. package/lib/typescript/commonjs/engine/notify-kit/platform/index.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/engine/notify-kit/platform/ios.d.ts +3 -0
  374. package/lib/typescript/commonjs/engine/notify-kit/platform/ios.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/engine/notify-kit/platform/types.d.ts +33 -0
  376. package/lib/typescript/commonjs/engine/notify-kit/platform/types.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/engine/notify-kit-engine.d.ts +25 -0
  378. package/lib/typescript/commonjs/engine/notify-kit-engine.d.ts.map +1 -0
  379. package/lib/typescript/commonjs/index.d.ts +106 -0
  380. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/initialize.d.ts +74 -0
  382. package/lib/typescript/commonjs/initialize.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/interaction/index.d.ts +53 -0
  384. package/lib/typescript/commonjs/interaction/index.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/maintenance/cycle.d.ts +77 -0
  386. package/lib/typescript/commonjs/maintenance/cycle.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/maintenance/permission-refresh.d.ts +19 -0
  388. package/lib/typescript/commonjs/maintenance/permission-refresh.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/maintenance/reanchor.d.ts +26 -0
  390. package/lib/typescript/commonjs/maintenance/reanchor.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/maintenance/toggle.d.ts +35 -0
  392. package/lib/typescript/commonjs/maintenance/toggle.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/maintenance/verify.d.ts +32 -0
  394. package/lib/typescript/commonjs/maintenance/verify.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/maintenance/window-refresh.d.ts +29 -0
  396. package/lib/typescript/commonjs/maintenance/window-refresh.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/notifications.d.ts +78 -0
  398. package/lib/typescript/commonjs/notifications.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/package.json +1 -0
  400. package/lib/typescript/commonjs/permission/index.d.ts +57 -0
  401. package/lib/typescript/commonjs/permission/index.d.ts.map +1 -0
  402. package/lib/typescript/commonjs/permission/state.d.ts +41 -0
  403. package/lib/typescript/commonjs/permission/state.d.ts.map +1 -0
  404. package/lib/typescript/commonjs/push/envelope.d.ts +33 -0
  405. package/lib/typescript/commonjs/push/envelope.d.ts.map +1 -0
  406. package/lib/typescript/commonjs/push/fcm-provider.d.ts +43 -0
  407. package/lib/typescript/commonjs/push/fcm-provider.d.ts.map +1 -0
  408. package/lib/typescript/commonjs/push/gate.d.ts +57 -0
  409. package/lib/typescript/commonjs/push/gate.d.ts.map +1 -0
  410. package/lib/typescript/commonjs/push/index.d.ts +19 -0
  411. package/lib/typescript/commonjs/push/index.d.ts.map +1 -0
  412. package/lib/typescript/commonjs/push/instructions.d.ts +45 -0
  413. package/lib/typescript/commonjs/push/instructions.d.ts.map +1 -0
  414. package/lib/typescript/commonjs/push/provider-adapter.d.ts +50 -0
  415. package/lib/typescript/commonjs/push/provider-adapter.d.ts.map +1 -0
  416. package/lib/typescript/commonjs/push/signout.d.ts +33 -0
  417. package/lib/typescript/commonjs/push/signout.d.ts.map +1 -0
  418. package/lib/typescript/commonjs/reconcile/chunk.d.ts +24 -0
  419. package/lib/typescript/commonjs/reconcile/chunk.d.ts.map +1 -0
  420. package/lib/typescript/commonjs/reconcile/diff.d.ts +54 -0
  421. package/lib/typescript/commonjs/reconcile/diff.d.ts.map +1 -0
  422. package/lib/typescript/commonjs/reconcile/duplicates.d.ts +32 -0
  423. package/lib/typescript/commonjs/reconcile/duplicates.d.ts.map +1 -0
  424. package/lib/typescript/commonjs/reconcile/index.d.ts +35 -0
  425. package/lib/typescript/commonjs/reconcile/index.d.ts.map +1 -0
  426. package/lib/typescript/commonjs/reconcile/truncate.d.ts +26 -0
  427. package/lib/typescript/commonjs/reconcile/truncate.d.ts.map +1 -0
  428. package/lib/typescript/commonjs/recurrence/clock-guard.d.ts +37 -0
  429. package/lib/typescript/commonjs/recurrence/clock-guard.d.ts.map +1 -0
  430. package/lib/typescript/commonjs/recurrence/expand.d.ts +75 -0
  431. package/lib/typescript/commonjs/recurrence/expand.d.ts.map +1 -0
  432. package/lib/typescript/commonjs/recurrence/index.d.ts +40 -0
  433. package/lib/typescript/commonjs/recurrence/index.d.ts.map +1 -0
  434. package/lib/typescript/commonjs/repeat/expiry.d.ts +23 -0
  435. package/lib/typescript/commonjs/repeat/expiry.d.ts.map +1 -0
  436. package/lib/typescript/commonjs/repeat/index.d.ts +49 -0
  437. package/lib/typescript/commonjs/repeat/index.d.ts.map +1 -0
  438. package/lib/typescript/commonjs/repeat/marker.d.ts +36 -0
  439. package/lib/typescript/commonjs/repeat/marker.d.ts.map +1 -0
  440. package/lib/typescript/commonjs/repeat/place.d.ts +39 -0
  441. package/lib/typescript/commonjs/repeat/place.d.ts.map +1 -0
  442. package/lib/typescript/commonjs/schedule/anchor.d.ts +118 -0
  443. package/lib/typescript/commonjs/schedule/anchor.d.ts.map +1 -0
  444. package/lib/typescript/commonjs/schedule/index.d.ts +40 -0
  445. package/lib/typescript/commonjs/schedule/index.d.ts.map +1 -0
  446. package/lib/typescript/commonjs/schedule/partition.d.ts +29 -0
  447. package/lib/typescript/commonjs/schedule/partition.d.ts.map +1 -0
  448. package/lib/typescript/commonjs/schedule/resolve-moment.d.ts +35 -0
  449. package/lib/typescript/commonjs/schedule/resolve-moment.d.ts.map +1 -0
  450. package/lib/typescript/commonjs/schedule/validate-content.d.ts +42 -0
  451. package/lib/typescript/commonjs/schedule/validate-content.d.ts.map +1 -0
  452. package/lib/typescript/commonjs/schedule/validate-identifier.d.ts +30 -0
  453. package/lib/typescript/commonjs/schedule/validate-identifier.d.ts.map +1 -0
  454. package/lib/typescript/commonjs/schedule/writer.d.ts +36 -0
  455. package/lib/typescript/commonjs/schedule/writer.d.ts.map +1 -0
  456. package/lib/typescript/commonjs/state/caps.d.ts +51 -0
  457. package/lib/typescript/commonjs/state/caps.d.ts.map +1 -0
  458. package/lib/typescript/commonjs/state/dedup-ledger.d.ts +21 -0
  459. package/lib/typescript/commonjs/state/dedup-ledger.d.ts.map +1 -0
  460. package/lib/typescript/commonjs/state/interaction-buffer.d.ts +30 -0
  461. package/lib/typescript/commonjs/state/interaction-buffer.d.ts.map +1 -0
  462. package/lib/typescript/commonjs/state/mmkv-store.d.ts +33 -0
  463. package/lib/typescript/commonjs/state/mmkv-store.d.ts.map +1 -0
  464. package/lib/typescript/commonjs/state/permission-history.d.ts +20 -0
  465. package/lib/typescript/commonjs/state/permission-history.d.ts.map +1 -0
  466. package/lib/typescript/commonjs/state/record.d.ts +134 -0
  467. package/lib/typescript/commonjs/state/record.d.ts.map +1 -0
  468. package/lib/typescript/commonjs/state/reset.d.ts +22 -0
  469. package/lib/typescript/commonjs/state/reset.d.ts.map +1 -0
  470. package/lib/typescript/commonjs/state/series-ledger.d.ts +47 -0
  471. package/lib/typescript/commonjs/state/series-ledger.d.ts.map +1 -0
  472. package/lib/typescript/commonjs/state/store.d.ts +20 -0
  473. package/lib/typescript/commonjs/state/store.d.ts.map +1 -0
  474. package/lib/typescript/commonjs/testing/conformance/index.d.ts +32 -0
  475. package/lib/typescript/commonjs/testing/conformance/index.d.ts.map +1 -0
  476. package/lib/typescript/commonjs/testing/fake-engine.d.ts +91 -0
  477. package/lib/typescript/commonjs/testing/fake-engine.d.ts.map +1 -0
  478. package/lib/typescript/commonjs/testing/fake-provider.d.ts +35 -0
  479. package/lib/typescript/commonjs/testing/fake-provider.d.ts.map +1 -0
  480. package/lib/typescript/commonjs/testing/faults.d.ts +38 -0
  481. package/lib/typescript/commonjs/testing/faults.d.ts.map +1 -0
  482. package/lib/typescript/commonjs/testing/index.d.ts +22 -0
  483. package/lib/typescript/commonjs/testing/index.d.ts.map +1 -0
  484. package/lib/typescript/commonjs/testing/measure.d.ts +59 -0
  485. package/lib/typescript/commonjs/testing/measure.d.ts.map +1 -0
  486. package/lib/typescript/module/advanced.d.ts +36 -0
  487. package/lib/typescript/module/advanced.d.ts.map +1 -0
  488. package/lib/typescript/module/channel/migrate.d.ts +38 -0
  489. package/lib/typescript/module/channel/migrate.d.ts.map +1 -0
  490. package/lib/typescript/module/channel/tone-map.d.ts +34 -0
  491. package/lib/typescript/module/channel/tone-map.d.ts.map +1 -0
  492. package/lib/typescript/module/channel/validate-tone.d.ts +23 -0
  493. package/lib/typescript/module/channel/validate-tone.d.ts.map +1 -0
  494. package/lib/typescript/module/contract/channel.d.ts +185 -0
  495. package/lib/typescript/module/contract/channel.d.ts.map +1 -0
  496. package/lib/typescript/module/contract/diagnostics.d.ts +92 -0
  497. package/lib/typescript/module/contract/diagnostics.d.ts.map +1 -0
  498. package/lib/typescript/module/contract/errors.d.ts +91 -0
  499. package/lib/typescript/module/contract/errors.d.ts.map +1 -0
  500. package/lib/typescript/module/contract/hash.d.ts +14 -0
  501. package/lib/typescript/module/contract/hash.d.ts.map +1 -0
  502. package/lib/typescript/module/contract/index.d.ts +10 -0
  503. package/lib/typescript/module/contract/index.d.ts.map +1 -0
  504. package/lib/typescript/module/contract/interaction.d.ts +53 -0
  505. package/lib/typescript/module/contract/interaction.d.ts.map +1 -0
  506. package/lib/typescript/module/contract/notification.d.ts +110 -0
  507. package/lib/typescript/module/contract/notification.d.ts.map +1 -0
  508. package/lib/typescript/module/contract/permission.d.ts +49 -0
  509. package/lib/typescript/module/contract/permission.d.ts.map +1 -0
  510. package/lib/typescript/module/contract/reconcile.d.ts +82 -0
  511. package/lib/typescript/module/contract/reconcile.d.ts.map +1 -0
  512. package/lib/typescript/module/contract/recurrence.d.ts +118 -0
  513. package/lib/typescript/module/contract/recurrence.d.ts.map +1 -0
  514. package/lib/typescript/module/diagnostics/burst.d.ts +39 -0
  515. package/lib/typescript/module/diagnostics/burst.d.ts.map +1 -0
  516. package/lib/typescript/module/diagnostics/events.d.ts +28 -0
  517. package/lib/typescript/module/diagnostics/events.d.ts.map +1 -0
  518. package/lib/typescript/module/diagnostics/redact.d.ts +22 -0
  519. package/lib/typescript/module/diagnostics/redact.d.ts.map +1 -0
  520. package/lib/typescript/module/diagnostics/snapshot.d.ts +40 -0
  521. package/lib/typescript/module/diagnostics/snapshot.d.ts.map +1 -0
  522. package/lib/typescript/module/engine/adapter.d.ts +172 -0
  523. package/lib/typescript/module/engine/adapter.d.ts.map +1 -0
  524. package/lib/typescript/module/engine/codec.d.ts +20 -0
  525. package/lib/typescript/module/engine/codec.d.ts.map +1 -0
  526. package/lib/typescript/module/engine/notify-kit/events.d.ts +37 -0
  527. package/lib/typescript/module/engine/notify-kit/events.d.ts.map +1 -0
  528. package/lib/typescript/module/engine/notify-kit/module.d.ts +103 -0
  529. package/lib/typescript/module/engine/notify-kit/module.d.ts.map +1 -0
  530. package/lib/typescript/module/engine/notify-kit/platform/android.d.ts +3 -0
  531. package/lib/typescript/module/engine/notify-kit/platform/android.d.ts.map +1 -0
  532. package/lib/typescript/module/engine/notify-kit/platform/index.d.ts +12 -0
  533. package/lib/typescript/module/engine/notify-kit/platform/index.d.ts.map +1 -0
  534. package/lib/typescript/module/engine/notify-kit/platform/ios.d.ts +3 -0
  535. package/lib/typescript/module/engine/notify-kit/platform/ios.d.ts.map +1 -0
  536. package/lib/typescript/module/engine/notify-kit/platform/types.d.ts +33 -0
  537. package/lib/typescript/module/engine/notify-kit/platform/types.d.ts.map +1 -0
  538. package/lib/typescript/module/engine/notify-kit-engine.d.ts +25 -0
  539. package/lib/typescript/module/engine/notify-kit-engine.d.ts.map +1 -0
  540. package/lib/typescript/module/index.d.ts +106 -0
  541. package/lib/typescript/module/index.d.ts.map +1 -0
  542. package/lib/typescript/module/initialize.d.ts +74 -0
  543. package/lib/typescript/module/initialize.d.ts.map +1 -0
  544. package/lib/typescript/module/interaction/index.d.ts +53 -0
  545. package/lib/typescript/module/interaction/index.d.ts.map +1 -0
  546. package/lib/typescript/module/maintenance/cycle.d.ts +77 -0
  547. package/lib/typescript/module/maintenance/cycle.d.ts.map +1 -0
  548. package/lib/typescript/module/maintenance/permission-refresh.d.ts +19 -0
  549. package/lib/typescript/module/maintenance/permission-refresh.d.ts.map +1 -0
  550. package/lib/typescript/module/maintenance/reanchor.d.ts +26 -0
  551. package/lib/typescript/module/maintenance/reanchor.d.ts.map +1 -0
  552. package/lib/typescript/module/maintenance/toggle.d.ts +35 -0
  553. package/lib/typescript/module/maintenance/toggle.d.ts.map +1 -0
  554. package/lib/typescript/module/maintenance/verify.d.ts +32 -0
  555. package/lib/typescript/module/maintenance/verify.d.ts.map +1 -0
  556. package/lib/typescript/module/maintenance/window-refresh.d.ts +29 -0
  557. package/lib/typescript/module/maintenance/window-refresh.d.ts.map +1 -0
  558. package/lib/typescript/module/notifications.d.ts +78 -0
  559. package/lib/typescript/module/notifications.d.ts.map +1 -0
  560. package/lib/typescript/module/package.json +1 -0
  561. package/lib/typescript/module/permission/index.d.ts +57 -0
  562. package/lib/typescript/module/permission/index.d.ts.map +1 -0
  563. package/lib/typescript/module/permission/state.d.ts +41 -0
  564. package/lib/typescript/module/permission/state.d.ts.map +1 -0
  565. package/lib/typescript/module/push/envelope.d.ts +33 -0
  566. package/lib/typescript/module/push/envelope.d.ts.map +1 -0
  567. package/lib/typescript/module/push/fcm-provider.d.ts +43 -0
  568. package/lib/typescript/module/push/fcm-provider.d.ts.map +1 -0
  569. package/lib/typescript/module/push/gate.d.ts +57 -0
  570. package/lib/typescript/module/push/gate.d.ts.map +1 -0
  571. package/lib/typescript/module/push/index.d.ts +19 -0
  572. package/lib/typescript/module/push/index.d.ts.map +1 -0
  573. package/lib/typescript/module/push/instructions.d.ts +45 -0
  574. package/lib/typescript/module/push/instructions.d.ts.map +1 -0
  575. package/lib/typescript/module/push/provider-adapter.d.ts +50 -0
  576. package/lib/typescript/module/push/provider-adapter.d.ts.map +1 -0
  577. package/lib/typescript/module/push/signout.d.ts +33 -0
  578. package/lib/typescript/module/push/signout.d.ts.map +1 -0
  579. package/lib/typescript/module/reconcile/chunk.d.ts +24 -0
  580. package/lib/typescript/module/reconcile/chunk.d.ts.map +1 -0
  581. package/lib/typescript/module/reconcile/diff.d.ts +54 -0
  582. package/lib/typescript/module/reconcile/diff.d.ts.map +1 -0
  583. package/lib/typescript/module/reconcile/duplicates.d.ts +32 -0
  584. package/lib/typescript/module/reconcile/duplicates.d.ts.map +1 -0
  585. package/lib/typescript/module/reconcile/index.d.ts +35 -0
  586. package/lib/typescript/module/reconcile/index.d.ts.map +1 -0
  587. package/lib/typescript/module/reconcile/truncate.d.ts +26 -0
  588. package/lib/typescript/module/reconcile/truncate.d.ts.map +1 -0
  589. package/lib/typescript/module/recurrence/clock-guard.d.ts +37 -0
  590. package/lib/typescript/module/recurrence/clock-guard.d.ts.map +1 -0
  591. package/lib/typescript/module/recurrence/expand.d.ts +75 -0
  592. package/lib/typescript/module/recurrence/expand.d.ts.map +1 -0
  593. package/lib/typescript/module/recurrence/index.d.ts +40 -0
  594. package/lib/typescript/module/recurrence/index.d.ts.map +1 -0
  595. package/lib/typescript/module/repeat/expiry.d.ts +23 -0
  596. package/lib/typescript/module/repeat/expiry.d.ts.map +1 -0
  597. package/lib/typescript/module/repeat/index.d.ts +49 -0
  598. package/lib/typescript/module/repeat/index.d.ts.map +1 -0
  599. package/lib/typescript/module/repeat/marker.d.ts +36 -0
  600. package/lib/typescript/module/repeat/marker.d.ts.map +1 -0
  601. package/lib/typescript/module/repeat/place.d.ts +39 -0
  602. package/lib/typescript/module/repeat/place.d.ts.map +1 -0
  603. package/lib/typescript/module/schedule/anchor.d.ts +118 -0
  604. package/lib/typescript/module/schedule/anchor.d.ts.map +1 -0
  605. package/lib/typescript/module/schedule/index.d.ts +40 -0
  606. package/lib/typescript/module/schedule/index.d.ts.map +1 -0
  607. package/lib/typescript/module/schedule/partition.d.ts +29 -0
  608. package/lib/typescript/module/schedule/partition.d.ts.map +1 -0
  609. package/lib/typescript/module/schedule/resolve-moment.d.ts +35 -0
  610. package/lib/typescript/module/schedule/resolve-moment.d.ts.map +1 -0
  611. package/lib/typescript/module/schedule/validate-content.d.ts +42 -0
  612. package/lib/typescript/module/schedule/validate-content.d.ts.map +1 -0
  613. package/lib/typescript/module/schedule/validate-identifier.d.ts +30 -0
  614. package/lib/typescript/module/schedule/validate-identifier.d.ts.map +1 -0
  615. package/lib/typescript/module/schedule/writer.d.ts +36 -0
  616. package/lib/typescript/module/schedule/writer.d.ts.map +1 -0
  617. package/lib/typescript/module/state/caps.d.ts +51 -0
  618. package/lib/typescript/module/state/caps.d.ts.map +1 -0
  619. package/lib/typescript/module/state/dedup-ledger.d.ts +21 -0
  620. package/lib/typescript/module/state/dedup-ledger.d.ts.map +1 -0
  621. package/lib/typescript/module/state/interaction-buffer.d.ts +30 -0
  622. package/lib/typescript/module/state/interaction-buffer.d.ts.map +1 -0
  623. package/lib/typescript/module/state/mmkv-store.d.ts +33 -0
  624. package/lib/typescript/module/state/mmkv-store.d.ts.map +1 -0
  625. package/lib/typescript/module/state/permission-history.d.ts +20 -0
  626. package/lib/typescript/module/state/permission-history.d.ts.map +1 -0
  627. package/lib/typescript/module/state/record.d.ts +134 -0
  628. package/lib/typescript/module/state/record.d.ts.map +1 -0
  629. package/lib/typescript/module/state/reset.d.ts +22 -0
  630. package/lib/typescript/module/state/reset.d.ts.map +1 -0
  631. package/lib/typescript/module/state/series-ledger.d.ts +47 -0
  632. package/lib/typescript/module/state/series-ledger.d.ts.map +1 -0
  633. package/lib/typescript/module/state/store.d.ts +20 -0
  634. package/lib/typescript/module/state/store.d.ts.map +1 -0
  635. package/lib/typescript/module/testing/conformance/index.d.ts +32 -0
  636. package/lib/typescript/module/testing/conformance/index.d.ts.map +1 -0
  637. package/lib/typescript/module/testing/fake-engine.d.ts +91 -0
  638. package/lib/typescript/module/testing/fake-engine.d.ts.map +1 -0
  639. package/lib/typescript/module/testing/fake-provider.d.ts +35 -0
  640. package/lib/typescript/module/testing/fake-provider.d.ts.map +1 -0
  641. package/lib/typescript/module/testing/faults.d.ts +38 -0
  642. package/lib/typescript/module/testing/faults.d.ts.map +1 -0
  643. package/lib/typescript/module/testing/index.d.ts +22 -0
  644. package/lib/typescript/module/testing/index.d.ts.map +1 -0
  645. package/lib/typescript/module/testing/measure.d.ts +59 -0
  646. package/lib/typescript/module/testing/measure.d.ts.map +1 -0
  647. package/package.json +74 -23
  648. package/skills/sdk-rn-notification/SKILL.md +6 -5
  649. package/src/advanced.ts +35 -0
  650. package/src/channel/migrate.ts +176 -158
  651. package/src/channel/tone-map.ts +2 -10
  652. package/src/contract/errors.ts +7 -0
  653. package/src/contract/hash.ts +26 -0
  654. package/src/engine/adapter.ts +21 -1
  655. package/src/engine/notify-kit/events.ts +155 -0
  656. package/src/engine/notify-kit/module.ts +148 -0
  657. package/src/engine/notify-kit/platform/android.ts +172 -0
  658. package/src/engine/notify-kit/platform/index.ts +55 -0
  659. package/src/engine/notify-kit/platform/ios.ts +54 -0
  660. package/src/engine/notify-kit/platform/types.ts +40 -0
  661. package/src/engine/notify-kit-engine.ts +96 -477
  662. package/src/index.ts +9 -0
  663. package/src/notifications.ts +195 -0
  664. package/src/permission/index.ts +65 -4
  665. package/src/push/fcm-provider.ts +14 -4
  666. package/src/push/gate.ts +27 -5
  667. package/src/reconcile/diff.ts +38 -27
  668. package/src/reconcile/index.ts +13 -4
  669. package/src/recurrence/index.ts +2 -1
  670. package/src/repeat/expiry.ts +2 -6
  671. package/src/repeat/index.ts +45 -1
  672. package/src/repeat/marker.ts +1 -22
  673. package/src/repeat/place.ts +74 -35
  674. package/src/schedule/index.ts +10 -4
  675. package/src/schedule/partition.ts +0 -19
  676. package/src/schedule/validate-identifier.ts +8 -6
  677. package/src/schedule/writer.ts +13 -4
  678. package/src/state/caps.ts +28 -3
  679. package/src/state/permission-history.ts +25 -0
  680. package/src/state/record.ts +110 -20
  681. package/src/testing/fake-engine.ts +17 -1
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Tone-to-platform mapping.
5
+ *
6
+ * A tone is declared once and realized on each platform here, so consumer code
7
+ * contains zero platform branches. The two platforms model urgency differently
8
+ * — Android by channel importance, iOS by interruption level — and reconciling
9
+ * that difference is exactly the work this package exists to absorb.
10
+ *
11
+ * The channel id carries the tone version. Android channels are immutable once
12
+ * created and re-declaration is silently ignored, so a configuration change has
13
+ * to produce a *new* channel or it will never reach a device that already holds
14
+ * the old one.
15
+ */
16
+
17
+ import { fnv1a, hex8 } from "../contract/hash.js";
18
+ const ANDROID_IMPORTANCE = {
19
+ min: 'min',
20
+ low: 'low',
21
+ default: 'default',
22
+ high: 'high',
23
+ // Android has no level above `high`; max urgency is expressed by the DND
24
+ // bypass rather than by a distinct importance.
25
+ max: 'high'
26
+ };
27
+ const IOS_INTERRUPTION = {
28
+ min: 'passive',
29
+ low: 'passive',
30
+ default: 'active',
31
+ high: 'active',
32
+ // `timeSensitive` is the highest level available without the Critical Alerts
33
+ // entitlement, which is out of scope for v1.
34
+ max: 'timeSensitive'
35
+ };
36
+
37
+ /** Channel id for a tone at a given version. Stable, derived, never random. */
38
+ export function channelIdFor(toneId, version) {
39
+ return `${toneId}.v${version}`;
40
+ }
41
+
42
+ /** Extracts the tone and version encoded in a channel id, if it is one of ours. */
43
+ export function parseChannelId(channelId) {
44
+ const separator = channelId.lastIndexOf('.v');
45
+ if (separator === -1) return undefined;
46
+ const version = Number.parseInt(channelId.slice(separator + 2), 10);
47
+ if (!Number.isInteger(version) || version < 1) return undefined;
48
+ return {
49
+ toneId: channelId.slice(0, separator),
50
+ version
51
+ };
52
+ }
53
+ export function resolveTone(tone) {
54
+ const silent = tone.sound?.enabled === false;
55
+ const repeats = tone.repeatAlert !== undefined;
56
+ return {
57
+ toneId: tone.id,
58
+ version: tone.version,
59
+ android: {
60
+ channelId: channelIdFor(tone.id, tone.version),
61
+ // The declared label, not the identifier. Passing the identifier here
62
+ // is what put a technical string on the one screen these exist for.
63
+ name: tone.name,
64
+ description: tone.description,
65
+ importance: ANDROID_IMPORTANCE[tone.urgency],
66
+ sound: silent ? undefined : tone.sound?.name,
67
+ vibration: tone.vibration ?? false,
68
+ badge: tone.badge ?? false,
69
+ bypassDnd: tone.bypassDoNotDisturb ?? false,
70
+ groupId: tone.groupId,
71
+ // Both are per-notification rather than channel configuration, which
72
+ // is precisely why neither obliges a consumer to bump `version`.
73
+ loopSound: repeats,
74
+ alarmCategory: tone.timeSensitive ?? false,
75
+ repeatForMs: tone.repeatAlert?.forMs
76
+ },
77
+ ios: {
78
+ // iOS categories are not versioned: they carry actions rather than
79
+ // user-adjustable settings, so re-declaring one is harmless.
80
+ categoryId: tone.id,
81
+ interruptionLevel: tone.timeSensitive === true ? 'timeSensitive' : IOS_INTERRUPTION[tone.urgency],
82
+ sound: silent ? undefined : tone.sound?.name,
83
+ badge: tone.badge ?? false,
84
+ // iOS exposes no looping-sound API at all. Recorded as data so the
85
+ // refusal can be reported rather than discovered.
86
+ repeatRefused: repeats
87
+ }
88
+ };
89
+ }
90
+
91
+ /**
92
+ * A stable fingerprint of a tone's user-visible labels.
93
+ *
94
+ * Lets an unchanged configuration skip the platform entirely, which is what
95
+ * keeps "re-applying changes nothing" literally true rather than merely
96
+ * approximately true. A hash rather than the labels themselves, so persisted
97
+ * state continues to hold no consumer-supplied text.
98
+ */
99
+ export function toneLabelFingerprint(tone) {
100
+ // The separator matters: without it, a name of "ab" with description "c" and
101
+ // a name of "a" with description "bc" would fingerprint identically, and one
102
+ // of the two would never get its correction.
103
+ const source = `${tone.name}\u0000${tone.description ?? ''}`;
104
+ return hex8(fnv1a(source));
105
+ }
106
+
107
+ /** Builds a lookup over a declared configuration. */
108
+ export function createToneResolver(tones) {
109
+ const resolved = new Map(tones.map(tone => [tone.id, resolveTone(tone)]));
110
+ return toneId => resolved.get(toneId);
111
+ }
112
+ //# sourceMappingURL=tone-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fnv1a","hex8","ANDROID_IMPORTANCE","min","low","default","high","max","IOS_INTERRUPTION","channelIdFor","toneId","version","parseChannelId","channelId","separator","lastIndexOf","undefined","Number","parseInt","slice","isInteger","resolveTone","tone","silent","sound","enabled","repeats","repeatAlert","id","android","name","description","importance","urgency","vibration","badge","bypassDnd","bypassDoNotDisturb","groupId","loopSound","alarmCategory","timeSensitive","repeatForMs","forMs","ios","categoryId","interruptionLevel","repeatRefused","toneLabelFingerprint","source","createToneResolver","tones","resolved","Map","map","get"],"sourceRoot":"../../../src","sources":["channel/tone-map.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Tone declaration validation.
5
+ *
6
+ * Runs before the first engine call, like every other validation in this
7
+ * package: a rejected declaration must leave the device exactly as it was.
8
+ *
9
+ * Only the new alert attributes are checked here. The rest of a tone has always
10
+ * been validated by the platform's own charset and shape rules, and duplicating
11
+ * those would create two sources of truth for the same constraint.
12
+ */
13
+
14
+ import { REPEAT_ALERT_BOUNDS } from "../contract/channel.js";
15
+ import { DIAGNOSTIC_CODES, NotificationError } from "../contract/errors.js";
16
+
17
+ /**
18
+ * Throws when a tone's repeating alert is unusable.
19
+ *
20
+ * The type already forbids a repeat without a duration. What it cannot forbid
21
+ * is a duration of zero, a fractional millisecond, or an hour and a half — and
22
+ * an alert that repeats for an unchecked span is the failure this whole feature
23
+ * exists to prevent.
24
+ */
25
+ export function validateToneDeclaration(tone) {
26
+ const repeat = tone.repeatAlert;
27
+ if (repeat === undefined) return;
28
+ if (!Number.isInteger(repeat.forMs)) {
29
+ throw new NotificationError(DIAGNOSTIC_CODES.INVALID_TONE_REPEAT, `Tone "${tone.id}" declared a repeating alert whose duration is not a whole number of milliseconds.`, {
30
+ toneId: tone.id,
31
+ forMs: repeat.forMs
32
+ });
33
+ }
34
+ if (repeat.forMs < REPEAT_ALERT_BOUNDS.minMs || repeat.forMs > REPEAT_ALERT_BOUNDS.maxMs) {
35
+ throw new NotificationError(DIAGNOSTIC_CODES.INVALID_TONE_REPEAT, `Tone "${tone.id}" declared a repeating alert of ${repeat.forMs}ms, outside the permitted ${REPEAT_ALERT_BOUNDS.minMs}–${REPEAT_ALERT_BOUNDS.maxMs}ms range. A shorter repeat is indistinguishable from a single chime; a longer one outlasts anyone's willingness to respond.`, {
36
+ toneId: tone.id,
37
+ forMs: repeat.forMs,
38
+ ...REPEAT_ALERT_BOUNDS
39
+ });
40
+ }
41
+ if (tone.sound?.enabled === false) {
42
+ // Two instructions that cannot both be honoured. Picking one silently
43
+ // would ship whichever the reader did not expect, and the consumer would
44
+ // discover it on a device rather than here.
45
+ throw new NotificationError(DIAGNOSTIC_CODES.INVALID_TONE_REPEAT, `Tone "${tone.id}" declares both a repeating alert and a silent sound. Repeating silence is not a behaviour; drop one of the two.`, {
46
+ toneId: tone.id
47
+ });
48
+ }
49
+ }
50
+
51
+ /** Validates a whole configuration before any of it is applied. */
52
+ export function validateToneDeclarations(tones) {
53
+ for (const tone of tones) {
54
+ validateToneDeclaration(tone);
55
+ }
56
+ }
57
+ //# sourceMappingURL=validate-tone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["REPEAT_ALERT_BOUNDS","DIAGNOSTIC_CODES","NotificationError","validateToneDeclaration","tone","repeat","repeatAlert","undefined","Number","isInteger","forMs","INVALID_TONE_REPEAT","id","toneId","minMs","maxMs","sound","enabled","validateToneDeclarations","tones"],"sourceRoot":"../../../src","sources":["channel/validate-tone.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,mBAAmB,QAAQ,wBAAqB;AACzD,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,uBAAoB;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CAACC,IAAqB,EAAQ;EACpE,MAAMC,MAAM,GAAGD,IAAI,CAACE,WAAW;EAC/B,IAAID,MAAM,KAAKE,SAAS,EAAE;EAE1B,IAAI,CAACC,MAAM,CAACC,SAAS,CAACJ,MAAM,CAACK,KAAK,CAAC,EAAE;IACpC,MAAM,IAAIR,iBAAiB,CAC1BD,gBAAgB,CAACU,mBAAmB,EACpC,SAASP,IAAI,CAACQ,EAAE,oFAAoF,EACpG;MAAEC,MAAM,EAAET,IAAI,CAACQ,EAAE;MAAEF,KAAK,EAAEL,MAAM,CAACK;IAAM,CACxC,CAAC;EACF;EAEA,IAAIL,MAAM,CAACK,KAAK,GAAGV,mBAAmB,CAACc,KAAK,IAAIT,MAAM,CAACK,KAAK,GAAGV,mBAAmB,CAACe,KAAK,EAAE;IACzF,MAAM,IAAIb,iBAAiB,CAC1BD,gBAAgB,CAACU,mBAAmB,EACpC,SAASP,IAAI,CAACQ,EAAE,mCAAmCP,MAAM,CAACK,KAAK,6BAA6BV,mBAAmB,CAACc,KAAK,IAAId,mBAAmB,CAACe,KAAK,6HAA6H,EAC/Q;MAAEF,MAAM,EAAET,IAAI,CAACQ,EAAE;MAAEF,KAAK,EAAEL,MAAM,CAACK,KAAK;MAAE,GAAGV;IAAoB,CAChE,CAAC;EACF;EAEA,IAAII,IAAI,CAACY,KAAK,EAAEC,OAAO,KAAK,KAAK,EAAE;IAClC;IACA;IACA;IACA,MAAM,IAAIf,iBAAiB,CAC1BD,gBAAgB,CAACU,mBAAmB,EACpC,SAASP,IAAI,CAACQ,EAAE,kHAAkH,EAClI;MAAEC,MAAM,EAAET,IAAI,CAACQ;IAAG,CACnB,CAAC;EACF;AACD;;AAEA;AACA,OAAO,SAASM,wBAAwBA,CAACC,KAAiC,EAAQ;EACjF,KAAK,MAAMf,IAAI,IAAIe,KAAK,EAAE;IACzBhB,uBAAuB,CAACC,IAAI,CAAC;EAC9B;AACD","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Channel, category, and tone declaration types.
5
+ *
6
+ * A tone is declared once and mapped by the package to each platform's
7
+ * equivalent concepts, so consumer code contains no platform branches.
8
+ *
9
+ * Two tones must never be merged into one: channel configuration belongs to
10
+ * the user, and collapsing two tones collapses two independent user choices.
11
+ */
12
+
13
+ /** How insistently a notification asks for attention. */
14
+
15
+ /**
16
+ * A repeating alert and the bound on how long it may repeat.
17
+ *
18
+ * The two are one object rather than two fields because an unbounded repeating
19
+ * alert must be *unrepresentable*, not merely discouraged. A boolean `repeat`
20
+ * beside an optional duration would make the dangerous state the easiest one to
21
+ * write, and the dangerous state here is a phone that keeps sounding until its
22
+ * owner comes home to it.
23
+ */
24
+
25
+ /**
26
+ * The declarable range for a repeating alert.
27
+ *
28
+ * The floor exists because a repeat shorter than a minute is indistinguishable
29
+ * from a single chime and buys nothing for the complexity it costs. The ceiling
30
+ * exists because an hour is already past the point where a person who has not
31
+ * responded is going to.
32
+ */
33
+ export const REPEAT_ALERT_BOUNDS = {
34
+ minMs: 60_000,
35
+ maxMs: 3_600_000
36
+ };
37
+
38
+ /** What a tone resolves to on each platform. Internal to the engine adapter. */
39
+
40
+ /**
41
+ * Outcome of applying a channel configuration, including any migration performed.
42
+ *
43
+ * A tone appears in exactly one of `created`, `migrated`, `labelsRefreshed`, and
44
+ * `unchanged`. The `*Unavailable` arrays are orthogonal and may accompany any of
45
+ * them: a platform refusing an attribute says nothing about whether the tone was
46
+ * newly created.
47
+ */
48
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["REPEAT_ALERT_BOUNDS","minMs","maxMs"],"sourceRoot":"../../../src","sources":["contract/channel.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,mBAAmB,GAAG;EAClCC,KAAK,EAAE,MAAM;EACbC,KAAK,EAAE;AACR,CAAU;;AA6DV;;AAgDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Diagnostics and configuration types.
5
+ *
6
+ * The package's stated purpose is to make invisible notification failures
7
+ * diagnosable, so every lifecycle transition emits a structured event with a
8
+ * stable identifier — and none of those events carries content by default.
9
+ */
10
+
11
+ /** Health of one persisted collection against its cap. */
12
+
13
+ /** The readable answer to "why didn't it arrive". */
14
+
15
+ /** Abnormal notification volume. Reported, never acted upon. */
16
+
17
+ export const DEFAULT_BURST_THRESHOLD = {
18
+ perMinute: 10,
19
+ perHour: 60
20
+ };
21
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_BURST_THRESHOLD","perMinute","perHour"],"sourceRoot":"../../../src","sources":["contract/diagnostics.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA;;AAgBA;;AAgBA;;AAMA,OAAO,MAAMA,uBAAuC,GAAG;EACtDC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAE;AACV,CAAC","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Typed error taxonomy and stable diagnostic identifiers.
5
+ *
6
+ * Every failure condition carries its own identifier. None collapses into a
7
+ * generic failure — an error that says only "scheduling failed" reproduces the
8
+ * problem this package exists to solve.
9
+ *
10
+ * Identifiers are stable across releases and safe to switch on. Adding new ones
11
+ * is an additive minor change.
12
+ *
13
+ * See `specs/009-rn-notification-package/contracts/errors.md`.
14
+ */
15
+
16
+ import { SdkError } from '@chipmobilesdk/rn-core';
17
+ import { redactContext } from "../diagnostics/redact.js";
18
+ export const DIAGNOSTIC_CODES = {
19
+ // --- Validation: raised before any platform call -------------------------
20
+ INVALID_ID_EMPTY: 'INVALID_ID_EMPTY',
21
+ INVALID_ID_LENGTH: 'INVALID_ID_LENGTH',
22
+ INVALID_ID_CHARSET: 'INVALID_ID_CHARSET',
23
+ INVALID_OWNER_TAG: 'INVALID_OWNER_TAG',
24
+ INVALID_GROUP_TAG: 'INVALID_GROUP_TAG',
25
+ MOMENT_IN_PAST: 'MOMENT_IN_PAST',
26
+ UNDECLARED_TONE: 'UNDECLARED_TONE',
27
+ ROUTING_PAYLOAD_TOO_LARGE: 'ROUTING_PAYLOAD_TOO_LARGE',
28
+ CONTENT_TOO_LARGE: 'CONTENT_TOO_LARGE',
29
+ TOO_MANY_ACTIONS: 'TOO_MANY_ACTIONS',
30
+ INVALID_RECURRENCE: 'INVALID_RECURRENCE',
31
+ INVALID_TONE_REPEAT: 'INVALID_TONE_REPEAT',
32
+ // --- Reconciliation ------------------------------------------------------
33
+ DUPLICATE_IDENTIFIER: 'DUPLICATE_IDENTIFIER',
34
+ TRUNCATED_OVER_CEILING: 'TRUNCATED_OVER_CEILING',
35
+ RECONCILE_INTERRUPTED: 'RECONCILE_INTERRUPTED',
36
+ PENDING_SET_DISCREPANCY: 'PENDING_SET_DISCREPANCY',
37
+ // --- Permissions ---------------------------------------------------------
38
+ DISPLAY_PERMISSION_DENIED: 'DISPLAY_PERMISSION_DENIED',
39
+ DISPLAY_PERMISSION_PERMANENT: 'DISPLAY_PERMISSION_PERMANENT',
40
+ EXACT_ALARM_UNAVAILABLE: 'EXACT_ALARM_UNAVAILABLE',
41
+ SETTINGS_UNAVAILABLE: 'SETTINGS_UNAVAILABLE',
42
+ BACKGROUND_RESTRICTED: 'BACKGROUND_RESTRICTED',
43
+ BACKGROUND_RESTRICTION_UNKNOWN: 'BACKGROUND_RESTRICTION_UNKNOWN',
44
+ // --- Channels ------------------------------------------------------------
45
+ CHANNEL_MIGRATION_REQUIRED: 'CHANNEL_MIGRATION_REQUIRED',
46
+ CHANNEL_MIGRATION_FAILED: 'CHANNEL_MIGRATION_FAILED',
47
+ CHANNEL_ORPHANS_FOUND: 'CHANNEL_ORPHANS_FOUND',
48
+ DND_BYPASS_UNAVAILABLE: 'DND_BYPASS_UNAVAILABLE',
49
+ TONE_LABELS_REFRESHED: 'TONE_LABELS_REFRESHED',
50
+ REPEAT_ALERT_UNAVAILABLE: 'REPEAT_ALERT_UNAVAILABLE',
51
+ REPEAT_STOP_HANDLER_MISSING: 'REPEAT_STOP_HANDLER_MISSING',
52
+ // --- Interaction ---------------------------------------------------------
53
+ TARGET_MISSING: 'TARGET_MISSING',
54
+ INTERACTION_BUFFER_EVICTED: 'INTERACTION_BUFFER_EVICTED',
55
+ BACKGROUND_WINDOW_EXCEEDED: 'BACKGROUND_WINDOW_EXCEEDED',
56
+ // --- Push ----------------------------------------------------------------
57
+ PUSH_UNAVAILABLE: 'PUSH_UNAVAILABLE',
58
+ TOKEN_UNAVAILABLE: 'TOKEN_UNAVAILABLE',
59
+ TOKEN_INVALIDATION_FAILED: 'TOKEN_INVALIDATION_FAILED',
60
+ PAYLOAD_MALFORMED: 'PAYLOAD_MALFORMED',
61
+ PAYLOAD_VERSION_SKEW: 'PAYLOAD_VERSION_SKEW',
62
+ PAYLOAD_DUPLICATE: 'PAYLOAD_DUPLICATE',
63
+ PUSH_UNDELIVERABLE: 'PUSH_UNDELIVERABLE',
64
+ // --- Persisted state -----------------------------------------------------
65
+ STATE_CORRUPT_REBUILT: 'STATE_CORRUPT_REBUILT',
66
+ STATE_WRITE_FAILED: 'STATE_WRITE_FAILED',
67
+ /** The durable store could not open; state lasts for this session only. */
68
+ STATE_STORE_DEGRADED: 'STATE_STORE_DEGRADED',
69
+ STATE_CAP_EVICTED: 'STATE_CAP_EVICTED',
70
+ /**
71
+ * A ledger holds more live entries than its cap (0.6.0). They are all kept:
72
+ * dropping a live series or channel record would lose a migration or reset a
73
+ * series count. Reported so the cap can be raised or the app's use reviewed.
74
+ */
75
+ STATE_CAP_EXCEEDED: 'STATE_CAP_EXCEEDED',
76
+ // --- Volume --------------------------------------------------------------
77
+ BURST_THRESHOLD_EXCEEDED: 'BURST_THRESHOLD_EXCEEDED',
78
+ // --- Maintenance (0.4.0) -------------------------------------------------
79
+ /** An automatic maintenance cycle threw. Reported here because no caller awaits it. */
80
+ MAINTENANCE_FAILED: 'MAINTENANCE_FAILED'
81
+ };
82
+ /** Every identifier, for exhaustiveness tests and the documentation table. */
83
+ export const ALL_DIAGNOSTIC_CODES = Object.freeze(Object.values(DIAGNOSTIC_CODES));
84
+
85
+ /**
86
+ * A typed package failure.
87
+ *
88
+ * Carries enough context to choose a recovery, and never carries notification
89
+ * body text, routing payload values, or token material. Where a value violated
90
+ * a rule, the *shape* of the violation is reported — a length, a character
91
+ * position — rather than the value itself.
92
+ */
93
+ export class NotificationError extends SdkError {
94
+ constructor(code, message, context) {
95
+ super('rn-notification', code, {
96
+ message
97
+ });
98
+ this.name = 'NotificationError';
99
+ // Redacted on the way in: an error object reaches crash reporters, which
100
+ // never run with verbose diagnostics.
101
+ const redacted = redactContext(context, false);
102
+ if (redacted !== undefined) {
103
+ this.context = redacted;
104
+ }
105
+ }
106
+ }
107
+ export function isNotificationError(value) {
108
+ return value instanceof NotificationError;
109
+ }
110
+
111
+ /**
112
+ * Conditions that are reported outcomes rather than failures: the operation
113
+ * succeeded, and something the caller needs to know happened alongside it.
114
+ */
115
+ export const NON_FAILURE_CODES = Object.freeze([DIAGNOSTIC_CODES.TRUNCATED_OVER_CEILING, DIAGNOSTIC_CODES.PENDING_SET_DISCREPANCY, DIAGNOSTIC_CODES.EXACT_ALARM_UNAVAILABLE, DIAGNOSTIC_CODES.TARGET_MISSING, DIAGNOSTIC_CODES.BURST_THRESHOLD_EXCEEDED, DIAGNOSTIC_CODES.PAYLOAD_VERSION_SKEW, DIAGNOSTIC_CODES.PAYLOAD_DUPLICATE, DIAGNOSTIC_CODES.STATE_CAP_EVICTED, DIAGNOSTIC_CODES.STATE_CAP_EXCEEDED, DIAGNOSTIC_CODES.STATE_CORRUPT_REBUILT, DIAGNOSTIC_CODES.BACKGROUND_RESTRICTION_UNKNOWN, DIAGNOSTIC_CODES.DND_BYPASS_UNAVAILABLE, DIAGNOSTIC_CODES.TONE_LABELS_REFRESHED, DIAGNOSTIC_CODES.REPEAT_ALERT_UNAVAILABLE, DIAGNOSTIC_CODES.REPEAT_STOP_HANDLER_MISSING]);
116
+ export function isNonFailure(code) {
117
+ return NON_FAILURE_CODES.includes(code);
118
+ }
119
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SdkError","redactContext","DIAGNOSTIC_CODES","INVALID_ID_EMPTY","INVALID_ID_LENGTH","INVALID_ID_CHARSET","INVALID_OWNER_TAG","INVALID_GROUP_TAG","MOMENT_IN_PAST","UNDECLARED_TONE","ROUTING_PAYLOAD_TOO_LARGE","CONTENT_TOO_LARGE","TOO_MANY_ACTIONS","INVALID_RECURRENCE","INVALID_TONE_REPEAT","DUPLICATE_IDENTIFIER","TRUNCATED_OVER_CEILING","RECONCILE_INTERRUPTED","PENDING_SET_DISCREPANCY","DISPLAY_PERMISSION_DENIED","DISPLAY_PERMISSION_PERMANENT","EXACT_ALARM_UNAVAILABLE","SETTINGS_UNAVAILABLE","BACKGROUND_RESTRICTED","BACKGROUND_RESTRICTION_UNKNOWN","CHANNEL_MIGRATION_REQUIRED","CHANNEL_MIGRATION_FAILED","CHANNEL_ORPHANS_FOUND","DND_BYPASS_UNAVAILABLE","TONE_LABELS_REFRESHED","REPEAT_ALERT_UNAVAILABLE","REPEAT_STOP_HANDLER_MISSING","TARGET_MISSING","INTERACTION_BUFFER_EVICTED","BACKGROUND_WINDOW_EXCEEDED","PUSH_UNAVAILABLE","TOKEN_UNAVAILABLE","TOKEN_INVALIDATION_FAILED","PAYLOAD_MALFORMED","PAYLOAD_VERSION_SKEW","PAYLOAD_DUPLICATE","PUSH_UNDELIVERABLE","STATE_CORRUPT_REBUILT","STATE_WRITE_FAILED","STATE_STORE_DEGRADED","STATE_CAP_EVICTED","STATE_CAP_EXCEEDED","BURST_THRESHOLD_EXCEEDED","MAINTENANCE_FAILED","ALL_DIAGNOSTIC_CODES","Object","freeze","values","NotificationError","constructor","code","message","context","name","redacted","undefined","isNotificationError","value","NON_FAILURE_CODES","isNonFailure","includes"],"sourceRoot":"../../../src","sources":["contract/errors.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * FNV-1a, 32-bit: the package's one hash (NOT-19). Deterministic,
5
+ * dependency-free, and stable across releases.
6
+ *
7
+ * Bitwise operators are the algorithm, not a micro-optimisation: arithmetic
8
+ * equivalents would not wrap to 32 bits. Stability matters: a marker id or a
9
+ * label fingerprint that changed between releases would orphan every marker
10
+ * already scheduled, or refresh every channel label once more.
11
+ */
12
+ export const FNV_OFFSET_BASIS = 0x811c9dc5;
13
+
14
+ /* eslint-disable no-bitwise */
15
+ export function fnv1a(value, basis = FNV_OFFSET_BASIS) {
16
+ let hash = basis;
17
+ for (let index = 0; index < value.length; index += 1) {
18
+ hash ^= value.codePointAt(index) ?? 0;
19
+ hash = Math.imul(hash, 0x01000193) >>> 0;
20
+ }
21
+ return hash >>> 0;
22
+ }
23
+ /* eslint-enable no-bitwise */
24
+
25
+ /** Eight lowercase hex digits. */
26
+ export function hex8(value) {
27
+ return value.toString(16).padStart(8, '0');
28
+ }
29
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FNV_OFFSET_BASIS","fnv1a","value","basis","hash","index","length","codePointAt","Math","imul","hex8","toString","padStart"],"sourceRoot":"../../../src","sources":["contract/hash.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAgB,GAAG,UAAU;;AAE1C;AACA,OAAO,SAASC,KAAKA,CAACC,KAAa,EAAEC,KAAa,GAAGH,gBAAgB,EAAU;EAC9E,IAAII,IAAI,GAAGD,KAAK;EAChB,KAAK,IAAIE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGH,KAAK,CAACI,MAAM,EAAED,KAAK,IAAI,CAAC,EAAE;IACrDD,IAAI,IAAIF,KAAK,CAACK,WAAW,CAACF,KAAK,CAAC,IAAI,CAAC;IACrCD,IAAI,GAAGI,IAAI,CAACC,IAAI,CAACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;EACzC;EACA,OAAOA,IAAI,KAAK,CAAC;AAClB;AACA;;AAEA;AACA,OAAO,SAASM,IAAIA,CAACR,KAAa,EAAU;EAC3C,OAAOA,KAAK,CAACS,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC3C","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ /** Public contract types. Types only — no logic lives in this layer. */
4
+
5
+ export * from "./notification.js";
6
+ export * from "./recurrence.js";
7
+ export * from "./reconcile.js";
8
+ export * from "./permission.js";
9
+ export * from "./channel.js";
10
+ export * from "./interaction.js";
11
+ export * from "./diagnostics.js";
12
+ export * from "./errors.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["contract/index.ts"],"mappings":";;AAAA;;AAEA,cAAc,mBAAgB;AAC9B,cAAc,iBAAc;AAC5B,cAAc,gBAAa;AAC3B,cAAc,iBAAc;AAC5B,cAAc,cAAW;AACzB,cAAc,kBAAe;AAC7B,cAAc,kBAAe;AAC7B,cAAc,aAAU","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Interaction types.
5
+ *
6
+ * One event shape covers foreground, background, and cold start, so a consumer
7
+ * writes one handler. Events that occur before a handler registers are buffered
8
+ * durably and delivered on registration — the cold-start case is the one most
9
+ * integrations quietly get wrong.
10
+ */
11
+
12
+ /** Which app state the interaction arrived in. Informational; the shape never varies. */
13
+
14
+ /**
15
+ * Signals the routing target no longer exists.
16
+ *
17
+ * The consumer chooses its own fallback screen. A platform error is never
18
+ * shown to the user for this — a notification pointing at deleted data is an
19
+ * ordinary condition, not a crash.
20
+ */
21
+
22
+ /** Limits on the durable interaction buffer, so it can never grow without bound. */
23
+ export const INTERACTION_BUFFER_LIMITS = {
24
+ maxEntries: 50,
25
+ retentionMs: 7 * 24 * 60 * 60 * 1000
26
+ };
27
+
28
+ /** Maximum size of a routing payload, validated at schedule time rather than discovered at tap time. */
29
+ export const MAX_ROUTING_PAYLOAD_BYTES = 4 * 1024;
30
+
31
+ /** Maximum action buttons on one notification. */
32
+ export const MAX_ACTIONS_PER_NOTIFICATION = 10;
33
+ //# sourceMappingURL=interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["INTERACTION_BUFFER_LIMITS","maxEntries","retentionMs","MAX_ROUTING_PAYLOAD_BYTES","MAX_ACTIONS_PER_NOTIFICATION"],"sourceRoot":"../../../src","sources":["contract/interaction.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA,OAAO,MAAMA,yBAAyB,GAAG;EACxCC,UAAU,EAAE,EAAE;EACdC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACjC,CAAU;;AAEV;AACA,OAAO,MAAMC,yBAAyB,GAAG,CAAC,GAAG,IAAI;;AAEjD;AACA,OAAO,MAAMC,4BAA4B,GAAG,EAAE","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Core notification request types.
5
+ *
6
+ * Nothing here carries business meaning. The package accepts fully-described
7
+ * requests and is responsible only for delivering them at the right moment.
8
+ */
9
+
10
+ /**
11
+ * How a delivery moment is pinned to the passage of time.
12
+ *
13
+ * - `wallClock` — the local clock time named. An 08:00 reminder stays 08:00
14
+ * after the user crosses a time zone. This is the default, because reminders
15
+ * are wall-clock things and a caller who does not choose should get what
16
+ * their users expect.
17
+ * - `absolute` — one fixed instant worldwide, unaffected by zone changes.
18
+ */
19
+
20
+ export const DEFAULT_ANCHORING_MODE = 'wallClock';
21
+
22
+ /** When a notification should be presented, and how that moment is anchored. */
23
+
24
+ /**
25
+ * Resolved display strings. The package performs no translation, formatting,
26
+ * or locale resolution — only the consuming app knows its content model.
27
+ */
28
+
29
+ /** Structured data carried to the interaction handler, unchanged. */
30
+
31
+ /** A button on a notification. */
32
+
33
+ /** The complete, self-contained description of one notification. */
34
+
35
+ /** One entry the platform is currently holding, in enough detail to diff against intent. */
36
+
37
+ /** Outcome of a single schedule call. */
38
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_ANCHORING_MODE"],"sourceRoot":"../../../src","sources":["contract/notification.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,sBAAqC,GAAG,WAAW;;AAEhE;;AAQA;AACA;AACA;AACA;;AAQA;;AAGA;;AAiBA;;AAmBA;;AA4BA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["contract/permission.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["contract/reconcile.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Recurrence declaration types.
5
+ *
6
+ * A caller declares a rule once; the package expands it inside a finite
7
+ * lookahead window. No caller ever writes an expansion loop, and no unbounded
8
+ * series is ever handed to the platform.
9
+ */
10
+
11
+ /** Days of the week, `0` = Sunday, matching `Date.prototype.getDay`. */
12
+
13
+ /** Every day at the declared clock time. */
14
+
15
+ /** Selected weekdays at the declared clock time. */
16
+
17
+ /**
18
+ * A fixed day of the month at the declared clock time.
19
+ *
20
+ * Months shorter than `dayOfMonth` are skipped rather than clamped: a caller
21
+ * asking for the 31st means the 31st, and inventing the 28th would be the
22
+ * package deciding something it was not asked to decide.
23
+ */
24
+
25
+ /** When a series stops producing occurrences. */
26
+
27
+ /** Content shared by every occurrence of a series. Identity and moment are derived. */
28
+
29
+ /**
30
+ * How far ahead occurrences are registered with the platform.
31
+ *
32
+ * Bounded by both a duration and a count because either alone fails: a duration
33
+ * alone lets a frequent series exhaust the platform ceiling, and a count alone
34
+ * leaves an annual series scheduled a decade out.
35
+ */
36
+
37
+ export const DEFAULT_LOOKAHEAD = {
38
+ days: 60,
39
+ occurrencesPerSeries: 32
40
+ };
41
+
42
+ /** Bounds on consumer adjustment, because the platform ceiling is not negotiable. */
43
+ export const LOOKAHEAD_BOUNDS = {
44
+ minDays: 1,
45
+ maxDays: 365,
46
+ minOccurrences: 1,
47
+ maxOccurrences: 64
48
+ };
49
+ //# sourceMappingURL=recurrence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_LOOKAHEAD","days","occurrencesPerSeries","LOOKAHEAD_BOUNDS","minDays","maxDays","minOccurrences","maxOccurrences"],"sourceRoot":"../../../src","sources":["contract/recurrence.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAGA;;AASA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYA;;AAMA;;AAyBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,OAAO,MAAMA,iBAAkC,GAAG;EACjDC,IAAI,EAAE,EAAE;EACRC,oBAAoB,EAAE;AACvB,CAAC;;AAED;AACA,OAAO,MAAMC,gBAAgB,GAAG;EAC/BC,OAAO,EAAE,CAAC;EACVC,OAAO,EAAE,GAAG;EACZC,cAAc,EAAE,CAAC;EACjBC,cAAc,EAAE;AACjB,CAAU","ignoreList":[]}