@magicred-1/react-native-lxmf 0.1.1 → 0.1.2

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.
@@ -1,7 +1,11 @@
1
- import { requireOptionalNativeModule } from 'expo-modules-core';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LxmfModuleNative = exports.LxmfModule = exports.isLxmfNativeAvailable = void 0;
4
+ const expo_modules_core_1 = require("expo-modules-core");
2
5
  const MISSING_NATIVE_MESSAGE = "Cannot find native module 'LxmfModule'. Use an Expo development build (not Expo Go) and rebuild native apps after local module changes.";
3
- const LxmfModuleNative = requireOptionalNativeModule('LxmfModule');
4
- export const isLxmfNativeAvailable = !!LxmfModuleNative;
6
+ const LxmfModuleNative = (0, expo_modules_core_1.requireOptionalNativeModule)('LxmfModule');
7
+ exports.LxmfModuleNative = LxmfModuleNative;
8
+ exports.isLxmfNativeAvailable = !!LxmfModuleNative;
5
9
  const throwMissingNative = () => {
6
10
  throw new Error(MISSING_NATIVE_MESSAGE);
7
11
  };
@@ -22,10 +26,4 @@ const missingNativeShim = {
22
26
  blePeerCount: () => throwMissingNative(),
23
27
  bleUnpairedRNodeCount: () => throwMissingNative(),
24
28
  };
25
- export const LxmfModule = LxmfModuleNative ?? missingNativeShim;
26
- /**
27
- * The raw native module instance, or null when unavailable.
28
- * In Expo SDK 50+, NativeModule extends the C++ EventEmitter — call addListener() on it directly.
29
- * Do NOT use NativeEventEmitter from react-native; it does not wire up to Expo module events.
30
- */
31
- export { LxmfModuleNative };
29
+ exports.LxmfModule = LxmfModuleNative ?? missingNativeShim;
package/build/index.js CHANGED
@@ -1,2 +1,9 @@
1
- export { LxmfModule, LxmfModuleNative } from './LxmfModule';
2
- export { useLxmf, LxmfNodeMode } from './useLxmf';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LxmfNodeMode = exports.useLxmf = exports.LxmfModuleNative = exports.LxmfModule = void 0;
4
+ var LxmfModule_1 = require("./LxmfModule");
5
+ Object.defineProperty(exports, "LxmfModule", { enumerable: true, get: function () { return LxmfModule_1.LxmfModule; } });
6
+ Object.defineProperty(exports, "LxmfModuleNative", { enumerable: true, get: function () { return LxmfModule_1.LxmfModuleNative; } });
7
+ var useLxmf_1 = require("./useLxmf");
8
+ Object.defineProperty(exports, "useLxmf", { enumerable: true, get: function () { return useLxmf_1.useLxmf; } });
9
+ Object.defineProperty(exports, "LxmfNodeMode", { enumerable: true, get: function () { return useLxmf_1.LxmfNodeMode; } });
package/build/useLxmf.js CHANGED
@@ -1,7 +1,11 @@
1
- import { useCallback, useEffect, useState } from 'react';
2
- import { isLxmfNativeAvailable, LxmfModule, LxmfModuleNative } from './LxmfModule';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LxmfNodeMode = void 0;
4
+ exports.useLxmf = useLxmf;
5
+ const react_1 = require("react");
6
+ const LxmfModule_1 = require("./LxmfModule");
3
7
  /** Node transport mode */
4
- export var LxmfNodeMode;
8
+ var LxmfNodeMode;
5
9
  (function (LxmfNodeMode) {
6
10
  /** BLE-only mesh (default) */
7
11
  LxmfNodeMode[LxmfNodeMode["BleOnly"] = 0] = "BleOnly";
@@ -11,7 +15,7 @@ export var LxmfNodeMode;
11
15
  LxmfNodeMode[LxmfNodeMode["TcpServer"] = 2] = "TcpServer";
12
16
  /** Connect to standard Reticulum daemon (rnsd) via HDLC-framed TCP */
13
17
  LxmfNodeMode[LxmfNodeMode["Reticulum"] = 3] = "Reticulum";
14
- })(LxmfNodeMode || (LxmfNodeMode = {}));
18
+ })(LxmfNodeMode || (exports.LxmfNodeMode = LxmfNodeMode = {}));
15
19
  function parseJson(value, fallback) {
16
20
  if (!value)
17
21
  return fallback;
@@ -22,37 +26,37 @@ function parseJson(value, fallback) {
22
26
  return fallback;
23
27
  }
24
28
  }
25
- export function useLxmf(options = {}) {
26
- const [status, setStatus] = useState(null);
27
- const [beacons, setBeacons] = useState([]);
28
- const [events, setEvents] = useState([]);
29
- const [error, setError] = useState(null);
30
- const [running, setRunning] = useState(false);
31
- const pushEvent = useCallback((type, payload) => {
29
+ function useLxmf(options = {}) {
30
+ const [status, setStatus] = (0, react_1.useState)(null);
31
+ const [beacons, setBeacons] = (0, react_1.useState)([]);
32
+ const [events, setEvents] = (0, react_1.useState)([]);
33
+ const [error, setError] = (0, react_1.useState)(null);
34
+ const [running, setRunning] = (0, react_1.useState)(false);
35
+ const pushEvent = (0, react_1.useCallback)((type, payload) => {
32
36
  const event = { ...payload, type };
33
37
  setEvents((prev) => [event, ...prev].slice(0, 200));
34
38
  return event;
35
39
  }, []);
36
- const syncStatus = useCallback(() => {
37
- const parsed = parseJson(LxmfModule.getStatus(), null);
40
+ const syncStatus = (0, react_1.useCallback)(() => {
41
+ const parsed = parseJson(LxmfModule_1.LxmfModule.getStatus(), null);
38
42
  setStatus(parsed);
39
43
  if (parsed && typeof parsed.running === 'boolean') {
40
44
  setRunning(parsed.running);
41
45
  }
42
46
  return parsed;
43
47
  }, []);
44
- useEffect(() => {
45
- if (!isLxmfNativeAvailable) {
48
+ (0, react_1.useEffect)(() => {
49
+ if (!LxmfModule_1.isLxmfNativeAvailable) {
46
50
  setError("Cannot find native module 'LxmfModule'. Run this app in an Expo development build (not Expo Go).");
47
51
  return;
48
52
  }
49
53
  try {
50
- const initialized = LxmfModule.init(options.dbPath || null);
54
+ const initialized = LxmfModule_1.LxmfModule.init(options.dbPath || null);
51
55
  if (!initialized) {
52
56
  setError('Failed to initialize LXMF module');
53
57
  return;
54
58
  }
55
- const alreadyRunning = LxmfModule.isRunning();
59
+ const alreadyRunning = LxmfModule_1.LxmfModule.isRunning();
56
60
  setRunning(alreadyRunning);
57
61
  if (alreadyRunning) {
58
62
  syncStatus();
@@ -63,11 +67,11 @@ export function useLxmf(options = {}) {
63
67
  setError(e?.message ?? 'Initialization failed');
64
68
  }
65
69
  }, [options.dbPath, syncStatus]);
66
- useEffect(() => {
67
- if (!isLxmfNativeAvailable || !LxmfModuleNative) {
70
+ (0, react_1.useEffect)(() => {
71
+ if (!LxmfModule_1.isLxmfNativeAvailable || !LxmfModule_1.LxmfModuleNative) {
68
72
  return;
69
73
  }
70
- const mod = LxmfModuleNative;
74
+ const mod = LxmfModule_1.LxmfModuleNative;
71
75
  const subscriptions = [
72
76
  mod.addListener('onStatusChanged', (event) => {
73
77
  pushEvent('statusChanged', event);
@@ -84,7 +88,7 @@ export function useLxmf(options = {}) {
84
88
  }),
85
89
  mod.addListener('onBeaconDiscovered', (event) => {
86
90
  pushEvent('beaconDiscovered', event);
87
- const latestBeacons = parseJson(LxmfModule.getBeacons(), []);
91
+ const latestBeacons = parseJson(LxmfModule_1.LxmfModule.getBeacons(), []);
88
92
  setBeacons(latestBeacons);
89
93
  }),
90
94
  mod.addListener('onMessageReceived', (event) => {
@@ -108,9 +112,9 @@ export function useLxmf(options = {}) {
108
112
  subscriptions.forEach((sub) => sub.remove());
109
113
  };
110
114
  }, [options.logLevel, pushEvent, syncStatus]);
111
- const start = useCallback(async (overrides) => {
115
+ const start = (0, react_1.useCallback)(async (overrides) => {
112
116
  try {
113
- if (!isLxmfNativeAvailable) {
117
+ if (!LxmfModule_1.isLxmfNativeAvailable) {
114
118
  setError("Cannot find native module 'LxmfModule'. Run this app in an Expo development build (not Expo Go).");
115
119
  return false;
116
120
  }
@@ -129,7 +133,7 @@ export function useLxmf(options = {}) {
129
133
  setError(`Mode ${mode} requires at least one TCP interface.`);
130
134
  return false;
131
135
  }
132
- await LxmfModule.start(resolvedIdentityHex, resolvedLxmfAddressHex, mode, announceMs, bleMtu, tcpInterfaces, displayName);
136
+ await LxmfModule_1.LxmfModule.start(resolvedIdentityHex, resolvedLxmfAddressHex, mode, announceMs, bleMtu, tcpInterfaces, displayName);
133
137
  setRunning(true);
134
138
  syncStatus();
135
139
  setError(null);
@@ -149,7 +153,7 @@ export function useLxmf(options = {}) {
149
153
  options.displayName,
150
154
  syncStatus,
151
155
  ]);
152
- useEffect(() => {
156
+ (0, react_1.useEffect)(() => {
153
157
  if (!options.autoStart || running)
154
158
  return;
155
159
  if (!options.identityHex || !options.lxmfAddressHex)
@@ -158,9 +162,9 @@ export function useLxmf(options = {}) {
158
162
  // start() already sets error state on failure
159
163
  });
160
164
  }, [options.autoStart, options.identityHex, options.lxmfAddressHex, running, start]);
161
- const stop = useCallback(async () => {
165
+ const stop = (0, react_1.useCallback)(async () => {
162
166
  try {
163
- await LxmfModule.stop();
167
+ await LxmfModule_1.LxmfModule.stop();
164
168
  setRunning(false);
165
169
  setStatus(null);
166
170
  setError(null);
@@ -169,25 +173,25 @@ export function useLxmf(options = {}) {
169
173
  setError(e?.message ?? 'Failed to stop');
170
174
  }
171
175
  }, []);
172
- const send = useCallback(async (destHex, bodyBase64) => {
176
+ const send = (0, react_1.useCallback)(async (destHex, bodyBase64) => {
173
177
  try {
174
- return await LxmfModule.send(destHex, bodyBase64);
178
+ return await LxmfModule_1.LxmfModule.send(destHex, bodyBase64);
175
179
  }
176
180
  catch (e) {
177
181
  setError(e.message);
178
182
  return -1;
179
183
  }
180
184
  }, []);
181
- const broadcast = useCallback(async (destsHex, bodyBase64) => {
185
+ const broadcast = (0, react_1.useCallback)(async (destsHex, bodyBase64) => {
182
186
  try {
183
- return await LxmfModule.broadcast(destsHex, bodyBase64);
187
+ return await LxmfModule_1.LxmfModule.broadcast(destsHex, bodyBase64);
184
188
  }
185
189
  catch (e) {
186
190
  setError(e.message);
187
191
  return -1;
188
192
  }
189
193
  }, []);
190
- const getStatus = useCallback(() => {
194
+ const getStatus = (0, react_1.useCallback)(() => {
191
195
  try {
192
196
  return syncStatus();
193
197
  }
@@ -196,9 +200,9 @@ export function useLxmf(options = {}) {
196
200
  return null;
197
201
  }
198
202
  }, [syncStatus]);
199
- const getBeacons = useCallback(() => {
203
+ const getBeacons = (0, react_1.useCallback)(() => {
200
204
  try {
201
- const parsed = parseJson(LxmfModule.getBeacons(), []);
205
+ const parsed = parseJson(LxmfModule_1.LxmfModule.getBeacons(), []);
202
206
  setBeacons(parsed);
203
207
  return parsed;
204
208
  }
@@ -207,26 +211,26 @@ export function useLxmf(options = {}) {
207
211
  return [];
208
212
  }
209
213
  }, []);
210
- const fetchMessages = useCallback((limit = 50) => {
214
+ const fetchMessages = (0, react_1.useCallback)((limit = 50) => {
211
215
  try {
212
- return parseJson(LxmfModule.fetchMessages(limit), []);
216
+ return parseJson(LxmfModule_1.LxmfModule.fetchMessages(limit), []);
213
217
  }
214
218
  catch (e) {
215
219
  setError(`Failed to parse message payload: ${e?.message ?? 'unknown error'}`);
216
220
  return [];
217
221
  }
218
222
  }, []);
219
- const setLogLevel = useCallback((level) => {
220
- return LxmfModule.setLogLevel(level);
223
+ const setLogLevel = (0, react_1.useCallback)((level) => {
224
+ return LxmfModule_1.LxmfModule.setLogLevel(level);
221
225
  }, []);
222
- const startBLE = useCallback(() => {
223
- LxmfModule.startBLE();
226
+ const startBLE = (0, react_1.useCallback)(() => {
227
+ LxmfModule_1.LxmfModule.startBLE();
224
228
  }, []);
225
- const stopBLE = useCallback(() => {
226
- LxmfModule.stopBLE();
229
+ const stopBLE = (0, react_1.useCallback)(() => {
230
+ LxmfModule_1.LxmfModule.stopBLE();
227
231
  }, []);
228
- const bleUnpairedRNodeCount = useCallback(() => {
229
- return LxmfModule.bleUnpairedRNodeCount();
232
+ const bleUnpairedRNodeCount = (0, react_1.useCallback)(() => {
233
+ return LxmfModule_1.LxmfModule.bleUnpairedRNodeCount();
230
234
  }, []);
231
235
  return {
232
236
  // State
@@ -235,7 +239,7 @@ export function useLxmf(options = {}) {
235
239
  events,
236
240
  error,
237
241
  isRunning: running,
238
- isNativeAvailable: isLxmfNativeAvailable,
242
+ isNativeAvailable: LxmfModule_1.isLxmfNativeAvailable,
239
243
  // Methods
240
244
  start,
241
245
  stop,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicred-1/react-native-lxmf",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "LXMF Reticulum mesh networking for React Native + Expo",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",