@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
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import type { PluginPanelDescriptor, PluginPermission, PluginQuickSetting, PluginSettingDescriptor, PluginUIPageDescriptor, QSORecord } from '@tx5dr/contracts';
|
|
2
|
+
import type { PluginHooks } from '../../hooks.js';
|
|
3
|
+
import type { PluginContextFor, StrategyPluginContext } from '../../context.js';
|
|
4
|
+
import type { PluginUIRequestContext } from '../../helpers.js';
|
|
5
|
+
import type { VersionedContestSession } from './ContestSessionRepository.js';
|
|
6
|
+
import { type ContestApplicationSessionFacade, type ContestSessionContext, type ContestSessionIdentity, type ContestSessionStateFacade } from './DefaultContestSession.js';
|
|
7
|
+
import { type ContestWorkbenchQsoRow, type ContestWorkbenchViewModel, type ContestWorkbenchRequest } from './DefaultContestWorkbench.js';
|
|
8
|
+
import type { ContestSessionModule, ContestWorkbenchModule } from './FT8ContestPlugin.js';
|
|
9
|
+
import type { FT8ContestDefinition } from './FT8ContestDefinition.js';
|
|
10
|
+
import type { FT8ContestQso } from './FT8ContestModules.js';
|
|
11
|
+
import type { ContestQsoEnvelopeAdapter } from './ContestQsoEnvelopeAdapter.js';
|
|
12
|
+
import type { StrategyQSOCompletionEffect } from '../../runtime.js';
|
|
13
|
+
import type { StrategyMessagePresentationProjection } from '../../runtime.js';
|
|
14
|
+
export declare const CONTEST_LOGBOOK_PERMISSIONS: readonly ["logbook:session", "plugin:event-bus"];
|
|
15
|
+
export type ContestLogbookPermissions = typeof CONTEST_LOGBOOK_PERMISSIONS;
|
|
16
|
+
export declare const DEFAULT_CONTEST_LOGBOOK_PAGE_ID = "contest-log";
|
|
17
|
+
export declare const DEFAULT_CONTEST_LOGBOOK_PANEL_ID = "contest-log";
|
|
18
|
+
export declare const DEFAULT_CONTEST_LOGBOOK_ENTRY = "contest-log.html";
|
|
19
|
+
export interface ContestLogbookUiOptions {
|
|
20
|
+
readonly pageId?: string;
|
|
21
|
+
readonly panelId?: string;
|
|
22
|
+
readonly entry?: string;
|
|
23
|
+
readonly title?: string;
|
|
24
|
+
readonly icon?: string;
|
|
25
|
+
readonly dir?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ContestLogbookColumnDescriptor {
|
|
28
|
+
readonly key: string;
|
|
29
|
+
readonly label: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ContestLogbookSettingField {
|
|
32
|
+
readonly key: string;
|
|
33
|
+
readonly label: string;
|
|
34
|
+
readonly description?: string;
|
|
35
|
+
readonly type?: 'string' | 'number' | 'boolean';
|
|
36
|
+
readonly options?: readonly {
|
|
37
|
+
label: string;
|
|
38
|
+
value: string;
|
|
39
|
+
}[];
|
|
40
|
+
}
|
|
41
|
+
export interface ContestLogbookPresentation {
|
|
42
|
+
readonly title?: string;
|
|
43
|
+
readonly columns?: readonly ContestLogbookColumnDescriptor[];
|
|
44
|
+
readonly labels?: Readonly<Record<string, string>>;
|
|
45
|
+
}
|
|
46
|
+
export interface ContestLogbookContestView {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly editionId: string;
|
|
49
|
+
readonly rulesetVersion: string;
|
|
50
|
+
readonly title?: string;
|
|
51
|
+
readonly officialUrl?: string;
|
|
52
|
+
readonly startAt?: string;
|
|
53
|
+
readonly endAt?: string;
|
|
54
|
+
readonly modes?: readonly string[];
|
|
55
|
+
readonly bands?: readonly string[];
|
|
56
|
+
readonly exchangeId?: string;
|
|
57
|
+
readonly exchangeSummary?: string;
|
|
58
|
+
readonly completionId?: string;
|
|
59
|
+
readonly ruleSummary?: string;
|
|
60
|
+
readonly scoringSummary?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ContestLogbookScoreDetails {
|
|
63
|
+
readonly moduleId?: string;
|
|
64
|
+
readonly summary?: string;
|
|
65
|
+
readonly qsoCount?: number;
|
|
66
|
+
readonly multiplierCount?: number;
|
|
67
|
+
readonly total?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface ContestLogbookReviewIssue {
|
|
70
|
+
code: string;
|
|
71
|
+
message: string;
|
|
72
|
+
qsoId?: string;
|
|
73
|
+
field?: string;
|
|
74
|
+
severity?: 'info' | 'warning' | 'error';
|
|
75
|
+
}
|
|
76
|
+
export interface ContestLogbookQsoRow<TFields = Readonly<Record<string, unknown>>> extends ContestWorkbenchQsoRow<TFields> {
|
|
77
|
+
sentExchange?: string;
|
|
78
|
+
receivedExchange?: string;
|
|
79
|
+
operatorCallsign?: string;
|
|
80
|
+
operatorGrid?: string;
|
|
81
|
+
qsoId?: string;
|
|
82
|
+
distanceKm?: number;
|
|
83
|
+
}
|
|
84
|
+
export interface ContestLogbookViewModel<TSettings = unknown, TScoreDetails = unknown, TQsoFields = Readonly<Record<string, unknown>>, TImportPreview = unknown> extends ContestWorkbenchViewModel<TSettings, TScoreDetails, TQsoFields, ContestLogbookReviewIssue, TImportPreview> {
|
|
85
|
+
readonly contest: ContestLogbookContestView;
|
|
86
|
+
readonly score: ContestWorkbenchViewModel<TSettings, TScoreDetails, TQsoFields, ContestLogbookReviewIssue, TImportPreview>['score'] & {
|
|
87
|
+
readonly details?: TScoreDetails;
|
|
88
|
+
};
|
|
89
|
+
readonly settings: ContestWorkbenchViewModel<TSettings, TScoreDetails, TQsoFields, ContestLogbookReviewIssue, TImportPreview>['settings'] & {
|
|
90
|
+
readonly fields?: readonly ContestLogbookSettingField[];
|
|
91
|
+
};
|
|
92
|
+
readonly columns?: readonly ContestLogbookColumnDescriptor[];
|
|
93
|
+
readonly presentation?: ContestLogbookPresentation;
|
|
94
|
+
}
|
|
95
|
+
export interface StandardContestLogbookSession extends VersionedContestSession {
|
|
96
|
+
readonly settings: Readonly<Record<string, unknown>>;
|
|
97
|
+
}
|
|
98
|
+
export interface ContestLogbookSettingsModule<TContest, TSession extends VersionedContestSession> {
|
|
99
|
+
readonly settings: Record<string, PluginSettingDescriptor>;
|
|
100
|
+
readonly quickSettings?: readonly PluginQuickSetting[];
|
|
101
|
+
seed(contest: TContest, context: ContestSessionContext): TSession;
|
|
102
|
+
validate(session: TSession, contest: TContest, context: ContestSessionContext): readonly ContestLogbookReviewIssue[];
|
|
103
|
+
title?(contest: TContest, context: ContestSessionContext): string;
|
|
104
|
+
}
|
|
105
|
+
export interface ContestLogbookImporter<TSource, TPreview, TResult> {
|
|
106
|
+
readonly id: string;
|
|
107
|
+
readonly label: string;
|
|
108
|
+
readonly extension: string;
|
|
109
|
+
readonly mediaType?: string;
|
|
110
|
+
readonly accept?: readonly string[];
|
|
111
|
+
preview(source: TSource, context: PluginUIRequestContext): Promise<TPreview> | TPreview;
|
|
112
|
+
commit(token: string, context: PluginUIRequestContext): Promise<TResult> | TResult;
|
|
113
|
+
cancel?(token: string, context: PluginUIRequestContext): Promise<void> | void;
|
|
114
|
+
}
|
|
115
|
+
export interface ContestLogbookExporter<TRecord = QSORecord, TOptions = void> {
|
|
116
|
+
readonly id: string;
|
|
117
|
+
readonly label: string;
|
|
118
|
+
readonly extension: string;
|
|
119
|
+
readonly mediaType?: string;
|
|
120
|
+
enabled?(context: {
|
|
121
|
+
contest: unknown;
|
|
122
|
+
session: unknown;
|
|
123
|
+
}): boolean;
|
|
124
|
+
format(records: readonly TRecord[], options: TOptions): string;
|
|
125
|
+
}
|
|
126
|
+
export interface ContestLogbookAdapter<TContest, TSession extends VersionedContestSession, TSettings, TQsoFields = Readonly<Record<string, unknown>>, TImportSource = unknown, TImportPreview = unknown, TExportOptions = void, Permissions extends readonly PluginPermission[] = ContestLogbookPermissions> {
|
|
127
|
+
readonly settings: ContestLogbookSettingsModule<TContest, TSession>;
|
|
128
|
+
readonly createQsoEnvelope?: ContestQsoEnvelopeAdapter<unknown>;
|
|
129
|
+
readonly importer?: ContestLogbookImporter<TImportSource, TImportPreview, unknown>;
|
|
130
|
+
readonly exporters?: readonly ContestLogbookExporter<unknown, unknown>[];
|
|
131
|
+
readonly hooks?: PluginHooks<Permissions>;
|
|
132
|
+
readonly panels?: readonly PluginPanelDescriptor[];
|
|
133
|
+
readonly ui?: {
|
|
134
|
+
readonly dir?: string;
|
|
135
|
+
readonly pages?: readonly PluginUIPageDescriptor[];
|
|
136
|
+
};
|
|
137
|
+
readonly quickSettings?: readonly PluginQuickSetting[];
|
|
138
|
+
/** Builds the Host-evaluated decoded-message presentation from contest-session records. */
|
|
139
|
+
messagePresentation?(contest: TContest, context: PluginContextFor<Permissions>, records: readonly QSORecord[]): StrategyMessagePresentationProjection | undefined;
|
|
140
|
+
decorateRecord?(record: QSORecord, contest: TContest, context: StrategyPluginContext): QSORecord;
|
|
141
|
+
readonly presentation?: ContestLogbookPresentation;
|
|
142
|
+
projectQso?(record: QSORecord, contest: TContest, context: PluginContextFor<Permissions>): FT8ContestQso<unknown> | null;
|
|
143
|
+
getState(contest: TContest, session: TSession, context: PluginContextFor<Permissions>, records?: readonly QSORecord[]): ContestLogbookViewModel<TSettings, unknown, TQsoFields, TImportPreview> | Promise<ContestLogbookViewModel<TSettings, unknown, TQsoFields, TImportPreview>>;
|
|
144
|
+
decode(action: string, data: unknown): ContestWorkbenchRequest;
|
|
145
|
+
handle(request: ContestWorkbenchRequest, contest: TContest, session: TSession, context: PluginUIRequestContext, application?: ContestApplicationSessionFacade, records?: readonly QSORecord[], state?: ContestSessionStateFacade<TSession>, pluginContext?: PluginContextFor<Permissions>): unknown | Promise<unknown>;
|
|
146
|
+
}
|
|
147
|
+
export interface ContestLogbookModule<TContest, TSession extends VersionedContestSession, Permissions extends readonly PluginPermission[] = ContestLogbookPermissions> {
|
|
148
|
+
readonly settings?: Record<string, PluginSettingDescriptor>;
|
|
149
|
+
readonly quickSettings?: readonly PluginQuickSetting[];
|
|
150
|
+
readonly session: ContestSessionModule<TContest, ContestLogbookPermissions>;
|
|
151
|
+
readonly workbench: ContestWorkbenchModule<TContest, Permissions>;
|
|
152
|
+
readonly hooks?: PluginHooks<Permissions>;
|
|
153
|
+
readonly panels?: readonly PluginPanelDescriptor[];
|
|
154
|
+
readonly ui?: {
|
|
155
|
+
readonly dir?: string;
|
|
156
|
+
readonly pages?: readonly PluginUIPageDescriptor[];
|
|
157
|
+
};
|
|
158
|
+
/** Returns the latest independent contest-session presentation for an operator. */
|
|
159
|
+
readonly getMessagePresentation?: (operatorId: string) => StrategyMessagePresentationProjection | undefined;
|
|
160
|
+
readonly decorateCompletion?: (effect: StrategyQSOCompletionEffect, context: StrategyPluginContext) => StrategyQSOCompletionEffect;
|
|
161
|
+
}
|
|
162
|
+
export interface DefaultContestLogbookOptions<TContest, TSession extends VersionedContestSession, TSettings, TQsoFields = Readonly<Record<string, unknown>>, TImportSource = unknown, TImportPreview = unknown, TExportOptions = void, Permissions extends readonly PluginPermission[] = ContestLogbookPermissions> {
|
|
163
|
+
contest: TContest;
|
|
164
|
+
pageId?: string;
|
|
165
|
+
ui?: false | ContestLogbookUiOptions;
|
|
166
|
+
resolveContest?(context: ContestSessionContext): TContest;
|
|
167
|
+
sessionKey?(contest: TContest, context: ContestSessionContext): string;
|
|
168
|
+
stateKey?(contest: TContest, context: ContestSessionContext): string;
|
|
169
|
+
/** Defers durable logbook opening and historical projection until Host startup is ready. */
|
|
170
|
+
deferStartup?: boolean;
|
|
171
|
+
adapter: ContestLogbookAdapter<TContest, TSession, TSettings, TQsoFields, TImportSource, TImportPreview, TExportOptions, Permissions>;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Standard FT8/FT4 record projector that extracts the fields common contest
|
|
175
|
+
* plugins repeatedly need for logbook displays and score summaries.
|
|
176
|
+
*/
|
|
177
|
+
export declare function standardFT8ContestQsoAdapter<TFields extends Readonly<Record<string, unknown>> = Readonly<Record<string, unknown>>>(options?: {
|
|
178
|
+
operatorGrid?(record: QSORecord): string | undefined;
|
|
179
|
+
sentExchange?(record: QSORecord): string | undefined;
|
|
180
|
+
receivedExchange?(record: QSORecord): string | undefined;
|
|
181
|
+
}): (record: QSORecord) => ContestLogbookQsoRow<TFields> | null;
|
|
182
|
+
export declare function officialContestExporter<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions>(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, options: TSubmissionOptions): ContestLogbookExporter<TQso, TSubmissionOptions>;
|
|
183
|
+
export declare function adifContestExporter<TOptions = void>(options?: {
|
|
184
|
+
id?: string;
|
|
185
|
+
label?: string;
|
|
186
|
+
extension?: string;
|
|
187
|
+
mediaType?: string;
|
|
188
|
+
includeStationCallsign?: boolean;
|
|
189
|
+
}): ContestLogbookExporter<QSORecord, TOptions>;
|
|
190
|
+
export declare function adifContestImporter<TPreview, TResult>(options: {
|
|
191
|
+
id?: string;
|
|
192
|
+
label?: string;
|
|
193
|
+
extension?: string;
|
|
194
|
+
mediaType?: string;
|
|
195
|
+
accept?: readonly string[];
|
|
196
|
+
preview(source: string): TPreview | Promise<TPreview>;
|
|
197
|
+
commit(token: string): TResult | Promise<TResult>;
|
|
198
|
+
cancel?(token: string): Promise<void> | void;
|
|
199
|
+
}): ContestLogbookImporter<string, TPreview, TResult>;
|
|
200
|
+
/**
|
|
201
|
+
* Generic ADIF parse helper for contest logbooks. Contest plugins still own
|
|
202
|
+
* their validation rules through the callbacks they pass in.
|
|
203
|
+
*/
|
|
204
|
+
export declare function parseContestAdifContent(content: string): QSORecord[];
|
|
205
|
+
export declare function projectContestLogbookRows<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions>(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, records: readonly TQso[]): Array<ContestLogbookQsoRow>;
|
|
206
|
+
export declare function summarizeContestLogbookScore<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions>(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, records: readonly TQso[]): import("./FT8ContestModules.js").ContestScoreSummary;
|
|
207
|
+
export declare function renderOfficialContestSubmission<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions>(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, records: readonly TQso[], options: TSubmissionOptions): string;
|
|
208
|
+
export declare function defaultContestLogbook<TContest extends ContestSessionIdentity, TSession extends VersionedContestSession, TSettings, TQsoFields = Readonly<Record<string, unknown>>, TImportSource = unknown, TImportPreview = unknown, TExportOptions = void, Permissions extends readonly PluginPermission[] = ContestLogbookPermissions>(options: DefaultContestLogbookOptions<TContest, TSession, TSettings, TQsoFields, TImportSource, TImportPreview, TExportOptions, Permissions>): ContestLogbookModule<TContest, TSession, Permissions>;
|
|
209
|
+
export interface StandardFT8ContestLogbookOptions<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions = void> {
|
|
210
|
+
readonly contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>;
|
|
211
|
+
readonly pageId?: string;
|
|
212
|
+
readonly ui?: false | ContestLogbookUiOptions;
|
|
213
|
+
readonly settings?: ContestLogbookSettingsModule<FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, StandardContestLogbookSession>;
|
|
214
|
+
projectQso?(record: QSORecord, context: ContestSessionContext): TQso | null;
|
|
215
|
+
decorateRecord?(record: QSORecord, context: StrategyPluginContext): QSORecord;
|
|
216
|
+
readonly presentation?: ContestLogbookPresentation;
|
|
217
|
+
readonly submissionOptions?: TSubmissionOptions;
|
|
218
|
+
resolveContest?(context: ContestSessionContext): FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>;
|
|
219
|
+
sessionKey?(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, context: ContestSessionContext): string;
|
|
220
|
+
stateKey?(contest: FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, context: ContestSessionContext): string;
|
|
221
|
+
}
|
|
222
|
+
export declare function standardFT8ContestLogbook<TExchange, TQso extends FT8ContestQso<TExchange>, TSubmissionOptions = void>(options: StandardFT8ContestLogbookOptions<TExchange, TQso, TSubmissionOptions>): ContestLogbookModule<FT8ContestDefinition<TExchange, TQso, TSubmissionOptions>, StandardContestLogbookSession, ContestLogbookPermissions>;
|
|
223
|
+
//# sourceMappingURL=ContestLogbook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContestLogbook.d.ts","sourceRoot":"","sources":["../../../src/toolkit/contest/ContestLogbook.ts"],"names":[],"mappings":"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"}
|