silosdk 0.0.9 → 0.0.10
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/README.md +16 -5
- package/dist/internal/indexed-db.cjs +44 -0
- package/dist/internal/indexed-db.mjs +41 -0
- package/dist/media/shared.cjs +99 -0
- package/dist/media/shared.d.cts +26 -0
- package/dist/media/shared.d.mts +26 -0
- package/dist/media/shared.mjs +93 -0
- package/dist/media/storage.native.cjs +102 -0
- package/dist/media/storage.native.mjs +101 -0
- package/dist/media/storage.web.cjs +79 -0
- package/dist/media/storage.web.mjs +78 -0
- package/dist/media.cjs +5 -163
- package/dist/media.d.cts +7 -27
- package/dist/media.d.mts +7 -27
- package/dist/media.mjs +4 -161
- package/dist/media.web.cjs +9 -0
- package/dist/media.web.d.cts +12 -0
- package/dist/media.web.d.mts +12 -0
- package/dist/media.web.mjs +8 -0
- package/dist/settings/shared.cjs +63 -0
- package/dist/settings/shared.d.cts +19 -0
- package/dist/settings/shared.d.mts +19 -0
- package/dist/settings/shared.mjs +59 -0
- package/dist/settings/storage.native.cjs +24 -0
- package/dist/settings/storage.native.mjs +22 -0
- package/dist/settings/storage.web.cjs +34 -0
- package/dist/settings/storage.web.mjs +34 -0
- package/dist/settings.cjs +4 -66
- package/dist/settings.d.cts +4 -18
- package/dist/settings.d.mts +4 -18
- package/dist/settings.mjs +4 -64
- package/dist/settings.web.cjs +8 -0
- package/dist/settings.web.d.cts +6 -0
- package/dist/settings.web.d.mts +6 -0
- package/dist/settings.web.mjs +8 -0
- package/dist/store/shared.cjs +338 -0
- package/dist/store/shared.d.cts +58 -0
- package/dist/store/shared.d.mts +58 -0
- package/dist/store/shared.mjs +333 -0
- package/dist/store/storage.native.cjs +133 -0
- package/dist/store/storage.native.mjs +132 -0
- package/dist/store/storage.web.cjs +142 -0
- package/dist/store/storage.web.mjs +142 -0
- package/dist/store.cjs +4 -421
- package/dist/store.d.cts +4 -58
- package/dist/store.d.mts +4 -58
- package/dist/store.mjs +4 -421
- package/dist/store.web.cjs +15 -0
- package/dist/store.web.d.cts +7 -0
- package/dist/store.web.d.mts +7 -0
- package/dist/store.web.mjs +12 -0
- package/package.json +31 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { mutationOptions, queryOptions } from "@tanstack/react-query";
|
|
2
|
+
|
|
3
|
+
//#region src/settings/shared.ts
|
|
4
|
+
const settingNames = /* @__PURE__ */ new Set();
|
|
5
|
+
const settingNamePattern = /^[A-Za-z][A-Za-z0-9_.:-]*$/;
|
|
6
|
+
function createSettingApi(storage) {
|
|
7
|
+
function setting(name, defaultValue) {
|
|
8
|
+
assertSettingName(name);
|
|
9
|
+
assertSettingValue(resolveDefault(defaultValue));
|
|
10
|
+
if (settingNames.has(name)) throw new Error(`Setting "${name}" is already registered. Define each setting once and import the existing setting instead.`);
|
|
11
|
+
settingNames.add(name);
|
|
12
|
+
const queryKey = [
|
|
13
|
+
"silo",
|
|
14
|
+
"setting",
|
|
15
|
+
name
|
|
16
|
+
];
|
|
17
|
+
return {
|
|
18
|
+
name,
|
|
19
|
+
defaultValue,
|
|
20
|
+
queryKey,
|
|
21
|
+
queryOptions() {
|
|
22
|
+
return queryOptions({
|
|
23
|
+
queryKey,
|
|
24
|
+
queryFn: () => storage.read(name, defaultValue)
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
mutationOptions(options = {}) {
|
|
28
|
+
return mutationOptions({
|
|
29
|
+
mutationKey: queryKey,
|
|
30
|
+
mutationFn: async (valueOrUpdater) => {
|
|
31
|
+
const current = await storage.read(name, defaultValue);
|
|
32
|
+
const next = typeof valueOrUpdater === "function" ? valueOrUpdater(current) : valueOrUpdater;
|
|
33
|
+
await storage.write(name, next);
|
|
34
|
+
return next;
|
|
35
|
+
},
|
|
36
|
+
onSuccess(value) {
|
|
37
|
+
options.queryClient?.setQueryData(queryKey, value);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return { setting };
|
|
44
|
+
}
|
|
45
|
+
function storageKey(name) {
|
|
46
|
+
return `silo:setting:${name}`;
|
|
47
|
+
}
|
|
48
|
+
function resolveDefault(defaultValue) {
|
|
49
|
+
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
50
|
+
}
|
|
51
|
+
function assertSettingValue(value) {
|
|
52
|
+
if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean" && value !== null) throw new Error("Settings must be strings, numbers, booleans, or null.");
|
|
53
|
+
}
|
|
54
|
+
function assertSettingName(name) {
|
|
55
|
+
if (!settingNamePattern.test(name)) throw new Error(`Setting names must start with a letter and contain only letters, numbers, underscores, dots, colons, or hyphens. Received "${name}".`);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
export { assertSettingValue, createSettingApi, resolveDefault, storageKey };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_shared = require('./shared.cjs');
|
|
3
|
+
let expo_sqlite_kv_store = require("expo-sqlite/kv-store");
|
|
4
|
+
expo_sqlite_kv_store = require_rolldown_runtime.__toESM(expo_sqlite_kv_store);
|
|
5
|
+
|
|
6
|
+
//#region src/settings/storage.native.ts
|
|
7
|
+
const settingsStorage = {
|
|
8
|
+
read,
|
|
9
|
+
write
|
|
10
|
+
};
|
|
11
|
+
function read(name, defaultValue) {
|
|
12
|
+
const stored = expo_sqlite_kv_store.default.getItemSync(require_shared.storageKey(name));
|
|
13
|
+
if (stored === null) return require_shared.resolveDefault(defaultValue);
|
|
14
|
+
const value = JSON.parse(stored);
|
|
15
|
+
require_shared.assertSettingValue(value);
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function write(name, value) {
|
|
19
|
+
require_shared.assertSettingValue(value);
|
|
20
|
+
expo_sqlite_kv_store.default.setItemSync(require_shared.storageKey(name), JSON.stringify(value));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.settingsStorage = settingsStorage;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { assertSettingValue, resolveDefault, storageKey } from "./shared.mjs";
|
|
2
|
+
import Storage from "expo-sqlite/kv-store";
|
|
3
|
+
|
|
4
|
+
//#region src/settings/storage.native.ts
|
|
5
|
+
const settingsStorage = {
|
|
6
|
+
read,
|
|
7
|
+
write
|
|
8
|
+
};
|
|
9
|
+
function read(name, defaultValue) {
|
|
10
|
+
const stored = Storage.getItemSync(storageKey(name));
|
|
11
|
+
if (stored === null) return resolveDefault(defaultValue);
|
|
12
|
+
const value = JSON.parse(stored);
|
|
13
|
+
assertSettingValue(value);
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
function write(name, value) {
|
|
17
|
+
assertSettingValue(value);
|
|
18
|
+
Storage.setItemSync(storageKey(name), JSON.stringify(value));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { settingsStorage };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const require_indexed_db = require('../internal/indexed-db.cjs');
|
|
2
|
+
const require_shared = require('./shared.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/settings/storage.web.ts
|
|
5
|
+
const settingsStorage = {
|
|
6
|
+
read,
|
|
7
|
+
write
|
|
8
|
+
};
|
|
9
|
+
const openSiloSettingsIndexedDb = require_indexed_db.createIndexedDbOpener("silo-settings", 1, (db) => {
|
|
10
|
+
if (!db.objectStoreNames.contains("settings")) db.createObjectStore("settings", { keyPath: "key" });
|
|
11
|
+
});
|
|
12
|
+
async function read(name, defaultValue) {
|
|
13
|
+
const transaction = (await openSiloSettingsIndexedDb()).transaction("settings", "readonly");
|
|
14
|
+
const done = require_indexed_db.transactionDone(transaction);
|
|
15
|
+
const row = await require_indexed_db.requestResult(transaction.objectStore("settings").get(require_shared.storageKey(name)));
|
|
16
|
+
await done;
|
|
17
|
+
if (!row) return require_shared.resolveDefault(defaultValue);
|
|
18
|
+
const value = JSON.parse(row.value);
|
|
19
|
+
require_shared.assertSettingValue(value);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
async function write(name, value) {
|
|
23
|
+
require_shared.assertSettingValue(value);
|
|
24
|
+
const transaction = (await openSiloSettingsIndexedDb()).transaction("settings", "readwrite");
|
|
25
|
+
transaction.objectStore("settings").put({
|
|
26
|
+
key: require_shared.storageKey(name),
|
|
27
|
+
value: JSON.stringify(value),
|
|
28
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
29
|
+
});
|
|
30
|
+
await require_indexed_db.transactionDone(transaction);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
exports.settingsStorage = settingsStorage;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createIndexedDbOpener, requestResult, transactionDone } from "../internal/indexed-db.mjs";
|
|
2
|
+
import { assertSettingValue, resolveDefault, storageKey } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/settings/storage.web.ts
|
|
5
|
+
const settingsStorage = {
|
|
6
|
+
read,
|
|
7
|
+
write
|
|
8
|
+
};
|
|
9
|
+
const openSiloSettingsIndexedDb = createIndexedDbOpener("silo-settings", 1, (db) => {
|
|
10
|
+
if (!db.objectStoreNames.contains("settings")) db.createObjectStore("settings", { keyPath: "key" });
|
|
11
|
+
});
|
|
12
|
+
async function read(name, defaultValue) {
|
|
13
|
+
const transaction = (await openSiloSettingsIndexedDb()).transaction("settings", "readonly");
|
|
14
|
+
const done = transactionDone(transaction);
|
|
15
|
+
const row = await requestResult(transaction.objectStore("settings").get(storageKey(name)));
|
|
16
|
+
await done;
|
|
17
|
+
if (!row) return resolveDefault(defaultValue);
|
|
18
|
+
const value = JSON.parse(row.value);
|
|
19
|
+
assertSettingValue(value);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
async function write(name, value) {
|
|
23
|
+
assertSettingValue(value);
|
|
24
|
+
const transaction = (await openSiloSettingsIndexedDb()).transaction("settings", "readwrite");
|
|
25
|
+
transaction.objectStore("settings").put({
|
|
26
|
+
key: storageKey(name),
|
|
27
|
+
value: JSON.stringify(value),
|
|
28
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
29
|
+
});
|
|
30
|
+
await transactionDone(transaction);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
export { settingsStorage };
|
package/dist/settings.cjs
CHANGED
|
@@ -1,70 +1,8 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
let expo_sqlite_kv_store = require("expo-sqlite/kv-store");
|
|
4
|
-
expo_sqlite_kv_store = require_rolldown_runtime.__toESM(expo_sqlite_kv_store);
|
|
1
|
+
const require_shared = require('./settings/shared.cjs');
|
|
2
|
+
const require_storage_native = require('./settings/storage.native.cjs');
|
|
5
3
|
|
|
6
|
-
//#region src/settings/index.ts
|
|
7
|
-
const
|
|
8
|
-
const settingNamePattern = /^[A-Za-z][A-Za-z0-9_.:-]*$/;
|
|
9
|
-
function setting(name, defaultValue) {
|
|
10
|
-
assertSettingName(name);
|
|
11
|
-
assertSettingValue(resolveDefault(defaultValue));
|
|
12
|
-
if (settingNames.has(name)) throw new Error(`Setting "${name}" is already registered. Define each setting once and import the existing setting instead.`);
|
|
13
|
-
settingNames.add(name);
|
|
14
|
-
const queryKey = [
|
|
15
|
-
"silo",
|
|
16
|
-
"setting",
|
|
17
|
-
name
|
|
18
|
-
];
|
|
19
|
-
return {
|
|
20
|
-
name,
|
|
21
|
-
defaultValue,
|
|
22
|
-
queryKey,
|
|
23
|
-
queryOptions() {
|
|
24
|
-
return (0, __tanstack_react_query.queryOptions)({
|
|
25
|
-
queryKey,
|
|
26
|
-
queryFn: () => readSetting(name, defaultValue)
|
|
27
|
-
});
|
|
28
|
-
},
|
|
29
|
-
mutationOptions(options = {}) {
|
|
30
|
-
return (0, __tanstack_react_query.mutationOptions)({
|
|
31
|
-
mutationKey: queryKey,
|
|
32
|
-
mutationFn: async (valueOrUpdater) => {
|
|
33
|
-
const current = readSetting(name, defaultValue);
|
|
34
|
-
const next = typeof valueOrUpdater === "function" ? valueOrUpdater(current) : valueOrUpdater;
|
|
35
|
-
writeSetting(name, next);
|
|
36
|
-
return next;
|
|
37
|
-
},
|
|
38
|
-
onSuccess(value) {
|
|
39
|
-
options.queryClient?.setQueryData(queryKey, value);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
function readSetting(name, defaultValue) {
|
|
46
|
-
const stored = expo_sqlite_kv_store.default.getItemSync(storageKey(name));
|
|
47
|
-
if (stored === null) return resolveDefault(defaultValue);
|
|
48
|
-
const value = JSON.parse(stored);
|
|
49
|
-
assertSettingValue(value);
|
|
50
|
-
return value;
|
|
51
|
-
}
|
|
52
|
-
function writeSetting(name, value) {
|
|
53
|
-
assertSettingValue(value);
|
|
54
|
-
expo_sqlite_kv_store.default.setItemSync(storageKey(name), JSON.stringify(value));
|
|
55
|
-
}
|
|
56
|
-
function storageKey(name) {
|
|
57
|
-
return `silo:setting:${name}`;
|
|
58
|
-
}
|
|
59
|
-
function resolveDefault(defaultValue) {
|
|
60
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
61
|
-
}
|
|
62
|
-
function assertSettingName(name) {
|
|
63
|
-
if (!settingNamePattern.test(name)) throw new Error(`Setting names must start with a letter and contain only letters, numbers, underscores, dots, colons, or hyphens. Received "${name}".`);
|
|
64
|
-
}
|
|
65
|
-
function assertSettingValue(value) {
|
|
66
|
-
if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean" && value !== null) throw new Error("Settings must be strings, numbers, booleans, or null.");
|
|
67
|
-
}
|
|
4
|
+
//#region src/settings/index.native.ts
|
|
5
|
+
const { setting } = require_shared.createSettingApi(require_storage_native.settingsStorage);
|
|
68
6
|
|
|
69
7
|
//#endregion
|
|
70
8
|
exports.setting = setting;
|
package/dist/settings.d.cts
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue } from "./settings/shared.cjs";
|
|
2
2
|
|
|
3
|
-
//#region src/settings/index.d.ts
|
|
4
|
-
|
|
5
|
-
type SettingDefault<T extends SettingValue> = T | (() => T);
|
|
6
|
-
type SettingMutation<T extends SettingValue> = T | ((current: T) => T);
|
|
7
|
-
type SettingQueryKey = readonly ['silo', 'setting', string];
|
|
8
|
-
type SettingMutationOptions = {
|
|
9
|
-
queryClient?: QueryClient;
|
|
10
|
-
};
|
|
11
|
-
type Setting<T extends SettingValue> = {
|
|
12
|
-
readonly name: string;
|
|
13
|
-
readonly defaultValue: SettingDefault<T>;
|
|
14
|
-
readonly queryKey: SettingQueryKey;
|
|
15
|
-
queryOptions(): UseQueryOptions<T, Error, T, SettingQueryKey>;
|
|
16
|
-
mutationOptions(options?: SettingMutationOptions): UseMutationOptions<T, Error, SettingMutation<T>>;
|
|
17
|
-
};
|
|
18
|
-
declare function setting<T extends SettingValue>(name: string, defaultValue: SettingDefault<T>): Setting<T>;
|
|
3
|
+
//#region src/settings/index.native.d.ts
|
|
4
|
+
declare const setting: <T extends SettingValue>(name: string, defaultValue: SettingDefault<T>) => Setting<T>;
|
|
19
5
|
//#endregion
|
|
20
|
-
export { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue, setting };
|
|
6
|
+
export { type Setting, type SettingDefault, type SettingMutation, type SettingMutationOptions, type SettingQueryKey, type SettingValue, setting };
|
package/dist/settings.d.mts
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue } from "./settings/shared.mjs";
|
|
2
2
|
|
|
3
|
-
//#region src/settings/index.d.ts
|
|
4
|
-
|
|
5
|
-
type SettingDefault<T extends SettingValue> = T | (() => T);
|
|
6
|
-
type SettingMutation<T extends SettingValue> = T | ((current: T) => T);
|
|
7
|
-
type SettingQueryKey = readonly ['silo', 'setting', string];
|
|
8
|
-
type SettingMutationOptions = {
|
|
9
|
-
queryClient?: QueryClient;
|
|
10
|
-
};
|
|
11
|
-
type Setting<T extends SettingValue> = {
|
|
12
|
-
readonly name: string;
|
|
13
|
-
readonly defaultValue: SettingDefault<T>;
|
|
14
|
-
readonly queryKey: SettingQueryKey;
|
|
15
|
-
queryOptions(): UseQueryOptions<T, Error, T, SettingQueryKey>;
|
|
16
|
-
mutationOptions(options?: SettingMutationOptions): UseMutationOptions<T, Error, SettingMutation<T>>;
|
|
17
|
-
};
|
|
18
|
-
declare function setting<T extends SettingValue>(name: string, defaultValue: SettingDefault<T>): Setting<T>;
|
|
3
|
+
//#region src/settings/index.native.d.ts
|
|
4
|
+
declare const setting: <T extends SettingValue>(name: string, defaultValue: SettingDefault<T>) => Setting<T>;
|
|
19
5
|
//#endregion
|
|
20
|
-
export { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue, setting };
|
|
6
|
+
export { type Setting, type SettingDefault, type SettingMutation, type SettingMutationOptions, type SettingQueryKey, type SettingValue, setting };
|
package/dist/settings.mjs
CHANGED
|
@@ -1,68 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { createSettingApi } from "./settings/shared.mjs";
|
|
2
|
+
import { settingsStorage } from "./settings/storage.native.mjs";
|
|
3
3
|
|
|
4
|
-
//#region src/settings/index.ts
|
|
5
|
-
const
|
|
6
|
-
const settingNamePattern = /^[A-Za-z][A-Za-z0-9_.:-]*$/;
|
|
7
|
-
function setting(name, defaultValue) {
|
|
8
|
-
assertSettingName(name);
|
|
9
|
-
assertSettingValue(resolveDefault(defaultValue));
|
|
10
|
-
if (settingNames.has(name)) throw new Error(`Setting "${name}" is already registered. Define each setting once and import the existing setting instead.`);
|
|
11
|
-
settingNames.add(name);
|
|
12
|
-
const queryKey = [
|
|
13
|
-
"silo",
|
|
14
|
-
"setting",
|
|
15
|
-
name
|
|
16
|
-
];
|
|
17
|
-
return {
|
|
18
|
-
name,
|
|
19
|
-
defaultValue,
|
|
20
|
-
queryKey,
|
|
21
|
-
queryOptions() {
|
|
22
|
-
return queryOptions({
|
|
23
|
-
queryKey,
|
|
24
|
-
queryFn: () => readSetting(name, defaultValue)
|
|
25
|
-
});
|
|
26
|
-
},
|
|
27
|
-
mutationOptions(options = {}) {
|
|
28
|
-
return mutationOptions({
|
|
29
|
-
mutationKey: queryKey,
|
|
30
|
-
mutationFn: async (valueOrUpdater) => {
|
|
31
|
-
const current = readSetting(name, defaultValue);
|
|
32
|
-
const next = typeof valueOrUpdater === "function" ? valueOrUpdater(current) : valueOrUpdater;
|
|
33
|
-
writeSetting(name, next);
|
|
34
|
-
return next;
|
|
35
|
-
},
|
|
36
|
-
onSuccess(value) {
|
|
37
|
-
options.queryClient?.setQueryData(queryKey, value);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function readSetting(name, defaultValue) {
|
|
44
|
-
const stored = Storage.getItemSync(storageKey(name));
|
|
45
|
-
if (stored === null) return resolveDefault(defaultValue);
|
|
46
|
-
const value = JSON.parse(stored);
|
|
47
|
-
assertSettingValue(value);
|
|
48
|
-
return value;
|
|
49
|
-
}
|
|
50
|
-
function writeSetting(name, value) {
|
|
51
|
-
assertSettingValue(value);
|
|
52
|
-
Storage.setItemSync(storageKey(name), JSON.stringify(value));
|
|
53
|
-
}
|
|
54
|
-
function storageKey(name) {
|
|
55
|
-
return `silo:setting:${name}`;
|
|
56
|
-
}
|
|
57
|
-
function resolveDefault(defaultValue) {
|
|
58
|
-
return typeof defaultValue === "function" ? defaultValue() : defaultValue;
|
|
59
|
-
}
|
|
60
|
-
function assertSettingName(name) {
|
|
61
|
-
if (!settingNamePattern.test(name)) throw new Error(`Setting names must start with a letter and contain only letters, numbers, underscores, dots, colons, or hyphens. Received "${name}".`);
|
|
62
|
-
}
|
|
63
|
-
function assertSettingValue(value) {
|
|
64
|
-
if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean" && value !== null) throw new Error("Settings must be strings, numbers, booleans, or null.");
|
|
65
|
-
}
|
|
4
|
+
//#region src/settings/index.native.ts
|
|
5
|
+
const { setting } = createSettingApi(settingsStorage);
|
|
66
6
|
|
|
67
7
|
//#endregion
|
|
68
8
|
export { setting };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const require_shared = require('./settings/shared.cjs');
|
|
2
|
+
const require_storage_web = require('./settings/storage.web.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/settings/index.web.ts
|
|
5
|
+
const { setting } = require_shared.createSettingApi(require_storage_web.settingsStorage);
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
exports.setting = setting;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue } from "./settings/shared.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/settings/index.web.d.ts
|
|
4
|
+
declare const setting: <T extends SettingValue>(name: string, defaultValue: SettingDefault<T>) => Setting<T>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { type Setting, type SettingDefault, type SettingMutation, type SettingMutationOptions, type SettingQueryKey, type SettingValue, setting };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Setting, SettingDefault, SettingMutation, SettingMutationOptions, SettingQueryKey, SettingValue } from "./settings/shared.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/settings/index.web.d.ts
|
|
4
|
+
declare const setting: <T extends SettingValue>(name: string, defaultValue: SettingDefault<T>) => Setting<T>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { type Setting, type SettingDefault, type SettingMutation, type SettingMutationOptions, type SettingQueryKey, type SettingValue, setting };
|