preact-missing-hooks 3.1.0 → 4.0.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 (72) hide show
  1. package/.husky/pre-commit +1 -0
  2. package/.husky/pre-push +1 -0
  3. package/.prettierignore +3 -0
  4. package/.prettierrc +6 -0
  5. package/Readme.md +149 -136
  6. package/dist/entry.cjs +21 -0
  7. package/dist/entry.js +2 -0
  8. package/dist/entry.js.map +1 -0
  9. package/dist/entry.modern.mjs +2 -0
  10. package/dist/entry.modern.mjs.map +1 -0
  11. package/dist/entry.module.js +2 -0
  12. package/dist/entry.module.js.map +1 -0
  13. package/dist/entry.umd.js +2 -0
  14. package/dist/entry.umd.js.map +1 -0
  15. package/dist/index.d.ts +13 -13
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.modern.mjs +2 -0
  18. package/dist/index.modern.mjs.map +1 -0
  19. package/dist/index.module.js.map +1 -1
  20. package/dist/index.umd.js.map +1 -1
  21. package/dist/indexedDB/dbController.d.ts +2 -2
  22. package/dist/indexedDB/index.d.ts +6 -6
  23. package/dist/indexedDB/openDB.d.ts +1 -1
  24. package/dist/indexedDB/tableController.d.ts +1 -1
  25. package/dist/indexedDB/types.d.ts +1 -2
  26. package/dist/react.js +1 -0
  27. package/dist/react.modern.mjs +1 -0
  28. package/dist/react.module.js +1 -0
  29. package/dist/react.umd.js +1 -0
  30. package/dist/useEventBus.d.ts +1 -1
  31. package/dist/useIndexedDB.d.ts +3 -3
  32. package/dist/useMutationObserver.d.ts +1 -1
  33. package/dist/useNetworkState.d.ts +3 -3
  34. package/dist/usePreferredTheme.d.ts +1 -1
  35. package/dist/useRageClick.d.ts +1 -1
  36. package/dist/useThreadedWorker.d.ts +1 -1
  37. package/dist/useTransition.d.ts +4 -1
  38. package/dist/useWorkerNotifications.d.ts +1 -1
  39. package/dist/useWrappedChildren.d.ts +3 -3
  40. package/eslint.config.mjs +10 -0
  41. package/package.json +60 -6
  42. package/scripts/generate-entry.cjs +34 -0
  43. package/src/index.ts +13 -13
  44. package/src/indexedDB/dbController.ts +101 -92
  45. package/src/indexedDB/index.ts +16 -11
  46. package/src/indexedDB/openDB.ts +49 -49
  47. package/src/indexedDB/requestToPromise.ts +17 -16
  48. package/src/indexedDB/tableController.ts +331 -257
  49. package/src/indexedDB/types.ts +35 -35
  50. package/src/useClipboard.ts +99 -97
  51. package/src/useEventBus.ts +39 -36
  52. package/src/useIndexedDB.ts +111 -111
  53. package/src/useMutationObserver.ts +26 -26
  54. package/src/useNetworkState.ts +124 -122
  55. package/src/usePreferredTheme.ts +68 -68
  56. package/src/useRageClick.ts +103 -103
  57. package/src/useThreadedWorker.ts +165 -165
  58. package/src/useTransition.ts +22 -19
  59. package/src/useWasmCompute.ts +209 -204
  60. package/src/useWebRTCIP.ts +181 -176
  61. package/src/useWorkerNotifications.ts +28 -20
  62. package/src/useWrappedChildren.ts +72 -58
  63. package/tests/react-adapter.tsx +12 -0
  64. package/tests/setup-react.ts +4 -0
  65. package/tests/useClipboard.test.tsx +4 -2
  66. package/tests/useThreadedWorker.test.tsx +3 -1
  67. package/tests/useWasmCompute.test.tsx +1 -1
  68. package/tests/useWebRTCIP.test.tsx +3 -1
  69. package/vite.config.ts +11 -4
  70. package/vitest.config.preact.ts +20 -0
  71. package/vitest.config.react.ts +36 -0
  72. package/vitest.workspace.ts +6 -0
@@ -1,11 +1,16 @@
1
- /**
2
- * IndexedDB hook system – public API.
3
- * @module indexedDB
4
- */
5
-
6
- export type { IndexedDBConfig, TableSchema, OperationCallbacks, TransactionOptions } from './types';
7
- export { requestToPromise } from './requestToPromise';
8
- export type { ITableController } from './tableController';
9
- export type { IDBController, TransactionContext } from './dbController';
10
- export { createDBController } from './dbController';
11
- export { openDB } from './openDB';
1
+ /**
2
+ * IndexedDB hook system – public API.
3
+ * @module indexedDB
4
+ */
5
+
6
+ export type {
7
+ IndexedDBConfig,
8
+ TableSchema,
9
+ OperationCallbacks,
10
+ TransactionOptions,
11
+ } from "./types";
12
+ export { requestToPromise } from "./requestToPromise";
13
+ export type { ITableController } from "./tableController";
14
+ export type { IDBController, TransactionContext } from "./dbController";
15
+ export { createDBController } from "./dbController";
16
+ export { openDB } from "./openDB";
@@ -1,49 +1,49 @@
1
- /**
2
- * Opens IndexedDB and runs onupgradeneeded to create stores and indexes.
3
- * Singleton per (name, version).
4
- * @module indexedDB/openDB
5
- */
6
-
7
- import type { IndexedDBConfig, TableSchema } from './types';
8
- import { requestToPromise } from './requestToPromise';
9
-
10
- const connectionCache = new Map<string, Promise<IDBDatabase>>();
11
-
12
- /**
13
- * Opens the database and creates/upgrades object stores and indexes from config.
14
- * Uses a singleton cache per (name, version); repeated calls with the same config reuse the same connection.
15
- */
16
- export function openDB(config: IndexedDBConfig): Promise<IDBDatabase> {
17
- const key = `${config.name}_v${config.version}`;
18
- let promise = connectionCache.get(key);
19
- if (promise) return promise;
20
- promise = _openDB(config);
21
- connectionCache.set(key, promise);
22
- return promise;
23
- }
24
-
25
- function _openDB(config: IndexedDBConfig): Promise<IDBDatabase> {
26
- return new Promise<IDBDatabase>((resolve, reject) => {
27
- const request = indexedDB.open(config.name, config.version);
28
- request.onerror = () => reject(request.error ?? new DOMException('Failed to open database'));
29
- request.onsuccess = () => resolve(request.result);
30
- request.onupgradeneeded = (event: IDBVersionChangeEvent) => {
31
- const db = (event.target as IDBOpenDBRequest).result;
32
- const tables = config.tables;
33
- for (const tableName of Object.keys(tables)) {
34
- const schema = tables[tableName] as TableSchema;
35
- if (!db.objectStoreNames.contains(tableName)) {
36
- const store = db.createObjectStore(tableName, {
37
- keyPath: schema.keyPath,
38
- autoIncrement: schema.autoIncrement ?? false,
39
- });
40
- if (schema.indexes) {
41
- for (const indexName of schema.indexes) {
42
- store.createIndex(indexName, indexName, { unique: false });
43
- }
44
- }
45
- }
46
- }
47
- };
48
- });
49
- }
1
+ /**
2
+ * Opens IndexedDB and runs onupgradeneeded to create stores and indexes.
3
+ * Singleton per (name, version).
4
+ * @module indexedDB/openDB
5
+ */
6
+
7
+ import type { IndexedDBConfig, TableSchema } from "./types";
8
+
9
+ const connectionCache = new Map<string, Promise<IDBDatabase>>();
10
+
11
+ /**
12
+ * Opens the database and creates/upgrades object stores and indexes from config.
13
+ * Uses a singleton cache per (name, version); repeated calls with the same config reuse the same connection.
14
+ */
15
+ export function openDB(config: IndexedDBConfig): Promise<IDBDatabase> {
16
+ const key = `${config.name}_v${config.version}`;
17
+ let promise = connectionCache.get(key);
18
+ if (promise) return promise;
19
+ promise = _openDB(config);
20
+ connectionCache.set(key, promise);
21
+ return promise;
22
+ }
23
+
24
+ function _openDB(config: IndexedDBConfig): Promise<IDBDatabase> {
25
+ return new Promise<IDBDatabase>((resolve, reject) => {
26
+ const request = indexedDB.open(config.name, config.version);
27
+ request.onerror = () =>
28
+ reject(request.error ?? new DOMException("Failed to open database"));
29
+ request.onsuccess = () => resolve(request.result);
30
+ request.onupgradeneeded = (event: IDBVersionChangeEvent) => {
31
+ const db = (event.target as IDBOpenDBRequest).result;
32
+ const tables = config.tables;
33
+ for (const tableName of Object.keys(tables)) {
34
+ const schema = tables[tableName] as TableSchema;
35
+ if (!db.objectStoreNames.contains(tableName)) {
36
+ const store = db.createObjectStore(tableName, {
37
+ keyPath: schema.keyPath,
38
+ autoIncrement: schema.autoIncrement ?? false,
39
+ });
40
+ if (schema.indexes) {
41
+ for (const indexName of schema.indexes) {
42
+ store.createIndex(indexName, indexName, { unique: false });
43
+ }
44
+ }
45
+ }
46
+ }
47
+ };
48
+ });
49
+ }
@@ -1,16 +1,17 @@
1
- /**
2
- * Wraps an IDBRequest in a Promise.
3
- * @module indexedDB/requestToPromise
4
- */
5
-
6
- /**
7
- * Converts an IDBRequest to a Promise. Rejects with the request's error on failure.
8
- * @param request - Native IndexedDB request.
9
- * @returns Promise that resolves with the request result or rejects with DOMException.
10
- */
11
- export function requestToPromise<T>(request: IDBRequest<T>): Promise<T> {
12
- return new Promise<T>((resolve, reject) => {
13
- request.onsuccess = () => resolve(request.result);
14
- request.onerror = () => reject(request.error ?? new DOMException('Unknown IndexedDB error'));
15
- });
16
- }
1
+ /**
2
+ * Wraps an IDBRequest in a Promise.
3
+ * @module indexedDB/requestToPromise
4
+ */
5
+
6
+ /**
7
+ * Converts an IDBRequest to a Promise. Rejects with the request's error on failure.
8
+ * @param request - Native IndexedDB request.
9
+ * @returns Promise that resolves with the request result or rejects with DOMException.
10
+ */
11
+ export function requestToPromise<T>(request: IDBRequest<T>): Promise<T> {
12
+ return new Promise<T>((resolve, reject) => {
13
+ request.onsuccess = () => resolve(request.result);
14
+ request.onerror = () =>
15
+ reject(request.error ?? new DOMException("Unknown IndexedDB error"));
16
+ });
17
+ }