dsh-mobile 0.6.2 → 0.6.4
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/CHANGELOG.md +36 -0
- package/CONTRIBUTORS.md +19 -4
- package/README.en.md +16 -8
- package/README.md +16 -8
- package/SECURITY.md +3 -2
- package/THIRD_PARTY_NOTICES.md +29 -1
- package/apps/mobile/README.md +25 -5
- package/apps/mobile/release.json +3 -3
- package/cordis.patch.yml +7 -3
- package/docs/ATTACH_EXISTING_FRPS.en.md +1 -1
- package/docs/ATTACH_EXISTING_FRPS.md +2 -2
- package/docs/CADDY_MANAGED.en.md +15 -1
- package/docs/CADDY_MANAGED.md +15 -1
- package/docs/CLOUDFLARE_TUNNEL.en.md +2 -2
- package/docs/CLOUDFLARE_TUNNEL.md +3 -3
- package/docs/EXTENSION_WORKERS.en.md +49 -0
- package/docs/EXTENSION_WORKERS.md +49 -0
- package/docs/MOBILE_COMPOSER_TOOLBAR.en.md +27 -0
- package/docs/MOBILE_COMPOSER_TOOLBAR.md +27 -0
- package/docs/README.md +2 -0
- package/docs/SELF_HOSTED_FRP.en.md +4 -2
- package/docs/SELF_HOSTED_FRP.md +4 -2
- package/docs/SLOW_CONNECTIONS.en.md +6 -0
- package/docs/SLOW_CONNECTIONS.md +6 -0
- package/docs/TRUSTED_NETWORKS.en.md +1 -1
- package/docs/TRUSTED_NETWORKS.md +1 -1
- package/lib/cli.js +140 -19
- package/lib/cli.js.map +1 -1
- package/lib/client.js +1264 -106
- package/lib/client.js.map +1 -1
- package/lib/extension-worker-runtime.mjs +1646 -0
- package/lib/extension-worker-runtime.mjs.map +1 -0
- package/lib/index.d.mts +209 -12
- package/lib/index.mjs +2152 -811
- package/lib/index.mjs.map +1 -1
- package/lib/mobile-layout.js.map +1 -1
- package/package.json +17 -6
- package/packages/question-fixes/LICENSE +201 -0
- package/packages/question-fixes/package.json +9 -2
- package/node_modules/dsh-mobile-question-fixes/lib/client.js +0 -78
- package/node_modules/dsh-mobile-question-fixes/lib/client.js.map +0 -1
- package/node_modules/dsh-mobile-question-fixes/lib/index.mjs +0 -14
- package/node_modules/dsh-mobile-question-fixes/lib/index.mjs.map +0 -1
- package/node_modules/dsh-mobile-question-fixes/package.json +0 -25
package/lib/index.d.mts
CHANGED
|
@@ -229,6 +229,37 @@ export declare class RequestTrustPolicy {
|
|
|
229
229
|
canonicalOrigin(header: string | undefined): string | undefined;
|
|
230
230
|
}
|
|
231
231
|
//#endregion
|
|
232
|
+
//#region src/extension-worker-config.d.ts
|
|
233
|
+
/** Operator-owned limits for opt-in local extension worker execution. */
|
|
234
|
+
interface HostExecutionConfig {
|
|
235
|
+
readonly mode?: 'in-process' | 'worker';
|
|
236
|
+
/** Apply worker mode only to these exact local ids; omitted selects every local host. */
|
|
237
|
+
readonly extensions?: readonly string[] | undefined;
|
|
238
|
+
readonly maxWorkers?: number;
|
|
239
|
+
readonly maxRegistrations?: number;
|
|
240
|
+
readonly maxOldGenerationSizeMb?: number;
|
|
241
|
+
readonly maxYoungGenerationSizeMb?: number;
|
|
242
|
+
readonly stackSizeMb?: number;
|
|
243
|
+
readonly activationTimeoutMs?: number;
|
|
244
|
+
readonly operationTimeoutMs?: number;
|
|
245
|
+
readonly cancelGraceMs?: number;
|
|
246
|
+
readonly streamCancelGraceMs?: number;
|
|
247
|
+
readonly disposeGraceMs?: number;
|
|
248
|
+
readonly resultMaxBytes?: number;
|
|
249
|
+
readonly streamWindowBytes?: number;
|
|
250
|
+
readonly streamChunkBytes?: number;
|
|
251
|
+
readonly streamAggregateBytes?: number;
|
|
252
|
+
readonly logWindowMs?: number;
|
|
253
|
+
readonly logMessagesPerWindow?: number;
|
|
254
|
+
readonly logMessageBytes?: number;
|
|
255
|
+
}
|
|
256
|
+
/** Complete settings passed to each owned worker; Node limits do not isolate filesystem access. */
|
|
257
|
+
interface ResolvedHostExecutionConfig extends Required<Omit<HostExecutionConfig, 'extensions'>> {
|
|
258
|
+
readonly extensions: readonly string[] | undefined;
|
|
259
|
+
}
|
|
260
|
+
/** Resolve configuration once; reject malformed modes, ids and incoherent stream windows. */
|
|
261
|
+
export declare function resolveHostExecution(raw: unknown): ResolvedHostExecutionConfig;
|
|
262
|
+
//#endregion
|
|
232
263
|
//#region src/config.d.ts
|
|
233
264
|
/** Optional compression for exact, already authorized WebSocket paths. */
|
|
234
265
|
interface WebSocketCompressionConfig {
|
|
@@ -264,6 +295,8 @@ interface DisabledTlsConfig {
|
|
|
264
295
|
type TlsConfig = ProvidedTlsConfig | DisabledTlsConfig;
|
|
265
296
|
/** Operator-facing plugin configuration. */
|
|
266
297
|
interface PluginConfig {
|
|
298
|
+
/** Local host execution mode and owned worker budgets; defaults to in-process. */
|
|
299
|
+
hostExecution?: HostExecutionConfig;
|
|
267
300
|
/** Optional setup JSON written by the packaged CLI. */
|
|
268
301
|
setupFile?: string;
|
|
269
302
|
/** Preferred HTTPS origin used to derive the public authority and listener port. */
|
|
@@ -319,6 +352,7 @@ interface PluginConfig {
|
|
|
319
352
|
}
|
|
320
353
|
/** Resolved, validated security and resource limits. */
|
|
321
354
|
interface ResolvedGatewayConfig {
|
|
355
|
+
readonly hostExecution: ResolvedHostExecutionConfig;
|
|
322
356
|
readonly listenHost: string;
|
|
323
357
|
readonly listenPort: number;
|
|
324
358
|
readonly upstreamOrigin: URL;
|
|
@@ -431,8 +465,8 @@ export declare class JsonMobileAccessControlStore implements MobileAccessControl
|
|
|
431
465
|
private readonly file;
|
|
432
466
|
private readonly initiallyEnabled;
|
|
433
467
|
constructor(file: string, initiallyEnabled: boolean);
|
|
434
|
-
/**
|
|
435
|
-
disableIfPresent(): Promise<
|
|
468
|
+
/** Disable an existing preference, returning the state only after private-file preparation completes. */
|
|
469
|
+
disableIfPresent(): Promise<MobileAccessControlState>;
|
|
436
470
|
load(): Promise<MobileAccessControlState>;
|
|
437
471
|
save(state: MobileAccessControlState): Promise<void>;
|
|
438
472
|
}
|
|
@@ -519,6 +553,117 @@ export declare class WebSocketPathStore {
|
|
|
519
553
|
replace(paths: readonly string[]): Promise<string[]>;
|
|
520
554
|
}
|
|
521
555
|
//#endregion
|
|
556
|
+
//#region src/extension-worker-protocol.d.ts
|
|
557
|
+
/** Metadata for one action, crossing the boundary without its functions. */
|
|
558
|
+
interface WorkerActionMetadata {
|
|
559
|
+
readonly name: string;
|
|
560
|
+
readonly timeoutMs?: number;
|
|
561
|
+
}
|
|
562
|
+
/** Metadata for one route, crossing the boundary without its functions. */
|
|
563
|
+
interface WorkerRouteMetadata {
|
|
564
|
+
readonly method: string;
|
|
565
|
+
readonly path: string;
|
|
566
|
+
readonly kind?: 'exact' | 'prefix';
|
|
567
|
+
readonly timeoutMs?: number;
|
|
568
|
+
}
|
|
569
|
+
//#endregion
|
|
570
|
+
//#region src/extension-worker.d.ts
|
|
571
|
+
/** JSON bytes serialized and size-checked inside the worker. */
|
|
572
|
+
declare class PreparedJsonResult {
|
|
573
|
+
readonly bytes: Buffer;
|
|
574
|
+
constructor(bytes: Buffer);
|
|
575
|
+
}
|
|
576
|
+
/** Worker context is logger-only, never a Cordis Context or service proxy. */
|
|
577
|
+
type WorkerParentLogger = Record<'debug' | 'info' | 'warn' | 'error', (...args: unknown[]) => void>;
|
|
578
|
+
/** Every thread counts until actual exit, including activation, retirement and termination. */
|
|
579
|
+
declare class ExtensionWorkerBudget {
|
|
580
|
+
readonly maximum: number;
|
|
581
|
+
private count;
|
|
582
|
+
constructor(maximum: number);
|
|
583
|
+
get current(): number;
|
|
584
|
+
reserve(): () => void;
|
|
585
|
+
}
|
|
586
|
+
interface ExtensionWorkerHostOptions {
|
|
587
|
+
readonly workerModule: string | URL;
|
|
588
|
+
readonly hostFile: string;
|
|
589
|
+
readonly manifest: LocalExtensionManifest;
|
|
590
|
+
readonly generation: string;
|
|
591
|
+
readonly logger: WorkerParentLogger;
|
|
592
|
+
readonly activationTimeoutMs?: number;
|
|
593
|
+
readonly limits?: HostExecutionConfig;
|
|
594
|
+
readonly budget?: ExtensionWorkerBudget;
|
|
595
|
+
readonly onUnavailable?: (error: MobileExtensionError) => void;
|
|
596
|
+
}
|
|
597
|
+
interface ExtensionWorkerActivation {
|
|
598
|
+
readonly runtimeId: string;
|
|
599
|
+
readonly actions: readonly WorkerActionMetadata[];
|
|
600
|
+
readonly routes: readonly WorkerRouteMetadata[];
|
|
601
|
+
}
|
|
602
|
+
declare class ExtensionWorkerHost {
|
|
603
|
+
private readonly options;
|
|
604
|
+
private readonly limits;
|
|
605
|
+
private readonly worker;
|
|
606
|
+
private readonly pending;
|
|
607
|
+
private readonly routePending;
|
|
608
|
+
private readonly streams;
|
|
609
|
+
private readonly detachedRoutes;
|
|
610
|
+
private readonly executionGrace;
|
|
611
|
+
private readonly exited;
|
|
612
|
+
private readonly unavailableController;
|
|
613
|
+
private termination;
|
|
614
|
+
private activation;
|
|
615
|
+
private dead;
|
|
616
|
+
private disposed;
|
|
617
|
+
private maxBufferedBytes;
|
|
618
|
+
private cancelledStreams;
|
|
619
|
+
private logWindowStart;
|
|
620
|
+
private logCount;
|
|
621
|
+
private stdioBytes;
|
|
622
|
+
private stdioResume;
|
|
623
|
+
constructor(options: ExtensionWorkerHostOptions);
|
|
624
|
+
/** A stopped generation never silently respawns. */
|
|
625
|
+
available(): boolean;
|
|
626
|
+
/** Activate once and receive executable-free registration metadata. */
|
|
627
|
+
activate(): Promise<ExtensionWorkerActivation>;
|
|
628
|
+
actionMetadata(): readonly WorkerActionMetadata[];
|
|
629
|
+
routeMetadata(): readonly WorkerRouteMetadata[];
|
|
630
|
+
/** Underlying action: settles only when execution completes or the thread exits. */
|
|
631
|
+
invokeExecution(action: string, input: unknown, caller: {
|
|
632
|
+
readonly signal: AbortSignal;
|
|
633
|
+
readonly deviceId: string;
|
|
634
|
+
}): Promise<PreparedJsonResult>;
|
|
635
|
+
/** Direct caller budget; service dispatch observes invokeExecution separately. */
|
|
636
|
+
invoke(action: string, input: unknown, caller: {
|
|
637
|
+
readonly signal: AbortSignal;
|
|
638
|
+
readonly deviceId: string;
|
|
639
|
+
}): Promise<PreparedJsonResult>;
|
|
640
|
+
/** Underlying route: late streams are cancelled and observed to confirmed end. */
|
|
641
|
+
handleRouteExecution(routeIndex: number, request: MobileRouteRequest): Promise<MobileRouteResponse>;
|
|
642
|
+
/** Handler budget ends at stream-start; stream lifetime remains cancellation-bound. */
|
|
643
|
+
handleRoute(routeIndex: number, request: MobileRouteRequest): Promise<MobileRouteResponse>;
|
|
644
|
+
private callerBudget;
|
|
645
|
+
streamStats(): {
|
|
646
|
+
readonly activeStreams: number;
|
|
647
|
+
readonly maxBufferedBytes: number;
|
|
648
|
+
readonly cancelledStreams: number;
|
|
649
|
+
readonly bufferedBytes: number;
|
|
650
|
+
};
|
|
651
|
+
/** Graceful effects cleanup followed by termination; completion requires actual exit. */
|
|
652
|
+
dispose(): Promise<void>;
|
|
653
|
+
whenExited(): Promise<void>;
|
|
654
|
+
/** Stop admission now, retain execution/budget ownership until confirmed thread exit. */
|
|
655
|
+
terminate(reason: string): Promise<void>;
|
|
656
|
+
private unavailable;
|
|
657
|
+
private markUnavailable;
|
|
658
|
+
private armExecutionGrace;
|
|
659
|
+
private settleExecutionGrace;
|
|
660
|
+
private post;
|
|
661
|
+
private handleMessage;
|
|
662
|
+
private totalUnacked;
|
|
663
|
+
private openStream;
|
|
664
|
+
private cancelStream;
|
|
665
|
+
}
|
|
666
|
+
//#endregion
|
|
522
667
|
//#region src/extensions.d.ts
|
|
523
668
|
/** Maximum sizes enforced at the local-extension filesystem boundary. */
|
|
524
669
|
export declare const EXTENSION_LIMITS: Readonly<{
|
|
@@ -625,6 +770,26 @@ interface ActiveLocalExtension {
|
|
|
625
770
|
readonly controller: AbortController;
|
|
626
771
|
readonly cleanups: readonly (() => void | Promise<void>)[];
|
|
627
772
|
readonly digest: string;
|
|
773
|
+
readonly worker?: ExtensionWorkerHost;
|
|
774
|
+
}
|
|
775
|
+
/** Local execution options; the packaged worker entry is used unless a test supplies an override. */
|
|
776
|
+
interface LocalExecutionOptions {
|
|
777
|
+
readonly hostExecution?: HostExecutionConfig & {
|
|
778
|
+
readonly workerModule?: string;
|
|
779
|
+
};
|
|
780
|
+
readonly workerBudget?: ExtensionWorkerBudget;
|
|
781
|
+
}
|
|
782
|
+
/** Worker-host API: logger-only context, with no Cordis services or registrations crossing threads. */
|
|
783
|
+
interface MobileWorkerHostApi {
|
|
784
|
+
readonly manifest: LocalExtensionManifest;
|
|
785
|
+
readonly context: {
|
|
786
|
+
readonly logger: WorkerParentLogger;
|
|
787
|
+
};
|
|
788
|
+
readonly schema: typeof z;
|
|
789
|
+
readonly signal: AbortSignal;
|
|
790
|
+
action(name: string, spec: MobileHostAction): void;
|
|
791
|
+
route(spec: MobileHostRoute): void;
|
|
792
|
+
effect(setup: () => void | (() => void | Promise<void>) | Promise<void | (() => void | Promise<void>)>): void;
|
|
628
793
|
}
|
|
629
794
|
/** Validate a stable extension id. */
|
|
630
795
|
export declare function assertExtensionId(value: unknown): string;
|
|
@@ -647,6 +812,11 @@ export declare class MobileAccessService extends Service {
|
|
|
647
812
|
private localRefreshAbort;
|
|
648
813
|
private localLifecycle;
|
|
649
814
|
private localClosed;
|
|
815
|
+
private localExecution;
|
|
816
|
+
private localExecutionKey;
|
|
817
|
+
private workerBudget;
|
|
818
|
+
private readonly disposal;
|
|
819
|
+
private readonly recoveries;
|
|
650
820
|
constructor(ctx: Context);
|
|
651
821
|
/** Register a normal Cordis extension and return an idempotent disposer. */
|
|
652
822
|
registerExtension(definition: MobileExtensionDefinition): () => void;
|
|
@@ -659,6 +829,23 @@ export declare class MobileAccessService extends Service {
|
|
|
659
829
|
manifest(): readonly MobileExtensionClientEntry[];
|
|
660
830
|
/** Return loaded and failed local extension counts without exposing host errors. */
|
|
661
831
|
status(): MobileExtensionStatus;
|
|
832
|
+
/** Local Host status does not reveal filesystem paths, credentials or extension errors. */
|
|
833
|
+
hostStatus(): {
|
|
834
|
+
readonly hosts: readonly {
|
|
835
|
+
readonly id: string;
|
|
836
|
+
readonly name: string;
|
|
837
|
+
readonly mode: 'worker' | 'in-process';
|
|
838
|
+
readonly state: 'ready' | 'unavailable';
|
|
839
|
+
readonly generation: string;
|
|
840
|
+
}[];
|
|
841
|
+
readonly limits: {
|
|
842
|
+
readonly maxWorkers: number;
|
|
843
|
+
readonly workers: number;
|
|
844
|
+
};
|
|
845
|
+
};
|
|
846
|
+
/** Explicitly replace one unavailable worker without replaying requests or changing its files. */
|
|
847
|
+
recoverExtension(id: string): Promise<void>;
|
|
848
|
+
private queueDisposal;
|
|
662
849
|
/** Locate one active extension. */
|
|
663
850
|
extension(id: string, generation?: string): MobileExtensionDefinition | ActiveLocalExtension | undefined;
|
|
664
851
|
/** Return the active local generation signal for gateway cancellation wiring. */
|
|
@@ -683,7 +870,7 @@ export declare class MobileAccessService extends Service {
|
|
|
683
870
|
/** Match one route and invoke it with a generation-bound abort signal. */
|
|
684
871
|
route(id: string, method: string, pathname: string, request: MobileRouteRequest, generation?: string): Promise<MobileRouteResponse>;
|
|
685
872
|
/** Start the local directory watcher; an absent directory is intentionally inert. */
|
|
686
|
-
startLocal(root: string, context: Context): Promise<void>;
|
|
873
|
+
startLocal(root: string, context: Context, options?: LocalExecutionOptions): Promise<void>;
|
|
687
874
|
/** Stop the watcher and abort every local host generation. */
|
|
688
875
|
stopLocal(): Promise<void>;
|
|
689
876
|
/** Refresh all local extensions atomically; failures keep the previous snapshot. */
|
|
@@ -942,6 +1129,7 @@ export declare class FrpComponentManager {
|
|
|
942
1129
|
readonly componentStorage: string;
|
|
943
1130
|
readonly logRoot: string;
|
|
944
1131
|
private readonly stagingRoot;
|
|
1132
|
+
private readonly stateDirectory;
|
|
945
1133
|
private readonly artifact;
|
|
946
1134
|
private readonly fetchArtifact;
|
|
947
1135
|
private readonly extractArtifact;
|
|
@@ -1146,6 +1334,7 @@ export declare function createFrpcToml(settings: FrpSettings, localPort: number,
|
|
|
1146
1334
|
export declare function createFrpServerTemplate(settings: FrpSettings): string;
|
|
1147
1335
|
/** Owns private FRP settings and generation-specific frpc configuration. */
|
|
1148
1336
|
export declare class FrpConfigStore {
|
|
1337
|
+
private readonly ownedRoot;
|
|
1149
1338
|
readonly stateRoot: string;
|
|
1150
1339
|
readonly settingsFile: string;
|
|
1151
1340
|
readonly runtimeConfigFile: string;
|
|
@@ -1159,7 +1348,7 @@ export declare class FrpConfigStore {
|
|
|
1159
1348
|
readonly proxyName: string;
|
|
1160
1349
|
private settingsValue;
|
|
1161
1350
|
private errorCode;
|
|
1162
|
-
constructor(stateDirectory: string, proxyName?: string);
|
|
1351
|
+
constructor(stateDirectory: string, proxyName?: string, ownedRoot?: string);
|
|
1163
1352
|
/** Load private settings while rejecting links, oversized files, and unknown fields. */
|
|
1164
1353
|
initialize(): Promise<void>;
|
|
1165
1354
|
/**
|
|
@@ -1372,14 +1561,14 @@ export declare function frpIngressPaths(stateFile: string): FrpIngressPaths;
|
|
|
1372
1561
|
* replaced silently. The leaf is re-signed when expiring or no longer valid for
|
|
1373
1562
|
* the public IPv4, and the running gateway reloads it after a renewal check.
|
|
1374
1563
|
*/
|
|
1375
|
-
export declare function ensureFrpIngressCertificate(settings: FrpSettings, stateFile: string, now?: number, expectedCaFingerprint?: string): Promise<FrpIngressCertificate>;
|
|
1564
|
+
export declare function ensureFrpIngressCertificate(settings: FrpSettings, stateFile: string, now?: number, expectedCaFingerprint?: string, ownedRoot?: string): Promise<FrpIngressCertificate>;
|
|
1376
1565
|
/**
|
|
1377
1566
|
* Build the read-only self-check payload shown in the desktop panel.
|
|
1378
1567
|
*
|
|
1379
1568
|
* No secret ever leaves this function: the CA is reported by fingerprint only,
|
|
1380
1569
|
* and the token is never read.
|
|
1381
1570
|
*/
|
|
1382
|
-
export declare function frpIngressSelfCheck(settings: FrpSettings, stateFile: string): Promise<FrpIngressSelfCheck>;
|
|
1571
|
+
export declare function frpIngressSelfCheck(settings: FrpSettings, stateFile: string, ownedRoot?: string): Promise<FrpIngressSelfCheck>;
|
|
1383
1572
|
//#endregion
|
|
1384
1573
|
//#region src/managed-setup.d.ts
|
|
1385
1574
|
/** One host a server leaf must be valid for: an IP literal, a DNS name, or both. */
|
|
@@ -1423,7 +1612,12 @@ interface RemoteProviderStatus {
|
|
|
1423
1612
|
}
|
|
1424
1613
|
/** Lifecycle shared by selectable remote providers. */
|
|
1425
1614
|
interface RemoteProviderController {
|
|
1426
|
-
|
|
1615
|
+
/**
|
|
1616
|
+
* Initialize from the current startup preparation, without retaining a permission-success cache.
|
|
1617
|
+
* @param initialState - Fresh state prepared by this controller's own store; omission reads that store.
|
|
1618
|
+
* @returns Completion of the normal provider initialization and optional startup.
|
|
1619
|
+
*/
|
|
1620
|
+
initialize(initialState?: MobileAccessControlState): Promise<void>;
|
|
1427
1621
|
gateway(): MobileAccessGateway | undefined;
|
|
1428
1622
|
status(): RemoteProviderStatus;
|
|
1429
1623
|
setEnabled(enabled: boolean): Promise<RemoteProviderStatus>;
|
|
@@ -1531,7 +1725,7 @@ export declare class FrpController implements RemoteProviderController {
|
|
|
1531
1725
|
private ingressCertificateTimer;
|
|
1532
1726
|
constructor(options: FrpControllerOptions);
|
|
1533
1727
|
/** Restore the remembered FRP switch without changing LAN or other providers. */
|
|
1534
|
-
initialize(): Promise<void>;
|
|
1728
|
+
initialize(initialState?: MobileAccessControlState): Promise<void>;
|
|
1535
1729
|
/** Return the active FRP-backed DSH gateway. */
|
|
1536
1730
|
gateway(): MobileAccessGateway | undefined;
|
|
1537
1731
|
/** Return state safe for the desktop control UI. */
|
|
@@ -1599,11 +1793,12 @@ export declare function validateOriginAllowedCidrs(value: unknown, listenHost: s
|
|
|
1599
1793
|
export declare function parseOriginSettings(value: unknown): OriginSettings;
|
|
1600
1794
|
/** Owns only origin settings; shared paired-device storage is never removed. */
|
|
1601
1795
|
export declare class OriginConfigStore {
|
|
1796
|
+
private readonly ownedRoot;
|
|
1602
1797
|
readonly stateRoot: string;
|
|
1603
1798
|
readonly settingsFile: string;
|
|
1604
1799
|
private settingsValue;
|
|
1605
1800
|
private errorCode;
|
|
1606
|
-
constructor(stateDirectory: string);
|
|
1801
|
+
constructor(stateDirectory: string, ownedRoot?: string);
|
|
1607
1802
|
initialize(): Promise<void>;
|
|
1608
1803
|
status(): OriginConfigurationStatus;
|
|
1609
1804
|
settings(): OriginSettings | undefined;
|
|
@@ -1724,6 +1919,7 @@ export declare class CloudflaredComponentManager {
|
|
|
1724
1919
|
readonly stateRoot: string;
|
|
1725
1920
|
readonly logRoot: string;
|
|
1726
1921
|
private readonly stagingRoot;
|
|
1922
|
+
private readonly stateDirectory;
|
|
1727
1923
|
private readonly platform;
|
|
1728
1924
|
private readonly arch;
|
|
1729
1925
|
private readonly release;
|
|
@@ -1803,11 +1999,12 @@ export declare function parseCloudflaredTunnelSettings(value: unknown): Cloudfla
|
|
|
1803
1999
|
export declare function mergeSavedCloudflaredTunnelSettings(partial: Readonly<Record<string, unknown>>, saved: CloudflaredTunnelSettings | undefined): CloudflaredTunnelSettings;
|
|
1804
2000
|
/** Owns the private cloudflared tunnel configuration for one DSH installation. */
|
|
1805
2001
|
export declare class CloudflaredTunnelStore {
|
|
2002
|
+
private readonly ownedRoot;
|
|
1806
2003
|
readonly stateRoot: string;
|
|
1807
2004
|
readonly settingsFile: string;
|
|
1808
2005
|
private settingsValue;
|
|
1809
2006
|
private errorCode;
|
|
1810
|
-
constructor(stateDirectory: string);
|
|
2007
|
+
constructor(stateDirectory: string, ownedRoot?: string);
|
|
1811
2008
|
/** Load private settings while rejecting links, oversized files and unknown fields. */
|
|
1812
2009
|
initialize(): Promise<void>;
|
|
1813
2010
|
/** Return configuration metadata without exposing the connector token. */
|
|
@@ -1893,7 +2090,7 @@ export declare class CloudflaredController implements RemoteProviderController {
|
|
|
1893
2090
|
private startupRounds;
|
|
1894
2091
|
constructor(options: CloudflaredControllerOptions);
|
|
1895
2092
|
/** Restore the remembered cloudflared switch independently from LAN and other providers. */
|
|
1896
|
-
initialize(): Promise<void>;
|
|
2093
|
+
initialize(initialState?: MobileAccessControlState): Promise<void>;
|
|
1897
2094
|
/** Return the active cloudflared-backed DSH gateway. */
|
|
1898
2095
|
gateway(): MobileAccessGateway | undefined;
|
|
1899
2096
|
/** Return state safe for the desktop control UI. */
|
|
@@ -2009,5 +2206,5 @@ export declare function originGatewayConfig(template: ResolvedGatewayConfig, set
|
|
|
2009
2206
|
/** Mount the resident control route and its optional authenticated LAN gateway. */
|
|
2010
2207
|
export declare function apply(ctx: Context, config: PluginConfig): Promise<void>;
|
|
2011
2208
|
//#endregion
|
|
2012
|
-
export { type AccessControllerOptions, type AuthoritySpec, type BlockedUpgradePathEntry, type CaddySiteOptions, type CertRenewalStatus, type ClientModuleEntry, type ClientModulePreferenceSelection, type ClientModulePreferenceView, type CloudflaredComponentStatus, type CloudflaredControllerOptions, type CloudflaredState, type CloudflaredStatus, type CloudflaredTunnelMode, type CloudflaredTunnelSettings, type CloudflaredTunnelStatus, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, type DeviceProbeResult, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, type FrpAttachOptions, type FrpAttachPlan, type FrpAttachPlanLocal, type FrpAttachPlanStep, type FrpAttachStepId, type FrpAttachTemplate, type FrpAttachVpsParts, type FrpComponentStatus, type FrpConfigurationStatus, type FrpControllerOptions, type FrpEntryTls, type FrpIngressCertificate, type FrpIngressPaths, type FrpIngressSelfCheck, type FrpSettings, type FrpState, type FrpStatus, type LocalExtensionManifest, type MobileAccessControlState, type MobileAccessControlStore, type MobileAccessService as MobileAccessRegistry, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type OriginConfigurationStatus, type OriginControllerOptions, type OriginSettings, type OriginState, type OriginStatus, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, type ResolvedGatewayConfig, type ServerCertificateAuthority, type ServerCertificateFiles, type ServerCertificateTarget, type SessionAuthorization, type SessionEndReason, type StoredDevice, type TaskCompletionEvent, type TaskEventContext, type TaskEventSession, type TaskEventSink, type TaskEventWatcherOptions, type TaskTurnEvent, type TlsConfig };
|
|
2209
|
+
export { type AccessControllerOptions, type AuthoritySpec, type BlockedUpgradePathEntry, type CaddySiteOptions, type CertRenewalStatus, type ClientModuleEntry, type ClientModulePreferenceSelection, type ClientModulePreferenceView, type CloudflaredComponentStatus, type CloudflaredControllerOptions, type CloudflaredState, type CloudflaredStatus, type CloudflaredTunnelMode, type CloudflaredTunnelSettings, type CloudflaredTunnelStatus, FRP_VHOST_HTTP_PORT as DEFAULT_VHOST_HTTP_PORT, type DeviceProbeResult, type DeviceSnapshot, type DeviceStore, type DeviceSummary, type DisabledTlsConfig, type FrpAttachOptions, type FrpAttachPlan, type FrpAttachPlanLocal, type FrpAttachPlanStep, type FrpAttachStepId, type FrpAttachTemplate, type FrpAttachVpsParts, type FrpComponentStatus, type FrpConfigurationStatus, type FrpControllerOptions, type FrpEntryTls, type FrpIngressCertificate, type FrpIngressPaths, type FrpIngressSelfCheck, type FrpSettings, type FrpState, type FrpStatus, type HostExecutionConfig, type LocalExtensionManifest, type MobileAccessControlState, type MobileAccessControlStore, type MobileAccessService as MobileAccessRegistry, type MobileAccessRuntime, type MobileActionContext, type MobileExtensionClientEntry, type MobileExtensionDefinition, type MobileExtensionManifest, type MobileExtensionStatus, type MobileHostAction, type MobileHostRoute, type MobileRouteRequest, type MobileRouteResponse, type MobileWorkerHostApi, type OriginConfigurationStatus, type OriginControllerOptions, type OriginSettings, type OriginState, type OriginStatus, type PairingResult, type ParsedCidr, type PluginConfig, type ProvidedTlsConfig, type RemoteProvider, type RemoteProviderController, type RemoteProviderState, type RemoteProviderStatus, type RenewalResult, type ResolvedGatewayConfig, type ResolvedHostExecutionConfig, type ServerCertificateAuthority, type ServerCertificateFiles, type ServerCertificateTarget, type SessionAuthorization, type SessionEndReason, type StoredDevice, type TaskCompletionEvent, type TaskEventContext, type TaskEventSession, type TaskEventSink, type TaskEventWatcherOptions, type TaskTurnEvent, type TlsConfig };
|
|
2013
2210
|
//# sourceMappingURL=index.d.mts.map
|