@juspay/shooter 1.9.0 → 1.9.1

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 (102) hide show
  1. package/.claude/hooks/notifier.cjs +9 -2
  2. package/build/client/_app/immutable/chunks/{C2Qh_9aV.js → DaomQix1.js} +1 -1
  3. package/build/client/_app/immutable/chunks/DaomQix1.js.br +0 -0
  4. package/build/client/_app/immutable/chunks/DaomQix1.js.gz +0 -0
  5. package/build/client/_app/immutable/chunks/Dfn9ME_a.js +3 -0
  6. package/build/client/_app/immutable/chunks/Dfn9ME_a.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/Dfn9ME_a.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/{klpn9j-A.js → DuaEmHXZ.js} +1 -1
  9. package/build/client/_app/immutable/chunks/DuaEmHXZ.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/DuaEmHXZ.js.gz +0 -0
  11. package/build/client/_app/immutable/entry/{app.Bfisx3a0.js → app.C23A4_LP.js} +2 -2
  12. package/build/client/_app/immutable/entry/app.C23A4_LP.js.br +0 -0
  13. package/build/client/_app/immutable/entry/app.C23A4_LP.js.gz +0 -0
  14. package/build/client/_app/immutable/entry/start.Dzoby1AT.js +1 -0
  15. package/build/client/_app/immutable/entry/start.Dzoby1AT.js.br +2 -0
  16. package/build/client/_app/immutable/entry/start.Dzoby1AT.js.gz +0 -0
  17. package/build/client/_app/immutable/nodes/{0.Vg8bq-s8.js → 0.BgwfOZTV.js} +1 -1
  18. package/build/client/_app/immutable/nodes/0.BgwfOZTV.js.br +0 -0
  19. package/build/client/_app/immutable/nodes/0.BgwfOZTV.js.gz +0 -0
  20. package/build/client/_app/immutable/nodes/{1.B7kXtFIl.js → 1.DunuP0ec.js} +1 -1
  21. package/build/client/_app/immutable/nodes/1.DunuP0ec.js.br +0 -0
  22. package/build/client/_app/immutable/nodes/1.DunuP0ec.js.gz +0 -0
  23. package/build/client/_app/immutable/nodes/{2.DVFe_SN2.js → 2.dWYUfDXP.js} +1 -1
  24. package/build/client/_app/immutable/nodes/2.dWYUfDXP.js.br +0 -0
  25. package/build/client/_app/immutable/nodes/2.dWYUfDXP.js.gz +0 -0
  26. package/build/client/_app/immutable/nodes/{3.Deb3vtJl.js → 3.rBWJMWFr.js} +1 -1
  27. package/build/client/_app/immutable/nodes/3.rBWJMWFr.js.br +0 -0
  28. package/build/client/_app/immutable/nodes/3.rBWJMWFr.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/{6.CS_KYbQ7.js → 6.DDMVIiVk.js} +1 -1
  30. package/build/client/_app/immutable/nodes/6.DDMVIiVk.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/6.DDMVIiVk.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/{7.CEiUUm74.js → 7.DijtBcpt.js} +1 -1
  33. package/build/client/_app/immutable/nodes/7.DijtBcpt.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/7.DijtBcpt.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/{8.DGStHrkF.js → 8.Y_8EIs9h.js} +1 -1
  36. package/build/client/_app/immutable/nodes/8.Y_8EIs9h.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/8.Y_8EIs9h.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/{9.CbIw97FV.js → 9.BoJIHqox.js} +1 -1
  39. package/build/client/_app/immutable/nodes/9.BoJIHqox.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/9.BoJIHqox.js.gz +0 -0
  41. package/build/client/_app/version.json +1 -1
  42. package/build/client/_app/version.json.br +0 -0
  43. package/build/client/_app/version.json.gz +0 -0
  44. package/build/server/chunks/{0-ikRVFZQS.js → 0-0CZFKlE-.js} +2 -2
  45. package/build/server/chunks/{0-ikRVFZQS.js.map → 0-0CZFKlE-.js.map} +1 -1
  46. package/build/server/chunks/{1-CG-fUUbt.js → 1-DLzdA7q9.js} +2 -2
  47. package/build/server/chunks/{1-CG-fUUbt.js.map → 1-DLzdA7q9.js.map} +1 -1
  48. package/build/server/chunks/{2-BaV1q6GP.js → 2-DssNCbHE.js} +2 -2
  49. package/build/server/chunks/{2-BaV1q6GP.js.map → 2-DssNCbHE.js.map} +1 -1
  50. package/build/server/chunks/{3-BpzQzk4m.js → 3-xYdrp1JC.js} +2 -2
  51. package/build/server/chunks/{3-BpzQzk4m.js.map → 3-xYdrp1JC.js.map} +1 -1
  52. package/build/server/chunks/{6-Bx-SE48t.js → 6-DpmjM0Zz.js} +2 -2
  53. package/build/server/chunks/{6-Bx-SE48t.js.map → 6-DpmjM0Zz.js.map} +1 -1
  54. package/build/server/chunks/{7-LeGA4bt3.js → 7-fZr6V0jx.js} +2 -2
  55. package/build/server/chunks/{7-LeGA4bt3.js.map → 7-fZr6V0jx.js.map} +1 -1
  56. package/build/server/chunks/{8-CXwtG-B-.js → 8-C92Y2pM_.js} +2 -2
  57. package/build/server/chunks/{8-CXwtG-B-.js.map → 8-C92Y2pM_.js.map} +1 -1
  58. package/build/server/chunks/{9-DBztKl9o.js → 9-xiLWXynw.js} +2 -2
  59. package/build/server/chunks/{9-DBztKl9o.js.map → 9-xiLWXynw.js.map} +1 -1
  60. package/build/server/chunks/{_server.ts-BAPg2K8u.js → _server.ts-BMcbwZ2r.js} +5 -3
  61. package/build/server/chunks/{_server.ts-BAPg2K8u.js.map → _server.ts-BMcbwZ2r.js.map} +1 -1
  62. package/build/server/chunks/{_server.ts-9P1PrkiL.js → _server.ts-D-vgx5UZ.js} +5 -3
  63. package/build/server/chunks/{_server.ts-9P1PrkiL.js.map → _server.ts-D-vgx5UZ.js.map} +1 -1
  64. package/build/server/chunks/library-apns-Dl3iRE2h.js +157 -0
  65. package/build/server/chunks/library-apns-Dl3iRE2h.js.map +1 -0
  66. package/build/server/index.js +1 -1
  67. package/build/server/index.js.map +1 -1
  68. package/build/server/manifest.js +11 -11
  69. package/build/server/manifest.js.map +1 -1
  70. package/package.json +1 -2
  71. package/src/lib/modules/server/apn/library-apns.ts +138 -78
  72. package/src/lib/types/apn.ts +10 -0
  73. package/build/client/_app/immutable/chunks/C2Qh_9aV.js.br +0 -0
  74. package/build/client/_app/immutable/chunks/C2Qh_9aV.js.gz +0 -0
  75. package/build/client/_app/immutable/chunks/C2yx8lo8.js +0 -3
  76. package/build/client/_app/immutable/chunks/C2yx8lo8.js.br +0 -0
  77. package/build/client/_app/immutable/chunks/C2yx8lo8.js.gz +0 -0
  78. package/build/client/_app/immutable/chunks/klpn9j-A.js.br +0 -0
  79. package/build/client/_app/immutable/chunks/klpn9j-A.js.gz +0 -0
  80. package/build/client/_app/immutable/entry/app.Bfisx3a0.js.br +0 -0
  81. package/build/client/_app/immutable/entry/app.Bfisx3a0.js.gz +0 -0
  82. package/build/client/_app/immutable/entry/start.BfgeeQYG.js +0 -1
  83. package/build/client/_app/immutable/entry/start.BfgeeQYG.js.br +0 -2
  84. package/build/client/_app/immutable/entry/start.BfgeeQYG.js.gz +0 -0
  85. package/build/client/_app/immutable/nodes/0.Vg8bq-s8.js.br +0 -0
  86. package/build/client/_app/immutable/nodes/0.Vg8bq-s8.js.gz +0 -0
  87. package/build/client/_app/immutable/nodes/1.B7kXtFIl.js.br +0 -0
  88. package/build/client/_app/immutable/nodes/1.B7kXtFIl.js.gz +0 -0
  89. package/build/client/_app/immutable/nodes/2.DVFe_SN2.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/2.DVFe_SN2.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/3.Deb3vtJl.js.br +0 -0
  92. package/build/client/_app/immutable/nodes/3.Deb3vtJl.js.gz +0 -0
  93. package/build/client/_app/immutable/nodes/6.CS_KYbQ7.js.br +0 -0
  94. package/build/client/_app/immutable/nodes/6.CS_KYbQ7.js.gz +0 -0
  95. package/build/client/_app/immutable/nodes/7.CEiUUm74.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/7.CEiUUm74.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/8.DGStHrkF.js.br +0 -0
  98. package/build/client/_app/immutable/nodes/8.DGStHrkF.js.gz +0 -0
  99. package/build/client/_app/immutable/nodes/9.CbIw97FV.js.br +0 -0
  100. package/build/client/_app/immutable/nodes/9.CbIw97FV.js.gz +0 -0
  101. package/build/server/chunks/library-apns-CUDtjHQk.js +0 -108
  102. package/build/server/chunks/library-apns-CUDtjHQk.js.map +0 -1
@@ -1,108 +0,0 @@
1
- import { b as private_env } from './shared-server-DaWdgxVh.js';
2
- import apn from '@parse/node-apn';
3
- import { t as toErrorMessage } from './error-DDXB3duW.js';
4
-
5
- class LibraryAPNsService {
6
- bundleId;
7
- configured = false;
8
- keyId;
9
- privateKey;
10
- provider = null;
11
- teamId;
12
- constructor() {
13
- this.keyId = private_env.APNS_KEY_ID;
14
- this.teamId = private_env.APNS_TEAM_ID;
15
- this.bundleId = private_env.APNS_BUNDLE_ID;
16
- this.privateKey = private_env.APNS_KEY;
17
- if (!this.keyId || !this.teamId || !this.bundleId || !this.privateKey) {
18
- console.error(
19
- "[apns] Missing required configuration (APNS_KEY_ID, APNS_TEAM_ID, APNS_BUNDLE_ID, or APNS_KEY)"
20
- );
21
- this.configured = false;
22
- return;
23
- }
24
- const production = private_env.APNS_PRODUCTION === "true";
25
- const options = {
26
- production,
27
- token: {
28
- key: this.privateKey,
29
- keyId: this.keyId,
30
- teamId: this.teamId
31
- }
32
- };
33
- try {
34
- this.provider = new apn.Provider(options);
35
- this.configured = true;
36
- console.log(`[apns] Provider initialized (${production ? "production" : "sandbox"} mode)`);
37
- } catch (error) {
38
- console.error("[apns] Failed to create provider:", toErrorMessage(error));
39
- this.configured = false;
40
- }
41
- }
42
- isConfigured() {
43
- return this.configured;
44
- }
45
- async sendNotification(deviceToken, payload) {
46
- if (!this.configured || !this.provider) {
47
- throw new Error("APNs service not configured properly");
48
- }
49
- if (!deviceToken || !payload) {
50
- throw new Error("Device token and payload are required");
51
- }
52
- const notification = new apn.Notification();
53
- notification.alert = {
54
- body: payload.body ?? payload.message ?? "",
55
- title: payload.title,
56
- ...payload.subtitle ? { subtitle: payload.subtitle } : {}
57
- };
58
- notification.badge = payload.badge ?? 1;
59
- notification.sound = payload.sound ?? "default";
60
- if (!this.bundleId) {
61
- throw new Error("APNs bundleId is required but was not configured");
62
- }
63
- notification.topic = this.bundleId;
64
- if (payload.category) {
65
- notification.aps.category = payload.category;
66
- }
67
- if (payload.data) {
68
- notification.payload = payload.data;
69
- }
70
- const result = await this.provider.send(notification, deviceToken);
71
- if (result.failed && result.failed.length > 0) {
72
- console.error(`[apns] Full failed result: ${JSON.stringify(result.failed[0])}`);
73
- const failedItem = result.failed[0];
74
- const rawReason = failedItem?.response?.reason ?? failedItem?.status ?? failedItem?.error;
75
- const reason = typeof rawReason === "string" ? rawReason : JSON.stringify(rawReason ?? failedItem);
76
- console.error(`[apns] Delivery failed: ${reason}`);
77
- return {
78
- error: reason,
79
- failed: result.failed?.length || 0,
80
- sent: result.sent?.length || 0,
81
- success: false
82
- };
83
- }
84
- if (result.sent && result.sent.length > 0) {
85
- return {
86
- details: result.sent,
87
- failed: 0,
88
- sent: result.sent.length,
89
- success: true
90
- };
91
- }
92
- return {
93
- details: [result],
94
- error: "Unexpected result format",
95
- failed: 1,
96
- sent: 0,
97
- success: false
98
- };
99
- }
100
- shutdown() {
101
- if (this.provider) {
102
- void this.provider.shutdown();
103
- }
104
- }
105
- }
106
-
107
- export { LibraryAPNsService as L };
108
- //# sourceMappingURL=library-apns-CUDtjHQk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"library-apns-CUDtjHQk.js","sources":["../../../.svelte-kit/adapter-node/chunks/library-apns.js"],"sourcesContent":["import { b as private_env } from \"./shared-server.js\";\nimport apn from \"@parse/node-apn\";\nimport { t as toErrorMessage } from \"./error.js\";\nclass LibraryAPNsService {\n bundleId;\n configured = false;\n keyId;\n privateKey;\n provider = null;\n teamId;\n constructor() {\n this.keyId = private_env.APNS_KEY_ID;\n this.teamId = private_env.APNS_TEAM_ID;\n this.bundleId = private_env.APNS_BUNDLE_ID;\n this.privateKey = private_env.APNS_KEY;\n if (!this.keyId || !this.teamId || !this.bundleId || !this.privateKey) {\n console.error(\n \"[apns] Missing required configuration (APNS_KEY_ID, APNS_TEAM_ID, APNS_BUNDLE_ID, or APNS_KEY)\"\n );\n this.configured = false;\n return;\n }\n const production = private_env.APNS_PRODUCTION === \"true\";\n const options = {\n production,\n token: {\n key: this.privateKey,\n keyId: this.keyId,\n teamId: this.teamId\n }\n };\n try {\n this.provider = new apn.Provider(options);\n this.configured = true;\n console.log(`[apns] Provider initialized (${production ? \"production\" : \"sandbox\"} mode)`);\n } catch (error) {\n console.error(\"[apns] Failed to create provider:\", toErrorMessage(error));\n this.configured = false;\n }\n }\n isConfigured() {\n return this.configured;\n }\n async sendNotification(deviceToken, payload) {\n if (!this.configured || !this.provider) {\n throw new Error(\"APNs service not configured properly\");\n }\n if (!deviceToken || !payload) {\n throw new Error(\"Device token and payload are required\");\n }\n const notification = new apn.Notification();\n notification.alert = {\n body: payload.body ?? payload.message ?? \"\",\n title: payload.title,\n ...payload.subtitle ? { subtitle: payload.subtitle } : {}\n };\n notification.badge = payload.badge ?? 1;\n notification.sound = payload.sound ?? \"default\";\n if (!this.bundleId) {\n throw new Error(\"APNs bundleId is required but was not configured\");\n }\n notification.topic = this.bundleId;\n if (payload.category) {\n notification.aps.category = payload.category;\n }\n if (payload.data) {\n notification.payload = payload.data;\n }\n const result = await this.provider.send(notification, deviceToken);\n if (result.failed && result.failed.length > 0) {\n console.error(`[apns] Full failed result: ${JSON.stringify(result.failed[0])}`);\n const failedItem = result.failed[0];\n const rawReason = failedItem?.response?.reason ?? failedItem?.status ?? failedItem?.error;\n const reason = typeof rawReason === \"string\" ? rawReason : JSON.stringify(rawReason ?? failedItem);\n console.error(`[apns] Delivery failed: ${reason}`);\n return {\n error: reason,\n failed: result.failed?.length || 0,\n sent: result.sent?.length || 0,\n success: false\n };\n }\n if (result.sent && result.sent.length > 0) {\n return {\n details: result.sent,\n failed: 0,\n sent: result.sent.length,\n success: true\n };\n }\n return {\n details: [result],\n error: \"Unexpected result format\",\n failed: 1,\n sent: 0,\n success: false\n };\n }\n shutdown() {\n if (this.provider) {\n void this.provider.shutdown();\n }\n }\n}\nexport {\n LibraryAPNsService as L\n};\n"],"names":[],"mappings":"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"}