// Metro module 13558 (f13559). import { RPCCommands, RPCErrors, AnalyticEvents } from "../../../../Constants"; import RPCError from "../../RPCError"; import validateScope from "../../helpers/validateScope"; import AnalyticsUtils from "../../../../utils/AnalyticsUtils"; import { getInitialSubscriptionPayload } from "../events/subscriptionHelpers"; function $mk116546($env) { return (a0) => { setImmediate($mk118396($env)); a0({ evt: $env.$parent[2] }); }; } function $mk118396($env) { return () => { const r2 = $env; const r1 = $env.$parent; const r5 = r1[0]; const r12 = r1[1]; const r4 = r1[2]; r5.addSubscription(r12, r4, r1[3], r2[2]); if (r2[3] != null) { const r16 = r2[3]; r5.dispatchToSubscriptions(r4, $mk118909(r1), r16); } }; } function $mk118909($env) { return (a0) => a0.socket.id === $env[1].id; } let env9416 = {}; const r19 = {}; r19[RPCCommands.SUBSCRIBE] = { handler: async (a0) => { let promise; let env20532 = { $parent: env9416 }; env20532[0] = a0.server; env20532[1] = a0.socket; env20532[2] = a0.evt; env20532[3] = a0.args; let c27510_0, c27510_1; L21: { let env30645; const r34 = env20532; c27510_1 = r34; const r13 = env30645 = { $parent: r34 }; c27510_0 = r13; env30645[0] = void 0; env30645[1] = void 0; env30645[2] = void 0; env30645[3] = void 0; const r11 = env20532[0]; const r35 = r11.events[env20532[2]]; env30645[0] = r35; if (r35 == null) { throw new RPCError({ errorCode: RPCErrors.INVALID_EVENT }, `Invalid event: ${env20532[2]}`); } if (!validateScope(env20532[1].authorization.scopes, r35.scope)) { throw new RPCError({ errorCode: RPCErrors.INVALID_PERMISSIONS }, "Not authenticated or invalid scope"); } AnalyticsUtils.track(AnalyticEvents.RPC_SUBSCRIPTION_REQUESTED, { event: env20532[2], scope: typeof r35.scope === "object" ? JSON.stringify(r35.scope) : r35.scope, application_id: env20532[1].application.id, socket_scope: env20532[1].authorization.scopes.toString() }); if (r35.validation != null) { env30645[1] = await r11.getJoi(); if (env30645[1].validate(env20532[3], env30645[0].validation(env30645[1]), { convert: false }).error == null) { const r147 = c27510_0; env30645[2] = env30645[0].handler({ args: env20532[3], socket: env20532[1] }); env30645[3] = getInitialSubscriptionPayload(env20532[1], env20532[2], env20532[3]); promise = new Promise($mk116546(r147)); break L21; } throw new RPCError({ errorCode: RPCErrors.INVALID_PAYLOAD }, "Invalid subscription parameters provided"); } const r95 = c27510_0; env30645[2] = env30645[0].handler({ args: env20532[3], socket: env20532[1] }); env30645[3] = getInitialSubscriptionPayload(env20532[1], env20532[2], env20532[3]); return new Promise($mk116546(r95)); } return promise; } }; r19[RPCCommands.UNSUBSCRIBE] = { handler: ({ server, socket, evt, args }) => { if (server.events[evt] == null) { throw new RPCError({ errorCode: RPCErrors.INVALID_EVENT }, `Invalid event: ${evt}`); } server.removeSubscription(socket, evt, args); return { evt }; } }; export default r19;