@serfab/quereus-plugin-sereus 1.6.0 → 1.8.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.
@@ -1,59 +1,136 @@
1
- const STRAND_TRANSACTORS = ['local', 'network', 'test'];
1
+ const TEXT = {
2
+ expected: 'a string',
3
+ read: raw => (typeof raw === 'string' ? raw : undefined),
4
+ emptyIsAbsent: true,
5
+ };
6
+ const COMMA_LIST = {
7
+ ...TEXT,
8
+ expected: 'a comma-separated string',
9
+ read: raw => (typeof raw === 'string' ? raw.split(',').map(s => s.trim()).filter(Boolean) : undefined),
10
+ };
11
+ // NOTE: no numeric strings here or in FLAG, so a `${VAR}` in quoomb.config.json
12
+ // (whose env interpolation always yields a string) cannot supply port or
13
+ // enable_cache; if that is ever needed, accept decimal-integer strings here.
14
+ const PORT = {
15
+ expected: 'an integer from 0 to 65535',
16
+ read: raw => (typeof raw === 'number' && Number.isInteger(raw) && raw >= 0 && raw <= 65535 ? raw : undefined),
17
+ };
18
+ /** 0 and 1 are accepted because SQL has no boolean type. */
19
+ const FLAG = {
20
+ expected: 'true, false, 1 or 0',
21
+ read: raw => {
22
+ if (raw === true || raw === 1)
23
+ return true;
24
+ if (raw === false || raw === 0)
25
+ return false;
26
+ return undefined;
27
+ },
28
+ };
2
29
  /**
3
- * Read the optional `transactor` key. Unlike `fret_profile` (whose unknown
4
- * values fall back to the default), an unrecognised transactor throws: silently
5
- * running on the network when the caller asked for local storage is the kind of
6
- * mistake that only surfaces as a mysterious hang on a machine with no peers.
30
+ * One of a closed set of strings. The set is written as an object with every
31
+ * member as a key so it is checked against the union: `oneOf<StrandTransactor>`
32
+ * stops compiling when the union gains or loses a member.
7
33
  */
8
- function parseTransactor(raw) {
9
- if (raw === undefined || raw === null || raw === '')
10
- return undefined;
11
- if (typeof raw !== 'string' || !STRAND_TRANSACTORS.includes(raw)) {
12
- throw new Error(`quereus-plugin-sereus: transactor must be one of ${STRAND_TRANSACTORS.join(', ')} (got ${JSON.stringify(raw)})`);
13
- }
14
- return raw;
34
+ function oneOf(members) {
35
+ const values = Object.keys(members);
36
+ return {
37
+ expected: `one of ${values.join(', ')}`,
38
+ read: raw => values.find(v => v === raw),
39
+ emptyIsAbsent: true,
40
+ };
15
41
  }
42
+ const SETTINGS = {
43
+ strand_id: { ...TEXT, required: true },
44
+ bootstrap_nodes: COMMA_LIST,
45
+ schema: TEXT,
46
+ sapp_id: TEXT,
47
+ sapp_version: TEXT,
48
+ port: PORT,
49
+ enable_cache: FLAG,
50
+ fret_profile: oneOf({ edge: true, core: true }),
51
+ transactor: oneOf({ local: true, network: true, test: true }),
52
+ storage_path: TEXT,
53
+ };
54
+ /** Every key the plugin accepts; the package manifest's `quereus.settings` must list the same. */
55
+ export const PLUGIN_SETTING_KEYS = Object.keys(SETTINGS);
56
+ const PROBLEM_HEADER = 'quereus-plugin-sereus: invalid plugin settings';
57
+ /** A string echoed in a problem is cut here: enough to recognise a typo, not a pasted schema. */
58
+ const MAX_ECHOED_CHARS = 120;
16
59
  /**
17
60
  * Parse the plugin-loader SqlValue config into typed StrandConnectionOptions.
18
61
  * Shared by the Node (`plugin.ts`) and browser (`plugin-browser.ts`) entries.
62
+ *
63
+ * Strict: an unknown key or a value of the wrong type throws one error listing
64
+ * every problem, rather than falling back to a default the user never chose.
19
65
  */
20
66
  export function parseConfig(config) {
21
- const strandId = config.strand_id;
22
- if (typeof strandId !== 'string' || !strandId) {
23
- throw new Error('quereus-plugin-sereus: strand_id is required');
67
+ const problems = [];
68
+ const values = readSettings(config, problems);
69
+ problems.push(...unknownKeyProblems(config));
70
+ // `strand_id` is undefined only alongside its own "required" problem.
71
+ const strandId = values.strand_id;
72
+ if (problems.length > 0 || strandId === undefined) {
73
+ throw new Error([PROBLEM_HEADER, ...problems.map(p => ` - ${p}`)].join('\n'));
24
74
  }
25
- const bootstrapNodesRaw = config.bootstrap_nodes;
26
- const bootstrapNodes = typeof bootstrapNodesRaw === 'string' && bootstrapNodesRaw
27
- ? bootstrapNodesRaw.split(',').map(s => s.trim()).filter(Boolean)
28
- : [];
29
- const schema = typeof config.schema === 'string' ? config.schema : undefined;
30
- const sAppId = typeof config.sapp_id === 'string' ? config.sapp_id : 'unknown';
31
- const sAppVersion = typeof config.sapp_version === 'string' ? config.sapp_version : '1.0.0';
32
- const port = typeof config.port === 'number' ? config.port : 0;
33
- const enableCache = config.enable_cache !== false && config.enable_cache !== 0;
34
- const fretProfile = config.fret_profile === 'core' ? 'core' : 'edge';
35
- // Storage engine — see `StrandConnectionOptions.transactor`. Left out entirely
36
- // when unset so `composeStrand` applies its own default.
37
- const transactor = parseTransactor(config.transactor);
38
- // NOTE: `parseConfig` reads the keys it knows and ignores every other key in
39
- // the map — there is no allowlist, so a misspelled or retired setting (e.g.
40
- // the `mode` this package used to carry) is silently dropped rather than
41
- // rejected. Deliberate: the plugin loader hands through whatever the host's
42
- // settings file holds.
43
- // NOTE: persistent storage cannot ride a `Record<string, SqlValue>` — an
44
- // `IRawStorage` is not an `SqlValue`. The Node loader (`plugin.ts`) reads the
45
- // platform-only `storage_path` key directly and resolves it to a concrete
46
- // `FileRawStorage`; it is intentionally NOT parsed into the typed options here.
75
+ return toParsedConfig(strandId, values);
76
+ }
77
+ function readSettings(config, problems) {
78
+ const values = {};
79
+ for (const key of PLUGIN_SETTING_KEYS)
80
+ readSettingInto(values, key, config[key], problems);
81
+ return values;
82
+ }
83
+ function readSettingInto(values, key, raw, problems) {
84
+ const setting = SETTINGS[key];
85
+ if (raw === undefined || raw === null || (raw === '' && setting.emptyIsAbsent)) {
86
+ if (setting.required)
87
+ problems.push(`${key} is required`);
88
+ return;
89
+ }
90
+ const value = setting.read(raw);
91
+ if (value === undefined) {
92
+ problems.push(`${key} must be ${setting.expected} (got ${describeValue(raw)})`);
93
+ return;
94
+ }
95
+ values[key] = value;
96
+ }
97
+ function unknownKeyProblems(config) {
98
+ return Object.keys(config)
99
+ .filter(key => !Object.hasOwn(SETTINGS, key))
100
+ .map(key => key === 'mode'
101
+ ? 'mode was removed: a lone node now coordinates for itself, and transactor selects the storage engine'
102
+ : `unknown setting ${JSON.stringify(key)}; accepted settings are ${PLUGIN_SETTING_KEYS.join(', ')}`);
103
+ }
104
+ function describeValue(raw) {
105
+ if (typeof raw === 'string') {
106
+ return raw.length > MAX_ECHOED_CHARS
107
+ ? `${JSON.stringify(raw.slice(0, MAX_ECHOED_CHARS))}… (${raw.length} characters)`
108
+ : JSON.stringify(raw);
109
+ }
110
+ if (typeof raw === 'bigint')
111
+ return `${raw}n`;
112
+ if (typeof raw === 'number' || typeof raw === 'boolean')
113
+ return String(raw);
114
+ if (raw instanceof Uint8Array)
115
+ return `a blob of ${raw.length} bytes`;
116
+ return 'a JSON value';
117
+ }
118
+ function toParsedConfig(strandId, values) {
119
+ const { transactor } = values;
47
120
  return {
48
- strandId,
49
- bootstrapNodes,
50
- schema,
51
- sAppId,
52
- sAppVersion,
53
- port,
54
- enableCache,
55
- fretProfile,
56
- ...(transactor && { transactor }),
121
+ options: {
122
+ strandId,
123
+ bootstrapNodes: values.bootstrap_nodes ?? [],
124
+ schema: values.schema,
125
+ sAppId: values.sapp_id ?? 'unknown',
126
+ sAppVersion: values.sapp_version ?? '1.0.0',
127
+ port: values.port ?? 0,
128
+ enableCache: values.enable_cache ?? true,
129
+ fretProfile: values.fret_profile ?? 'edge',
130
+ // Left out entirely when unset so `composeStrand` applies its own default.
131
+ ...(transactor && { transactor }),
132
+ },
133
+ storagePath: values.storage_path,
57
134
  };
58
135
  }
59
136
  //# sourceMappingURL=parse-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../src/parse-config.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAgC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAErF;;;;;GAKG;AACH,SAAS,eAAe,CAAC,GAAa;IACrC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACtE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAuB,CAAC,EAAE,CAAC;QACtF,MAAM,IAAI,KAAK,CACd,oDAAoD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAChH,CAAC;IACH,CAAC;IACD,OAAO,GAAuB,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgC;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,eAAe,CAAC;IACjD,MAAM,cAAc,GAAG,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB;QAChF,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACjE,CAAC,CAAC,EAAE,CAAC;IAEN,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5F,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,KAAK,KAAK,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,MAAe,CAAC;IAEvF,+EAA+E;IAC/E,yDAAyD;IACzD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtD,6EAA6E;IAC7E,4EAA4E;IAC5E,yEAAyE;IACzE,4EAA4E;IAC5E,uBAAuB;IAEvB,yEAAyE;IACzE,8EAA8E;IAC9E,0EAA0E;IAC1E,gFAAgF;IAEhF,OAAO;QACN,QAAQ;QACR,cAAc;QACd,MAAM;QACN,MAAM;QACN,WAAW;QACX,IAAI;QACJ,WAAW;QACX,WAAW;QACX,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;KACjC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../src/parse-config.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@ export { parseConfig };
12
12
  /**
13
13
  * Default export: Quereus plugin registration function (browser).
14
14
  *
15
- * Note: the `storage_path` setting is Node-only (it resolves to a filesystem
16
- * `FileRawStorage` in `./plugin`). The browser entry ignores it and defaults
17
- * storage to IndexedDB via `connectToStrandBrowser`.
15
+ * The `storage_path` setting is Node-only (it resolves to a filesystem
16
+ * `FileRawStorage` in `./plugin`), so it is rejected here rather than ignored;
17
+ * storage defaults to IndexedDB via `connectToStrandBrowser`.
18
18
  */
19
19
  export default function register(db: Database, config?: Record<string, SqlValue>): Promise<SereusPluginResult>;