@mpgd/adapter-devvit 0.1.0 → 0.2.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/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { type BridgeRequest, type BridgeResponse } from '@mpgd/bridge';
2
+ import { type BridgeRpcClient, type BridgeRpcEndpoint } from '@mpgd/bridge/orpc';
2
3
  import type { PlatformGateway } from '@mpgd/platform';
3
4
  export declare const defaultDevvitBridgeEndpoint = "/api/mpgd/bridge";
5
+ export declare const defaultDevvitRpcEndpoint = "/api/mpgd/rpc";
4
6
  type BridgeErrorResponse = Extract<BridgeResponse, {
5
7
  readonly ok: false;
6
8
  }>;
@@ -19,8 +21,14 @@ export interface DevvitPlatformGatewayOptions {
19
21
  readonly bridge?: DevvitBridge;
20
22
  readonly fallbackBridge?: DevvitBridge;
21
23
  readonly endpoint?: string;
24
+ readonly rpcEndpoint?: BridgeRpcEndpoint;
22
25
  }
23
26
  export declare function createDevvitPlatformGateway(input: DevvitPlatformGatewayOptions): PlatformGateway;
27
+ export declare function createDevvitOrpcBridge(input?: {
28
+ readonly endpoint?: BridgeRpcEndpoint | undefined;
29
+ readonly fetch?: typeof fetch | undefined;
30
+ readonly client?: BridgeRpcClient | undefined;
31
+ }): DevvitBridge;
24
32
  export declare function createDevvitFetchBridge(input?: {
25
33
  readonly endpoint?: string | undefined;
26
34
  readonly fetch?: typeof fetch | undefined;
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  import { assertBridgeResponse, createBridgeError, } from '@mpgd/bridge';
2
+ import { createBridgeOrpcClient, defaultBridgeRpcEndpoint, } from '@mpgd/bridge/orpc';
2
3
  export const defaultDevvitBridgeEndpoint = '/api/mpgd/bridge';
4
+ export const defaultDevvitRpcEndpoint = defaultBridgeRpcEndpoint;
3
5
  const devvitFallbackStoragePrefix = 'mpgd:devvit:fallback:';
4
6
  export class DevvitBridgeError extends Error {
5
7
  code;
@@ -19,7 +21,9 @@ export function createDevvitPlatformGateway(input) {
19
21
  const bridge = input.bridge ??
20
22
  getBridge() ??
21
23
  input.fallbackBridge ??
22
- createDevvitFetchBridge({ endpoint: input.endpoint });
24
+ (input.endpoint === undefined
25
+ ? createDevvitOrpcBridge({ endpoint: input.rpcEndpoint })
26
+ : createDevvitFetchBridge({ endpoint: input.endpoint }));
23
27
  const response = await bridge.request({
24
28
  id: generateRequestId(),
25
29
  method,
@@ -166,6 +170,22 @@ export function createDevvitPlatformGateway(input) {
166
170
  : undefined;
167
171
  }
168
172
  }
173
+ export function createDevvitOrpcBridge(input = {}) {
174
+ const client = input.client ?? createBridgeOrpcClient({
175
+ url: input.endpoint ?? defaultDevvitRpcEndpoint,
176
+ ...(input.fetch === undefined ? {} : { fetch: input.fetch }),
177
+ });
178
+ return {
179
+ async request(bridgeRequest) {
180
+ try {
181
+ return await client.request(bridgeRequest);
182
+ }
183
+ catch (error) {
184
+ return createBridgeError(bridgeRequest.id, 'DEVVIT_BRIDGE_NETWORK_ERROR', `Devvit oRPC bridge request failed: ${errorMessage(error)}`, true);
185
+ }
186
+ },
187
+ };
188
+ }
169
189
  export function createDevvitFetchBridge(input = {}) {
170
190
  const endpoint = input.endpoint ?? defaultDevvitBridgeEndpoint;
171
191
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mpgd/adapter-devvit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Reddit Devvit Web platform adapter for mpgd games.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -34,8 +34,8 @@
34
34
  "dist"
35
35
  ],
36
36
  "dependencies": {
37
- "@mpgd/bridge": "0.1.0",
38
- "@mpgd/platform": "0.1.0"
37
+ "@mpgd/bridge": "0.2.0",
38
+ "@mpgd/platform": "0.2.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "ttsc": "0.16.9",