@tx5dr/plugin-api 2.0.0 → 2.5.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/README.md +201 -0
- package/dist/__tests__/adif.test.js +67 -0
- package/dist/__tests__/adif.test.js.map +1 -1
- package/dist/__tests__/testing-utils.test.js +17 -0
- package/dist/__tests__/testing-utils.test.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +2 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/compatibility.d.ts +15 -0
- package/dist/compatibility.d.ts.map +1 -0
- package/dist/compatibility.js +71 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/contest-logbook-ui/assets/contest-log.css +1 -0
- package/dist/contest-logbook-ui/assets/contest-log.js +40 -0
- package/dist/contest-logbook-ui/contest-log.html +13 -0
- package/dist/context.d.ts +39 -7
- package/dist/context.d.ts.map +1 -1
- package/dist/definition.d.ts +25 -1
- package/dist/definition.d.ts.map +1 -1
- package/dist/definition.js.map +1 -1
- package/dist/ft8/StandardQSOPluginRuntime.d.ts +142 -0
- package/dist/ft8/StandardQSOPluginRuntime.d.ts.map +1 -0
- package/dist/ft8/StandardQSOPluginRuntime.js +1592 -0
- package/dist/ft8/StandardQSOPluginRuntime.js.map +1 -0
- package/dist/ft8/index.d.ts +22 -0
- package/dist/ft8/index.d.ts.map +1 -0
- package/dist/ft8/index.js +176 -0
- package/dist/ft8/index.js.map +1 -0
- package/dist/helpers.d.ts +95 -3
- package/dist/helpers.d.ts.map +1 -1
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +377 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/simulation.d.ts +60 -0
- package/dist/simulation.d.ts.map +1 -0
- package/dist/simulation.js +2 -0
- package/dist/simulation.js.map +1 -0
- package/dist/testing/index.d.ts +5 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +67 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/toolkit/contest/CabrilloBuilder.d.ts +7 -0
- package/dist/toolkit/contest/CabrilloBuilder.d.ts.map +1 -0
- package/dist/toolkit/contest/CabrilloBuilder.js +11 -0
- package/dist/toolkit/contest/CabrilloBuilder.js.map +1 -0
- package/dist/toolkit/contest/ContestCategorySchema.d.ts +11 -0
- package/dist/toolkit/contest/ContestCategorySchema.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestCategorySchema.js +6 -0
- package/dist/toolkit/contest/ContestCategorySchema.js.map +1 -0
- package/dist/toolkit/contest/ContestLogbook.d.ts +223 -0
- package/dist/toolkit/contest/ContestLogbook.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestLogbook.js +845 -0
- package/dist/toolkit/contest/ContestLogbook.js.map +1 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts +28 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js +79 -0
- package/dist/toolkit/contest/ContestQsoEnvelopeAdapter.js.map +1 -0
- package/dist/toolkit/contest/ContestQsoProjector.d.ts +12 -0
- package/dist/toolkit/contest/ContestQsoProjector.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestQsoProjector.js +13 -0
- package/dist/toolkit/contest/ContestQsoProjector.js.map +1 -0
- package/dist/toolkit/contest/ContestSessionNotifier.d.ts +9 -0
- package/dist/toolkit/contest/ContestSessionNotifier.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestSessionNotifier.js +13 -0
- package/dist/toolkit/contest/ContestSessionNotifier.js.map +1 -0
- package/dist/toolkit/contest/ContestSessionRepository.d.ts +21 -0
- package/dist/toolkit/contest/ContestSessionRepository.d.ts.map +1 -0
- package/dist/toolkit/contest/ContestSessionRepository.js +27 -0
- package/dist/toolkit/contest/ContestSessionRepository.js.map +1 -0
- package/dist/toolkit/contest/DefaultContestSession.d.ts +105 -0
- package/dist/toolkit/contest/DefaultContestSession.d.ts.map +1 -0
- package/dist/toolkit/contest/DefaultContestSession.js +387 -0
- package/dist/toolkit/contest/DefaultContestSession.js.map +1 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.d.ts +100 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.d.ts.map +1 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.js +33 -0
- package/dist/toolkit/contest/DefaultContestWorkbench.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestDefinition.d.ts +83 -0
- package/dist/toolkit/contest/FT8ContestDefinition.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestDefinition.js +167 -0
- package/dist/toolkit/contest/FT8ContestDefinition.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestModules.d.ts +178 -0
- package/dist/toolkit/contest/FT8ContestModules.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestModules.js +247 -0
- package/dist/toolkit/contest/FT8ContestModules.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestPlugin.d.ts +55 -0
- package/dist/toolkit/contest/FT8ContestPlugin.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestPlugin.js +322 -0
- package/dist/toolkit/contest/FT8ContestPlugin.js.map +1 -0
- package/dist/toolkit/contest/FT8ContestTestKit.d.ts +12 -0
- package/dist/toolkit/contest/FT8ContestTestKit.d.ts.map +1 -0
- package/dist/toolkit/contest/FT8ContestTestKit.js +60 -0
- package/dist/toolkit/contest/FT8ContestTestKit.js.map +1 -0
- package/dist/toolkit/contest/contest-toolkit.test.d.ts +2 -0
- package/dist/toolkit/contest/contest-toolkit.test.d.ts.map +1 -0
- package/dist/toolkit/contest/contest-toolkit.test.js +1196 -0
- package/dist/toolkit/contest/contest-toolkit.test.js.map +1 -0
- package/dist/toolkit/contest/index.d.ts +14 -0
- package/dist/toolkit/contest/index.d.ts.map +1 -0
- package/dist/toolkit/contest/index.js +14 -0
- package/dist/toolkit/contest/index.js.map +1 -0
- package/dist/toolkit/index.d.ts +3 -0
- package/dist/toolkit/index.d.ts.map +1 -0
- package/dist/toolkit/index.js +3 -0
- package/dist/toolkit/index.js.map +1 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts +15 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.js +25 -0
- package/dist/toolkit/parallel-qso/AuthorizationLease.js.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts +40 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.js +81 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.js.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js +31 -0
- package/dist/toolkit/parallel-qso/BoundedCallSessionController.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.d.ts +20 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.js +20 -0
- package/dist/toolkit/parallel-qso/CompletionTracker.js.map +1 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts +19 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.js +23 -0
- package/dist/toolkit/parallel-qso/LaneFrequencyController.js.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts +134 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js +554 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.js.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js +470 -0
- package/dist/toolkit/parallel-qso/ParallelQSOCoordinator.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts +20 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js +29 -0
- package/dist/toolkit/parallel-qso/PostCompletionRecoveryLease.js.map +1 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.d.ts +50 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.js +2 -0
- package/dist/toolkit/parallel-qso/ProtocolLane.js.map +1 -0
- package/dist/toolkit/parallel-qso/controllers.test.d.ts +2 -0
- package/dist/toolkit/parallel-qso/controllers.test.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/controllers.test.js +36 -0
- package/dist/toolkit/parallel-qso/controllers.test.js.map +1 -0
- package/dist/toolkit/parallel-qso/index.d.ts +8 -0
- package/dist/toolkit/parallel-qso/index.d.ts.map +1 -0
- package/dist/toolkit/parallel-qso/index.js +8 -0
- package/dist/toolkit/parallel-qso/index.js.map +1 -0
- package/dist/utils/adif.d.ts +1 -1
- package/dist/utils/adif.d.ts.map +1 -1
- package/dist/utils/adif.js +91 -50
- package/dist/utils/adif.js.map +1 -1
- package/package.json +27 -5
- package/src/bridge.d.ts +3 -0
- package/tokens.css +51 -0
package/README.md
CHANGED
|
@@ -62,8 +62,159 @@ export default definePlugin({
|
|
|
62
62
|
|---------|-------------|
|
|
63
63
|
| `@tx5dr/plugin-api` | `definePlugin()`, capability-derived contexts, hooks, structured command ports, and radio/message types |
|
|
64
64
|
| `@tx5dr/plugin-api/testing` | Mock factories for unit testing: `createMockContext()`, `createMockSlotInfo()`, `createMockParsedMessage()`, `createMockEventBus()` |
|
|
65
|
+
| `@tx5dr/plugin-api/contest` | Composable FT8/FT4 exchange, completion, dupe, scoring, submission, session and plugin assembly modules |
|
|
66
|
+
| `@tx5dr/plugin-api/toolkit` | Advanced contest and parallel-QSO building blocks |
|
|
65
67
|
| `@tx5dr/plugin-api/bridge` | Ambient type declarations for the iframe Bridge SDK (`window.tx5dr`) |
|
|
66
68
|
|
|
69
|
+
Release boundary: `2.0.1` is the containment release for the existing
|
|
70
|
+
experimental/advanced `./toolkit` surface. The stable `./contest` entry point,
|
|
71
|
+
root re-exports and `ft8-contest` scaffold start at `2.5.0`; the publish workflow
|
|
72
|
+
rejects an older version when that stable export is present.
|
|
73
|
+
|
|
74
|
+
Plugin compatibility uses the bundled `@tx5dr/plugin-api` SemVer, not the
|
|
75
|
+
TX-5DR product/nightly version. Marketplace plugins declare
|
|
76
|
+
`minPluginApiVersion`; `apiVersion: 2` remains the separate runtime ABI marker.
|
|
77
|
+
|
|
78
|
+
## FT8 Contest Composition
|
|
79
|
+
|
|
80
|
+
Contest rules are public, replaceable modules. `composeFT8ContestPlugin()` is a
|
|
81
|
+
convenience entry point, not a required base class: a plugin may also import the
|
|
82
|
+
same modules and connect them with `definePlugin()` itself.
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import {
|
|
86
|
+
cabrilloSubmission,
|
|
87
|
+
CONTEST_LOGBOOK_PERMISSIONS,
|
|
88
|
+
composeFT8ContestPlugin,
|
|
89
|
+
defineFT8Contest,
|
|
90
|
+
distancePoints,
|
|
91
|
+
fixedWeekendEdition,
|
|
92
|
+
gridExchange,
|
|
93
|
+
requireExchangeAndFinalAck,
|
|
94
|
+
standardFT8ContestLogbook,
|
|
95
|
+
} from '@tx5dr/plugin-api/contest';
|
|
96
|
+
import { createContestRuntime } from './runtime.js';
|
|
97
|
+
|
|
98
|
+
const contest = defineFT8Contest({
|
|
99
|
+
id: 'example-ft8',
|
|
100
|
+
rulesetVersion: '2026.1',
|
|
101
|
+
edition: fixedWeekendEdition({
|
|
102
|
+
id: '2026',
|
|
103
|
+
startAt: '2026-08-29T00:00:00Z',
|
|
104
|
+
endAt: '2026-08-30T00:00:00Z',
|
|
105
|
+
}),
|
|
106
|
+
bands: ['80M', '40M', '20M', '15M', '10M'],
|
|
107
|
+
exchange: gridExchange(),
|
|
108
|
+
completion: requireExchangeAndFinalAck(),
|
|
109
|
+
scoring: distancePoints({ stepKm: 3000 }),
|
|
110
|
+
presentation: {
|
|
111
|
+
summary: 'FT8/FT4 grid exchange contest.',
|
|
112
|
+
scoring: 'One point plus one point per 3000 km step; grid fields provide multipliers.',
|
|
113
|
+
exchange: 'Four-character Maidenhead grid',
|
|
114
|
+
},
|
|
115
|
+
submission: cabrilloSubmission({
|
|
116
|
+
headers: () => [['CONTEST', 'EXAMPLE-FT8']],
|
|
117
|
+
qsoLine: (qso) => `QSO: ${qso.callsign}`,
|
|
118
|
+
}),
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
export default composeFT8ContestPlugin({
|
|
122
|
+
name: 'example-ft8',
|
|
123
|
+
version: '1.0.0',
|
|
124
|
+
minPluginApiVersion: '2.5.0',
|
|
125
|
+
permissions: CONTEST_LOGBOOK_PERMISSIONS,
|
|
126
|
+
contest,
|
|
127
|
+
runtime: createContestRuntime,
|
|
128
|
+
logbook: standardFT8ContestLogbook({ contest }),
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
For fixed-point sprints, prefix/DXCC/grid multipliers, or contests that need
|
|
133
|
+
zero-point QSOs to remain multiplier-eligible, combine `fixedPoints()`,
|
|
134
|
+
`scoreBy()` and `multiplierKeysFrom()` with your own contest metadata accessor.
|
|
135
|
+
`distancePoints()` is the common shortcut for distance-based FT8/FT4 scoring,
|
|
136
|
+
not the only way to compose a contest.
|
|
137
|
+
|
|
138
|
+
The definition defaults to FT8, one QSO, one signal, human initiation and
|
|
139
|
+
callsign-per-band duplicate checking. Completion remains mandatory because a
|
|
140
|
+
plugin must choose its RF fail-closed evidence policy explicitly. The assembler
|
|
141
|
+
maps human initiation and QSO/simultaneous-signal limits into Host-enforced
|
|
142
|
+
strategy capabilities. `cycleRelation` remains a runtime-adapter responsibility
|
|
143
|
+
because it depends on the contest protocol's lane semantics. Optional
|
|
144
|
+
`defaultContestSession()` and `defaultContestWorkbench()` hide storage keys and
|
|
145
|
+
page routing while keeping their module interfaces replaceable. For a complete
|
|
146
|
+
operator-facing contest logbook, use `standardFT8ContestLogbook({ contest })`;
|
|
147
|
+
it supplies the standard page, panel, bridge protocol, ADIF import/export and
|
|
148
|
+
official submission format. The `ft8-contest` scaffold copies the canonical
|
|
149
|
+
page assets automatically. The definition's `presentation` metadata is shown
|
|
150
|
+
as collapsible rule and scoring details with a link to the official rules; when
|
|
151
|
+
metadata is absent, the corresponding detail is omitted.
|
|
152
|
+
The standard logbook also derives the FrameTable's new-callsign and contest
|
|
153
|
+
multiplier presentation from the independent contest session, and the composer
|
|
154
|
+
adds it to the strategy snapshot automatically.
|
|
155
|
+
|
|
156
|
+
Single-stream contests may add `strategyFeatures.targetQueue` explicitly.
|
|
157
|
+
Definitions with more than one concurrent QSO automatically require the Host's
|
|
158
|
+
parallel queue contract; the assembler validates the returned runtime as soon
|
|
159
|
+
as it is created. Contest identities, editions and rule-module entry points are
|
|
160
|
+
snapshotted when `defineFT8Contest()` returns.
|
|
161
|
+
|
|
162
|
+
Use `projectFT8ContestQsos()`, `scoreFT8ContestQsos()` and
|
|
163
|
+
`formatFT8ContestSubmission()` as the common eligibility path. They apply the
|
|
164
|
+
edition window, supported modes/bands, review/excluded state and dupe policy
|
|
165
|
+
before score or export. Allocate serials with `nextContestSerial()` inside a
|
|
166
|
+
session `transact()` planner so a revision retry recalculates the serial from the
|
|
167
|
+
latest durable QSO snapshot.
|
|
168
|
+
|
|
169
|
+
For a contest application, declare the shared session capabilities and let the
|
|
170
|
+
facade own Host session keys, event topics and revision-conflict retries:
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
import {
|
|
174
|
+
CONTEST_SESSION_PERMISSIONS,
|
|
175
|
+
createContestQsoEnvelopeAdapter,
|
|
176
|
+
defaultContestSession,
|
|
177
|
+
} from '@tx5dr/plugin-api/contest';
|
|
178
|
+
|
|
179
|
+
const session = defaultContestSession({
|
|
180
|
+
create: () => ({ schemaVersion: 1, revision: 0, settings: {} }),
|
|
181
|
+
});
|
|
182
|
+
const contestEnvelope = createContestQsoEnvelopeAdapter(contest);
|
|
183
|
+
|
|
184
|
+
const contestEntry = contestEnvelope.create({
|
|
185
|
+
sent: { grid: 'PL04' },
|
|
186
|
+
received: { grid: 'FN31' },
|
|
187
|
+
annotations: { status: 'review' },
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// Inside a current Host callback:
|
|
191
|
+
await session.access(ctx).transact(
|
|
192
|
+
(snapshot) => planImportMutations(parsedImport, snapshot),
|
|
193
|
+
{ reason: 'import' },
|
|
194
|
+
);
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The facade opens the Host plugin-session on each current invocation, exposes
|
|
198
|
+
health/query/snapshot, retries a snapshot-planned QSO batch up to three times,
|
|
199
|
+
and publishes UI/event-bus notifications after commit. The plugin still parses
|
|
200
|
+
the file and owns its exchange, review fields and mutations. It never receives
|
|
201
|
+
the raw Host session handle. Use `CONTEST_SESSION_PERMISSIONS` as the plugin's
|
|
202
|
+
permissions when composing this default module.
|
|
203
|
+
|
|
204
|
+
Session identity includes plugin owner, station callsign, `contestId`,
|
|
205
|
+
`editionId` and `rulesetVersion`. The default facade is durable-only because its
|
|
206
|
+
cleanup context cannot destroy a runtime Host session; runtime practice/session
|
|
207
|
+
lifecycles must use strategy `logbookSessionEffects`. The envelope adapter
|
|
208
|
+
freezes the contest identity and uses the definition's typed exchange codec for
|
|
209
|
+
create/validation.
|
|
210
|
+
|
|
211
|
+
`defaultContestWorkbench()` exports a recommended `ContestWorkbenchCommand`
|
|
212
|
+
union for `get-state`, settings, QSO review, import and export action names plus
|
|
213
|
+
a narrow `ContestWorkbenchViewModel`. It is not a closed action DSL: plugins may
|
|
214
|
+
extend `ContestWorkbenchRequest` with custom actions. The plugin supplies typed
|
|
215
|
+
decoding, handlers and contest-specific generic fields; the SDK does not impose
|
|
216
|
+
a UI framework.
|
|
217
|
+
|
|
67
218
|
## Capability Model
|
|
68
219
|
|
|
69
220
|
Privileged Host APIs use an allowlist model. A plugin must declare every
|
|
@@ -388,6 +539,9 @@ Plugin iframe pages communicate with the host via the Bridge SDK (`window.tx5dr`
|
|
|
388
539
|
tx5dr.invoke('getState').then(function(state) {
|
|
389
540
|
// Full autocomplete for tx5dr methods
|
|
390
541
|
});
|
|
542
|
+
|
|
543
|
+
// Opens the system default browser in Electron, or a new tab in Web.
|
|
544
|
+
tx5dr.openExternal('https://example.com/rules');
|
|
391
545
|
```
|
|
392
546
|
|
|
393
547
|
## CSS Design Tokens
|
|
@@ -410,8 +564,55 @@ Then use the tokens in your plugin CSS:
|
|
|
410
564
|
}
|
|
411
565
|
```
|
|
412
566
|
|
|
567
|
+
The host deliberately does not inject component classes. Plugins own their
|
|
568
|
+
markup and CSS, while the token layer exposes enough primitives to reproduce
|
|
569
|
+
the host's control variants consistently. For example, a plugin can assemble
|
|
570
|
+
its own flat primary button:
|
|
571
|
+
|
|
572
|
+
```css
|
|
573
|
+
.button {
|
|
574
|
+
min-height: var(--tx5dr-control-height-sm);
|
|
575
|
+
padding-inline: var(--tx5dr-control-padding-x-sm);
|
|
576
|
+
border: 1px solid transparent;
|
|
577
|
+
border-radius: var(--tx5dr-radius-sm);
|
|
578
|
+
font-size: var(--tx5dr-control-font-size-sm);
|
|
579
|
+
font-weight: var(--tx5dr-control-font-weight);
|
|
580
|
+
transition: background-color var(--tx5dr-control-transition);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
.button--flat-primary {
|
|
584
|
+
color: var(--tx5dr-primary);
|
|
585
|
+
background: var(--tx5dr-primary-soft);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.button--flat-primary:hover:not(:disabled) {
|
|
589
|
+
background: var(--tx5dr-primary-soft-hover);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.button:disabled {
|
|
593
|
+
opacity: var(--tx5dr-control-disabled-opacity);
|
|
594
|
+
}
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
The same primitives support plugin-owned `solid`, `flat`, `bordered`, and
|
|
598
|
+
`light` variants. Semantic soft/foreground tokens are available for primary,
|
|
599
|
+
success, warning, and danger controls; compact status, table, alert, shadow,
|
|
600
|
+
focus, spacing, and typography primitives use the corresponding
|
|
601
|
+
`--tx5dr-control-*`, `--tx5dr-chip-*`, `--tx5dr-table-*`, and base tokens.
|
|
602
|
+
|
|
413
603
|
## Testing
|
|
414
604
|
|
|
605
|
+
慢速历史扫描、缓存预热或迁移应通过 Host 的启动后任务执行:
|
|
606
|
+
|
|
607
|
+
```ts
|
|
608
|
+
context.lifecycle.scheduleAfterStartup('history-prewarm', async (signal) => {
|
|
609
|
+
if (signal.aborted) return;
|
|
610
|
+
await rebuildHistory(signal);
|
|
611
|
+
});
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Host 会在 Server ready 后调度任务,并在插件实例卸载或重载时自动取消。
|
|
615
|
+
|
|
415
616
|
```typescript
|
|
416
617
|
import { describe, it, expect } from 'vitest';
|
|
417
618
|
import {
|
|
@@ -28,6 +28,73 @@ describe('ADIF QSO mode projection', () => {
|
|
|
28
28
|
expect(parsed?.mode).toBe('SSB');
|
|
29
29
|
expect(parsed?.submode).toBe('USB');
|
|
30
30
|
});
|
|
31
|
+
it('round-trips the contest identifier used for WW Digi recovery', () => {
|
|
32
|
+
const adif = convertQSOToADIF(createQso({
|
|
33
|
+
mode: 'FT8',
|
|
34
|
+
submode: undefined,
|
|
35
|
+
contestId: 'WW-DIGI',
|
|
36
|
+
}));
|
|
37
|
+
expect(adif).toContain('<contest_id:7>WW-DIGI');
|
|
38
|
+
expect(parseADIFRecord(adif, 'test')?.contestId).toBe('WW-DIGI');
|
|
39
|
+
});
|
|
40
|
+
it('round-trips the atomic contest envelope with Unicode exchange data', () => {
|
|
41
|
+
const contestEntry = {
|
|
42
|
+
schemaVersion: 1,
|
|
43
|
+
contestId: 'FT-CHALLENGE',
|
|
44
|
+
editionId: '2026-weekend-1',
|
|
45
|
+
rulesetVersion: '2026.1',
|
|
46
|
+
sent: { grid: 'PL05', operatorNote: '台北<portable>' },
|
|
47
|
+
received: { grid: 'PM96', snr: '-12' },
|
|
48
|
+
annotations: { status: 'included', transmitter: 1, reviewed: false },
|
|
49
|
+
};
|
|
50
|
+
const adif = convertQSOToADIF(createQso({
|
|
51
|
+
contestId: contestEntry.contestId,
|
|
52
|
+
contestEntry,
|
|
53
|
+
}));
|
|
54
|
+
expect(adif).toContain('<contest_id:12>FT-CHALLENGE');
|
|
55
|
+
expect(adif).toMatch(/<app_tx5dr_contest_entry:\d+>\{"schemaVersion":1/);
|
|
56
|
+
expect(parseADIFRecord(adif, 'test')).toMatchObject({
|
|
57
|
+
contestId: contestEntry.contestId,
|
|
58
|
+
contestEntry,
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
it('parses external Unicode contest envelopes using ADIF byte lengths', () => {
|
|
62
|
+
const contestEntry = {
|
|
63
|
+
schemaVersion: 1,
|
|
64
|
+
contestId: 'FT-CHALLENGE',
|
|
65
|
+
editionId: '2026-weekend-1',
|
|
66
|
+
rulesetVersion: '2026.1',
|
|
67
|
+
sent: { grid: 'PL05', operatorNote: '台北' },
|
|
68
|
+
received: { grid: 'PM96', snr: '-12' },
|
|
69
|
+
};
|
|
70
|
+
const rawEnvelope = JSON.stringify(contestEntry);
|
|
71
|
+
const adif = '<CALL:6>N0CALL<QSO_DATE:8>20260417<TIME_ON:6>120000<MODE:3>FT8<FREQ:9>14.074000'
|
|
72
|
+
+ '<CONTEST_ID:12>FT-CHALLENGE'
|
|
73
|
+
+ `<APP_TX5DR_CONTEST_ENTRY:${Buffer.byteLength(rawEnvelope)}>${rawEnvelope}<EOR>`;
|
|
74
|
+
expect(parseADIFRecord(adif, 'test')).toMatchObject({ contestEntry });
|
|
75
|
+
});
|
|
76
|
+
it('round-trips Unicode QTH and notes with UTF-8 byte lengths', () => {
|
|
77
|
+
const adif = convertQSOToADIF(createQso({ qth: '台北', notes: '測試' }));
|
|
78
|
+
expect(adif).toContain('<qth:6>台北');
|
|
79
|
+
expect(adif).toContain('<notes:6>測試');
|
|
80
|
+
expect(parseADIFRecord(adif, 'test')).toMatchObject({ qth: '台北', notes: '測試' });
|
|
81
|
+
});
|
|
82
|
+
it('does not attach a private contest envelope that conflicts with CONTEST_ID', () => {
|
|
83
|
+
const encoded = convertQSOToADIF(createQso({
|
|
84
|
+
contestId: 'FT-CHALLENGE',
|
|
85
|
+
contestEntry: {
|
|
86
|
+
schemaVersion: 1,
|
|
87
|
+
contestId: 'FT-CHALLENGE',
|
|
88
|
+
editionId: '2026-weekend-1',
|
|
89
|
+
rulesetVersion: '2026.1',
|
|
90
|
+
sent: {},
|
|
91
|
+
received: {},
|
|
92
|
+
},
|
|
93
|
+
})).replace('FT-CHALLENGE', 'WW-DIGI ');
|
|
94
|
+
const parsed = parseADIFRecord(encoded, 'test');
|
|
95
|
+
expect(parsed?.contestId).toBe('WW-DIGI ');
|
|
96
|
+
expect(parsed?.contestEntry).toBeUndefined();
|
|
97
|
+
});
|
|
31
98
|
});
|
|
32
99
|
describe('ADIF QSO comments', () => {
|
|
33
100
|
it('exports WSJT-X compatible signal reports in COMMENT', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adif.test.js","sourceRoot":"","sources":["../../src/__tests__/adif.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adif.test.js","sourceRoot":"","sources":["../../src/__tests__/adif.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -121,6 +121,7 @@ describe('plugin-api testing utilities', () => {
|
|
|
121
121
|
expect(ctx.operator.callsign).toBe('W1AW');
|
|
122
122
|
expect(ctx.operator.grid).toBe('FN31');
|
|
123
123
|
expect(ctx.radio.isConnected).toBe(true);
|
|
124
|
+
expect(ctx.pluginApiVersion).toBe('2.5.0');
|
|
124
125
|
expect(ctx.config).toEqual({});
|
|
125
126
|
expect('eventBus' in ctx).toBe(false);
|
|
126
127
|
});
|
|
@@ -172,6 +173,22 @@ describe('plugin-api testing utilities', () => {
|
|
|
172
173
|
ctx.log.info('test');
|
|
173
174
|
expect(ctx.log._calls).toHaveLength(1);
|
|
174
175
|
});
|
|
176
|
+
it('exposes only plugin-owned sessions for the session permission', async () => {
|
|
177
|
+
const ctx = createMockContext({
|
|
178
|
+
permissions: ['logbook:session'],
|
|
179
|
+
callsign: 'BG4IAJ',
|
|
180
|
+
});
|
|
181
|
+
expect('queryQSOs' in ctx.logbook).toBe(false);
|
|
182
|
+
const session = await ctx.logbook.sessions.open({
|
|
183
|
+
sessionKey: 'contest:2026',
|
|
184
|
+
stationCallsign: 'BG4IAJ',
|
|
185
|
+
title: 'Contest 2026',
|
|
186
|
+
});
|
|
187
|
+
expect(session).toMatchObject({
|
|
188
|
+
id: 'plugin-session-contest:2026',
|
|
189
|
+
title: 'Contest 2026',
|
|
190
|
+
});
|
|
191
|
+
});
|
|
175
192
|
it('includes host settings mocks', async () => {
|
|
176
193
|
const ctx = createMockContext({ permissions: ['settings:ft8'] });
|
|
177
194
|
await expect(ctx.settings.ft8.update({ maxSameTransmissionCount: 0 })).resolves.toMatchObject({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/testing-utils.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/testing-utils.test.ts"],"names":[],"mappings":"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"}
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare const PLUGIN_CONTEXT_CAPABILITY_KEYS: {
|
|
|
14
14
|
readonly 'radio:power': readonly ["radioPowerCommands"];
|
|
15
15
|
readonly 'logbook:read': readonly ["logbook"];
|
|
16
16
|
readonly 'logbook:write': readonly ["logbook"];
|
|
17
|
+
readonly 'logbook:session': readonly ["logbook"];
|
|
17
18
|
readonly 'logbook:sync': readonly ["logbookSync"];
|
|
18
19
|
readonly 'settings:ft8': readonly ["settings"];
|
|
19
20
|
readonly 'settings:decode-windows': readonly ["settings"];
|
|
@@ -31,7 +32,7 @@ export type PluginContextCapabilityPermission = keyof typeof PLUGIN_CONTEXT_CAPA
|
|
|
31
32
|
/** Top-level runtime context property controlled by a manifest permission. */
|
|
32
33
|
export type PluginContextCapabilityKey = (typeof PLUGIN_CONTEXT_CAPABILITY_KEYS)[PluginContextCapabilityPermission][number];
|
|
33
34
|
/** Permissions that expose host-arbitrated mutation ports and therefore require API v2. */
|
|
34
|
-
export declare const PLUGIN_COMMAND_CAPABILITY_PERMISSIONS: readonly ["operator:transmit-control", "radio:control", "radio:tuner-control", "radio:power", "logbook:write", "logbook:sync"];
|
|
35
|
+
export declare const PLUGIN_COMMAND_CAPABILITY_PERMISSIONS: readonly ["operator:transmit-control", "radio:control", "radio:tuner-control", "radio:power", "logbook:write", "logbook:session", "logbook:sync"];
|
|
35
36
|
/** Returns the unique context-property allowlist implied by a permission list. */
|
|
36
37
|
export declare function getPluginContextCapabilityKeys(permissions: readonly PluginPermission[] | undefined): PluginContextCapabilityKey[];
|
|
37
38
|
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;CAoB8B,CAAC;AAE1E,kFAAkF;AAClF,MAAM,MAAM,iCAAiC,GAAG,MAAM,OAAO,8BAA8B,CAAC;AAC5F,8EAA8E;AAC9E,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,8BAA8B,CAAC,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,2FAA2F;AAC3F,eAAO,MAAM,qCAAqC,mJAQF,CAAC;AAEjD,kFAAkF;AAClF,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,GACnD,0BAA0B,EAAE,CAW9B"}
|
package/dist/capabilities.js
CHANGED
|
@@ -13,6 +13,7 @@ export const PLUGIN_CONTEXT_CAPABILITY_KEYS = {
|
|
|
13
13
|
'radio:power': ['radioPowerCommands'],
|
|
14
14
|
'logbook:read': ['logbook'],
|
|
15
15
|
'logbook:write': ['logbook'],
|
|
16
|
+
'logbook:session': ['logbook'],
|
|
16
17
|
'logbook:sync': ['logbookSync'],
|
|
17
18
|
'settings:ft8': ['settings'],
|
|
18
19
|
'settings:decode-windows': ['settings'],
|
|
@@ -32,6 +33,7 @@ export const PLUGIN_COMMAND_CAPABILITY_PERMISSIONS = [
|
|
|
32
33
|
'radio:tuner-control',
|
|
33
34
|
'radio:power',
|
|
34
35
|
'logbook:write',
|
|
36
|
+
'logbook:session',
|
|
35
37
|
'logbook:sync',
|
|
36
38
|
];
|
|
37
39
|
/** Returns the unique context-property allowlist implied by a permission list. */
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,2BAA2B,EAAE,CAAC,kBAAkB,CAAC;IACjD,YAAY,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;IACjD,eAAe,EAAE,CAAC,eAAe,CAAC;IAClC,qBAAqB,EAAE,CAAC,oBAAoB,CAAC;IAC7C,aAAa,EAAE,CAAC,oBAAoB,CAAC;IACrC,cAAc,EAAE,CAAC,SAAS,CAAC;IAC3B,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5B,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,cAAc,EAAE,CAAC,UAAU,CAAC;IAC5B,yBAAyB,EAAE,CAAC,UAAU,CAAC;IACvC,mBAAmB,EAAE,CAAC,UAAU,CAAC;IACjC,4BAA4B,EAAE,CAAC,UAAU,CAAC;IAC1C,kBAAkB,EAAE,CAAC,UAAU,CAAC;IAChC,uBAAuB,EAAE,CAAC,UAAU,CAAC;IACrC,cAAc,EAAE,CAAC,UAAU,CAAC;IAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,CAAC,UAAU,CAAC;IAChC,aAAa,EAAE,CAAC,kBAAkB,CAAC;CACoC,CAAC;AAQ1E,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,2BAA2B;IAC3B,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,eAAe;IACf,cAAc;CACgC,CAAC;AAEjD,kFAAkF;AAClF,MAAM,UAAU,8BAA8B,CAC5C,WAAoD;IAEpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,KAAK,MAAM,UAAU,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,8BAA8B,CACnD,UAA+C,CAChD,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,2BAA2B,EAAE,CAAC,kBAAkB,CAAC;IACjD,YAAY,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;IACjD,eAAe,EAAE,CAAC,eAAe,CAAC;IAClC,qBAAqB,EAAE,CAAC,oBAAoB,CAAC;IAC7C,aAAa,EAAE,CAAC,oBAAoB,CAAC;IACrC,cAAc,EAAE,CAAC,SAAS,CAAC;IAC3B,eAAe,EAAE,CAAC,SAAS,CAAC;IAC5B,iBAAiB,EAAE,CAAC,SAAS,CAAC;IAC9B,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,cAAc,EAAE,CAAC,UAAU,CAAC;IAC5B,yBAAyB,EAAE,CAAC,UAAU,CAAC;IACvC,mBAAmB,EAAE,CAAC,UAAU,CAAC;IACjC,4BAA4B,EAAE,CAAC,UAAU,CAAC;IAC1C,kBAAkB,EAAE,CAAC,UAAU,CAAC;IAChC,uBAAuB,EAAE,CAAC,UAAU,CAAC;IACrC,cAAc,EAAE,CAAC,UAAU,CAAC;IAC5B,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,CAAC,UAAU,CAAC;IAChC,aAAa,EAAE,CAAC,kBAAkB,CAAC;CACoC,CAAC;AAQ1E,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qCAAqC,GAAG;IACnD,2BAA2B;IAC3B,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,cAAc;CACgC,CAAC;AAEjD,kFAAkF;AAClF,MAAM,UAAU,8BAA8B,CAC5C,WAAoD;IAEpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8B,CAAC;IACnD,KAAK,MAAM,UAAU,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,8BAA8B,CACnD,UAA+C,CAChD,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Compares Plugin API semantic versions. Build metadata is intentionally ignored. */
|
|
2
|
+
export declare function comparePluginApiVersions(left: string, right: string): number | null;
|
|
3
|
+
/** Stable error returned when a plugin requires a newer Plugin API. */
|
|
4
|
+
export declare class PluginApiCompatibilityError extends Error {
|
|
5
|
+
readonly pluginApiVersion: string;
|
|
6
|
+
readonly minPluginApiVersion: string;
|
|
7
|
+
readonly pluginName?: string | undefined;
|
|
8
|
+
/** Machine-readable compatibility failure code. */
|
|
9
|
+
readonly code: "PLUGIN_API_VERSION_UNSUPPORTED";
|
|
10
|
+
/** Captures the available version, required floor, and optional plugin identity. */
|
|
11
|
+
constructor(pluginApiVersion: string, minPluginApiVersion: string, pluginName?: string | undefined);
|
|
12
|
+
}
|
|
13
|
+
/** Throws when a Host cannot prove it satisfies a plugin's Plugin API floor. */
|
|
14
|
+
export declare function assertPluginApiCompatible(minPluginApiVersion: string | undefined, pluginName: string | undefined, pluginApiVersion: string | undefined): void;
|
|
15
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAuCA,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnF;AAED,uEAAuE;AACvE,qBAAa,2BAA4B,SAAQ,KAAK;IAMlD,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAP9B,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAG,gCAAgC,CAAU;IAE1D,oFAAoF;gBAEzE,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,MAAM,YAAA;CAQ/B;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CACvC,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,IAAI,CAON"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const SEMVER_PATTERN = /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;
|
|
2
|
+
function parseSemver(value) {
|
|
3
|
+
const match = SEMVER_PATTERN.exec(value.trim());
|
|
4
|
+
if (!match)
|
|
5
|
+
return null;
|
|
6
|
+
return {
|
|
7
|
+
major: Number(match[1]),
|
|
8
|
+
minor: Number(match[2]),
|
|
9
|
+
patch: Number(match[3]),
|
|
10
|
+
prerelease: match[4]?.split('.') ?? [],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function comparePrerelease(left, right) {
|
|
14
|
+
if (left.length === 0 || right.length === 0) {
|
|
15
|
+
return left.length === right.length ? 0 : left.length === 0 ? 1 : -1;
|
|
16
|
+
}
|
|
17
|
+
const length = Math.max(left.length, right.length);
|
|
18
|
+
for (let index = 0; index < length; index += 1) {
|
|
19
|
+
const a = left[index];
|
|
20
|
+
const b = right[index];
|
|
21
|
+
if (a === undefined || b === undefined)
|
|
22
|
+
return a === b ? 0 : a === undefined ? -1 : 1;
|
|
23
|
+
if (a === b)
|
|
24
|
+
continue;
|
|
25
|
+
const aNumeric = /^\d+$/.test(a);
|
|
26
|
+
const bNumeric = /^\d+$/.test(b);
|
|
27
|
+
if (aNumeric && bNumeric)
|
|
28
|
+
return Number(a) < Number(b) ? -1 : 1;
|
|
29
|
+
if (aNumeric !== bNumeric)
|
|
30
|
+
return aNumeric ? -1 : 1;
|
|
31
|
+
return a < b ? -1 : 1;
|
|
32
|
+
}
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
/** Compares Plugin API semantic versions. Build metadata is intentionally ignored. */
|
|
36
|
+
export function comparePluginApiVersions(left, right) {
|
|
37
|
+
const a = parseSemver(left);
|
|
38
|
+
const b = parseSemver(right);
|
|
39
|
+
if (!a || !b)
|
|
40
|
+
return null;
|
|
41
|
+
for (const key of ['major', 'minor', 'patch']) {
|
|
42
|
+
if (a[key] !== b[key])
|
|
43
|
+
return a[key] < b[key] ? -1 : 1;
|
|
44
|
+
}
|
|
45
|
+
return comparePrerelease(a.prerelease, b.prerelease);
|
|
46
|
+
}
|
|
47
|
+
/** Stable error returned when a plugin requires a newer Plugin API. */
|
|
48
|
+
export class PluginApiCompatibilityError extends Error {
|
|
49
|
+
/** Captures the available version, required floor, and optional plugin identity. */
|
|
50
|
+
constructor(pluginApiVersion, minPluginApiVersion, pluginName) {
|
|
51
|
+
super(`PLUGIN_API_VERSION_UNSUPPORTED: ${pluginName ? `plugin ${pluginName} ` : 'plugin '}`
|
|
52
|
+
+ `requires Plugin API >= ${minPluginApiVersion}; bundled Plugin API is ${pluginApiVersion}`);
|
|
53
|
+
this.pluginApiVersion = pluginApiVersion;
|
|
54
|
+
this.minPluginApiVersion = minPluginApiVersion;
|
|
55
|
+
this.pluginName = pluginName;
|
|
56
|
+
/** Machine-readable compatibility failure code. */
|
|
57
|
+
this.code = 'PLUGIN_API_VERSION_UNSUPPORTED';
|
|
58
|
+
this.name = 'PluginApiCompatibilityError';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Throws when a Host cannot prove it satisfies a plugin's Plugin API floor. */
|
|
62
|
+
export function assertPluginApiCompatible(minPluginApiVersion, pluginName, pluginApiVersion) {
|
|
63
|
+
if (!minPluginApiVersion)
|
|
64
|
+
return;
|
|
65
|
+
const currentVersion = pluginApiVersion?.trim() || 'unavailable';
|
|
66
|
+
const comparison = comparePluginApiVersions(currentVersion, minPluginApiVersion);
|
|
67
|
+
if (comparison === null || comparison < 0) {
|
|
68
|
+
throw new PluginApiCompatibilityError(currentVersion, minPluginApiVersion, pluginName);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{color-scheme:dark;font-family:var(--tx5dr-font, Inter, system-ui, sans-serif);color:var(--tx5dr-text, #fafafa);background:var(--tx5dr-bg, #18181b)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:var(--tx5dr-bg, #18181b)}button,input,select{font:inherit}button,.file-button{border:1px solid var(--tx5dr-control-border, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px);background:var(--tx5dr-control-bg, #27272a);color:var(--tx5dr-control-text, #fafafa);padding:.5rem .75rem;cursor:pointer}button:hover,.file-button:hover{background:var(--tx5dr-control-bg-hover, #3f3f46)}button:focus-visible,input:focus-visible,select:focus-visible,.file-button:focus-within{outline:2px solid var(--tx5dr-primary, #006fee);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:var(--tx5dr-control-disabled-opacity, .55)}button.secondary{margin-left:.5rem}.page{max-width:1280px;min-height:100vh;margin:0 auto;padding:20px}.header{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--tx5dr-border, #3f3f46);padding-bottom:16px}h1,h2,p{margin:0}h1{font-size:20px}h2{font-size:15px;margin-bottom:12px}.header p{color:var(--tx5dr-text-secondary, #a1a1aa);font-size:12px;margin-top:5px}.health{border-radius:var(--tx5dr-radius-full, 9999px);padding:5px 9px;font-size:12px;background:var(--tx5dr-success-soft, #12351f);color:var(--tx5dr-success, #17c964)}.health-degraded{background:var(--tx5dr-warning-soft, #3b2b0c);color:var(--tx5dr-warning, #f5a524)}.health-error,.health-closed{background:var(--tx5dr-danger-soft, #3b1020);color:var(--tx5dr-danger, #f31260)}.alert{border-radius:var(--tx5dr-radius-sm, 6px);padding:var(--tx5dr-alert-padding, 10px 12px);margin-top:12px;font-size:13px}.alert-error{background:var(--tx5dr-danger-soft, #3b1020);color:var(--tx5dr-danger-foreground, #fff)}.alert-warning{background:var(--tx5dr-warning-soft, #3b2b0c);color:var(--tx5dr-warning-foreground, #fef3c7)}.score-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.score{border:1px solid var(--tx5dr-border, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px);padding:12px;background:var(--tx5dr-bg-content, #27272a);box-shadow:var(--tx5dr-shadow-sm, none)}.score span{display:block;color:var(--tx5dr-text-secondary, #a1a1aa);font-size:12px}.score strong{display:block;font-size:21px;margin-top:5px;color:var(--tx5dr-text, #fafafa)}.score.primary{border-color:var(--tx5dr-primary, #006fee)}.score-warning strong{color:var(--tx5dr-warning, #f5a524)}.section{border-top:1px solid var(--tx5dr-border, #3f3f46);padding:16px 0}.section-toggle{display:flex;width:100%;align-items:center;justify-content:space-between;border:0;border-radius:var(--tx5dr-radius-sm, 6px);background:transparent;color:var(--tx5dr-text, #fafafa);padding:0 0 12px;font-size:15px;font-weight:600;text-align:left}.section-toggle:hover{background:transparent;color:var(--tx5dr-primary, #006fee)}.disclosure-chevron{width:8px;height:8px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .14s ease}.disclosure-chevron.is-expanded{transform:rotate(225deg) translate(-1px,-1px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.official-link{color:var(--tx5dr-primary, #006fee);font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap}.official-link:hover{color:var(--tx5dr-primary-hover, #005bc4);text-decoration:underline}.rules-content,.score-details{display:grid;gap:12px}.rule-summary{color:var(--tx5dr-text, #fafafa);font-size:13px;line-height:1.55;max-width:900px}.rule-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.rule-fact,.detail-grid>div{display:flex;flex-direction:column;gap:4px;border:1px solid var(--tx5dr-border, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px);background:var(--tx5dr-bg-content, #27272a);padding:9px 10px}.rule-fact span,.detail-grid span{color:var(--tx5dr-text-secondary, #a1a1aa);font-size:11px}.rule-fact strong,.detail-grid strong{color:var(--tx5dr-text, #fafafa);font-size:13px;font-weight:600;overflow-wrap:anywhere}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--tx5dr-text-secondary, #a1a1aa)}.field input,.field select,td select{border:1px solid var(--tx5dr-control-border, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px);background:var(--tx5dr-control-bg, #27272a);color:var(--tx5dr-control-text, #fafafa);padding:7px 8px;min-width:0}.field input[type=checkbox]{width:18px;height:18px;accent-color:var(--tx5dr-primary, #006fee)}.issues,.issue-list{margin:10px 0;color:var(--tx5dr-warning, #f5a524);font-size:12px}.issue-list div{padding:7px 0;border-bottom:1px solid var(--tx5dr-border, #3f3f46)}.import-export{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.file-button{display:inline-block;font-size:13px}.file-button input{display:none}.preview{margin-top:10px;border:1px solid var(--tx5dr-border, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px);padding:10px;background:var(--tx5dr-bg-content, #27272a)}.preview pre{max-height:160px;overflow:auto;font-size:11px;white-space:pre-wrap;color:var(--tx5dr-text-secondary, #a1a1aa)}.export-buttons{display:flex;flex-wrap:wrap;gap:8px}.muted,.empty,.loading{color:var(--tx5dr-text-secondary, #a1a1aa)}.loading,.error{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--tx5dr-bg, #18181b)}.error{color:var(--tx5dr-danger, #f31260)}.table-wrap{overflow-x:auto;border:1px solid var(--tx5dr-table-divider, #3f3f46);border-radius:var(--tx5dr-radius-sm, 6px)}table{width:100%;border-collapse:collapse;font-size:12px;min-width:680px}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--tx5dr-table-divider, #3f3f46);white-space:nowrap}th{color:var(--tx5dr-text-secondary, #a1a1aa);font-weight:600;background:var(--tx5dr-table-header-bg, #27272a)}tbody tr:hover{background:var(--tx5dr-table-row-hover, rgba(255,255,255,.04))}tr:last-child td{border-bottom:0}.empty{text-align:center;padding:24px}@media(max-width:640px){.page{padding:14px}.header{flex-direction:column}.score-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.import-export{grid-template-columns:1fr;gap:10px}}
|