@serve.zone/dcrouter 15.0.2 → 15.0.3

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.
Files changed (70) hide show
  1. package/deno.json +1 -1
  2. package/dist_serve/bundle.js +768 -768
  3. package/dist_ts/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/00_commitinfo_data.js +1 -1
  5. package/dist_ts_web/appstate/acme.d.ts +17 -0
  6. package/dist_ts_web/appstate/acme.js +64 -0
  7. package/dist_ts_web/appstate/certificates.d.ts +37 -0
  8. package/dist_ts_web/appstate/certificates.js +107 -0
  9. package/dist_ts_web/appstate/config.d.ts +9 -0
  10. package/dist_ts_web/appstate/config.js +35 -0
  11. package/dist_ts_web/appstate/domains.d.ts +80 -0
  12. package/dist_ts_web/appstate/domains.js +324 -0
  13. package/dist_ts_web/appstate/email-domains.d.ts +25 -0
  14. package/dist_ts_web/appstate/email-domains.js +104 -0
  15. package/dist_ts_web/appstate/email-ops.d.ts +10 -0
  16. package/dist_ts_web/appstate/email-ops.js +40 -0
  17. package/dist_ts_web/appstate/login.d.ts +30 -0
  18. package/dist_ts_web/appstate/login.js +83 -0
  19. package/dist_ts_web/appstate/logs.d.ts +16 -0
  20. package/dist_ts_web/appstate/logs.js +27 -0
  21. package/dist_ts_web/appstate/network.d.ts +50 -0
  22. package/dist_ts_web/appstate/network.js +122 -0
  23. package/dist_ts_web/appstate/profiles-targets.d.ts +45 -0
  24. package/dist_ts_web/appstate/profiles-targets.js +173 -0
  25. package/dist_ts_web/appstate/remoteingress.d.ts +47 -0
  26. package/dist_ts_web/appstate/remoteingress.js +204 -0
  27. package/dist_ts_web/appstate/routes.d.ts +76 -0
  28. package/dist_ts_web/appstate/routes.js +316 -0
  29. package/dist_ts_web/appstate/runtime.d.ts +1 -0
  30. package/dist_ts_web/appstate/runtime.js +276 -0
  31. package/dist_ts_web/appstate/security.d.ts +29 -0
  32. package/dist_ts_web/appstate/security.js +167 -0
  33. package/dist_ts_web/appstate/shared.d.ts +3 -0
  34. package/dist_ts_web/appstate/shared.js +13 -0
  35. package/dist_ts_web/appstate/stats.d.ts +15 -0
  36. package/dist_ts_web/appstate/stats.js +59 -0
  37. package/dist_ts_web/appstate/target-profiles.d.ts +37 -0
  38. package/dist_ts_web/appstate/target-profiles.js +118 -0
  39. package/dist_ts_web/appstate/ui.d.ts +11 -0
  40. package/dist_ts_web/appstate/ui.js +55 -0
  41. package/dist_ts_web/appstate/users.d.ts +27 -0
  42. package/dist_ts_web/appstate/users.js +85 -0
  43. package/dist_ts_web/appstate/vpn.d.ts +44 -0
  44. package/dist_ts_web/appstate/vpn.js +148 -0
  45. package/dist_ts_web/appstate.d.ts +20 -568
  46. package/dist_ts_web/appstate.js +24 -2418
  47. package/package.json +1 -1
  48. package/ts/00_commitinfo_data.ts +1 -1
  49. package/ts_web/00_commitinfo_data.ts +1 -1
  50. package/ts_web/appstate/acme.ts +93 -0
  51. package/ts_web/appstate/certificates.ts +159 -0
  52. package/ts_web/appstate/config.ts +49 -0
  53. package/ts_web/appstate/domains.ts +429 -0
  54. package/ts_web/appstate/email-domains.ts +155 -0
  55. package/ts_web/appstate/email-ops.ts +57 -0
  56. package/ts_web/appstate/login.ts +128 -0
  57. package/ts_web/appstate/logs.ts +50 -0
  58. package/ts_web/appstate/network.ts +161 -0
  59. package/ts_web/appstate/profiles-targets.ts +240 -0
  60. package/ts_web/appstate/remoteingress.ts +300 -0
  61. package/ts_web/appstate/routes.ts +447 -0
  62. package/ts_web/appstate/runtime.ts +308 -0
  63. package/ts_web/appstate/security.ts +229 -0
  64. package/ts_web/appstate/shared.ts +15 -0
  65. package/ts_web/appstate/stats.ts +79 -0
  66. package/ts_web/appstate/target-profiles.ts +164 -0
  67. package/ts_web/appstate/ui.ts +75 -0
  68. package/ts_web/appstate/users.ts +133 -0
  69. package/ts_web/appstate/vpn.ts +234 -0
  70. package/ts_web/appstate.ts +24 -3403
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '15.0.2',
6
+ version: '15.0.3',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '15.0.2',
6
+ version: '15.0.3',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
@@ -0,0 +1,17 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ export interface IAcmeConfigState {
4
+ config: interfaces.data.IAcmeConfig | null;
5
+ isLoading: boolean;
6
+ error: string | null;
7
+ lastUpdated: number;
8
+ }
9
+ export declare const acmeConfigStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, IAcmeConfigState>;
10
+ export declare const fetchAcmeConfigAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IAcmeConfigState, unknown>;
11
+ export declare const updateAcmeConfigAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IAcmeConfigState, {
12
+ accountEmail?: string;
13
+ enabled?: boolean;
14
+ useProduction?: boolean;
15
+ autoRenew?: boolean;
16
+ renewThresholdDays?: number;
17
+ }>;
@@ -0,0 +1,64 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ import { appState } from './shared.js';
4
+ import { getActionContext } from './login.js';
5
+ export const acmeConfigStatePart = await appState.getStatePart('acmeConfig', {
6
+ config: null,
7
+ isLoading: false,
8
+ error: null,
9
+ lastUpdated: 0,
10
+ }, 'soft');
11
+ // ACME Config Actions
12
+ // ============================================================================
13
+ export const fetchAcmeConfigAction = acmeConfigStatePart.createAction(async (statePartArg) => {
14
+ const context = getActionContext();
15
+ const currentState = statePartArg.getState();
16
+ if (!context.identity)
17
+ return currentState;
18
+ try {
19
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getAcmeConfig');
20
+ const response = await request.fire({ identity: context.identity });
21
+ return {
22
+ config: response.config,
23
+ isLoading: false,
24
+ error: null,
25
+ lastUpdated: Date.now(),
26
+ };
27
+ }
28
+ catch (error) {
29
+ return {
30
+ ...currentState,
31
+ isLoading: false,
32
+ error: error instanceof Error ? error.message : 'Failed to fetch ACME config',
33
+ };
34
+ }
35
+ });
36
+ export const updateAcmeConfigAction = acmeConfigStatePart.createAction(async (statePartArg, dataArg, actionContext) => {
37
+ const context = getActionContext();
38
+ try {
39
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'updateAcmeConfig');
40
+ const response = await request.fire({
41
+ identity: context.identity,
42
+ accountEmail: dataArg.accountEmail,
43
+ enabled: dataArg.enabled,
44
+ useProduction: dataArg.useProduction,
45
+ autoRenew: dataArg.autoRenew,
46
+ renewThresholdDays: dataArg.renewThresholdDays,
47
+ });
48
+ if (!response.success) {
49
+ return {
50
+ ...statePartArg.getState(),
51
+ error: response.message || 'Failed to update ACME config',
52
+ };
53
+ }
54
+ return await actionContext.dispatch(fetchAcmeConfigAction, null);
55
+ }
56
+ catch (error) {
57
+ return {
58
+ ...statePartArg.getState(),
59
+ error: error instanceof Error ? error.message : 'Failed to update ACME config',
60
+ };
61
+ }
62
+ });
63
+ // ============================================================================
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9hcHBzdGF0ZS9hY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxVQUFVLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFhOUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxRQUFRLENBQUMsWUFBWSxDQUM1RCxZQUFZLEVBQ1o7SUFDRSxNQUFNLEVBQUUsSUFBSTtJQUNaLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLEtBQUssRUFBRSxJQUFJO0lBQ1gsV0FBVyxFQUFFLENBQUM7Q0FDZixFQUNELE1BQU0sQ0FDUCxDQUFDO0FBRUYsc0JBQXNCO0FBQ3RCLCtFQUErRTtBQUUvRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQ25FLEtBQUssRUFBRSxZQUFZLEVBQTZCLEVBQUU7SUFDaEQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFHLENBQUM7SUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFFM0MsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUVwRSxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU87WUFDTCxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07WUFDdkIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtTQUN4QixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBYyxFQUFFLENBQUM7UUFDeEIsT0FBTztZQUNMLEdBQUcsWUFBWTtZQUNmLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7U0FDOUUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLG1CQUFtQixDQUFDLFlBQVksQ0FNbkUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUE2QixFQUFFO0lBQzNFLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUVwRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFTO1lBQzNCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEIsT0FBTztnQkFDTCxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUc7Z0JBQzNCLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxJQUFJLDhCQUE4QjthQUMxRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sTUFBTSxhQUFjLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1FBQ3hCLE9BQU87WUFDTCxHQUFHLFlBQVksQ0FBQyxRQUFRLEVBQUc7WUFDM0IsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtTQUMvRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUgsK0VBQStFIn0=
@@ -0,0 +1,37 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ export interface ICertificateState {
4
+ certificates: interfaces.requests.ICertificateInfo[];
5
+ summary: {
6
+ total: number;
7
+ valid: number;
8
+ expiring: number;
9
+ expired: number;
10
+ failed: number;
11
+ unknown: number;
12
+ };
13
+ isLoading: boolean;
14
+ error: string | null;
15
+ lastUpdated: number;
16
+ }
17
+ export declare const certificateStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, ICertificateState>;
18
+ export declare const fetchCertificateOverviewAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ICertificateState, unknown>;
19
+ export declare const reprovisionCertificateAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ICertificateState, {
20
+ domain: string;
21
+ forceRenew?: boolean;
22
+ }>;
23
+ export declare const deleteCertificateAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ICertificateState, string>;
24
+ export declare const importCertificateAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<ICertificateState, {
25
+ id: string;
26
+ domainName: string;
27
+ created: number;
28
+ validUntil: number;
29
+ privateKey: string;
30
+ publicKey: string;
31
+ csr: string;
32
+ }>;
33
+ export declare function fetchCertificateExport(domain: string): Promise<{
34
+ success: boolean;
35
+ cert?: import("@tsclass/tsclass/dist_ts/network/cert.js").ICert;
36
+ message?: string;
37
+ }>;
@@ -0,0 +1,107 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ import { appState } from './shared.js';
4
+ import { getActionContext } from './login.js';
5
+ export const certificateStatePart = await appState.getStatePart('certificates', {
6
+ certificates: [],
7
+ summary: { total: 0, valid: 0, expiring: 0, expired: 0, failed: 0, unknown: 0 },
8
+ isLoading: false,
9
+ error: null,
10
+ lastUpdated: 0,
11
+ }, 'soft');
12
+ // Certificate Actions
13
+ // ============================================================================
14
+ export const fetchCertificateOverviewAction = certificateStatePart.createAction(async (statePartArg) => {
15
+ const context = getActionContext();
16
+ const currentState = statePartArg.getState();
17
+ if (!context.identity)
18
+ return currentState;
19
+ try {
20
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getCertificateOverview');
21
+ const response = await request.fire({
22
+ identity: context.identity,
23
+ });
24
+ return {
25
+ certificates: response.certificates,
26
+ summary: response.summary,
27
+ isLoading: false,
28
+ error: null,
29
+ lastUpdated: Date.now(),
30
+ };
31
+ }
32
+ catch (error) {
33
+ return {
34
+ ...currentState,
35
+ isLoading: false,
36
+ error: error instanceof Error ? error.message : 'Failed to fetch certificate overview',
37
+ };
38
+ }
39
+ });
40
+ export const reprovisionCertificateAction = certificateStatePart.createAction(async (statePartArg, dataArg, actionContext) => {
41
+ const context = getActionContext();
42
+ const currentState = statePartArg.getState();
43
+ try {
44
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'reprovisionCertificateDomain');
45
+ await request.fire({
46
+ identity: context.identity,
47
+ domain: dataArg.domain,
48
+ forceRenew: dataArg.forceRenew,
49
+ });
50
+ // Re-fetch overview after reprovisioning
51
+ return await actionContext.dispatch(fetchCertificateOverviewAction, null);
52
+ }
53
+ catch (error) {
54
+ return {
55
+ ...currentState,
56
+ error: error instanceof Error ? error.message : 'Failed to reprovision certificate',
57
+ };
58
+ }
59
+ });
60
+ export const deleteCertificateAction = certificateStatePart.createAction(async (statePartArg, domain, actionContext) => {
61
+ const context = getActionContext();
62
+ const currentState = statePartArg.getState();
63
+ try {
64
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'deleteCertificate');
65
+ await request.fire({
66
+ identity: context.identity,
67
+ domain,
68
+ });
69
+ // Re-fetch overview after deletion
70
+ return await actionContext.dispatch(fetchCertificateOverviewAction, null);
71
+ }
72
+ catch (error) {
73
+ return {
74
+ ...currentState,
75
+ error: error instanceof Error ? error.message : 'Failed to delete certificate',
76
+ };
77
+ }
78
+ });
79
+ export const importCertificateAction = certificateStatePart.createAction(async (statePartArg, cert, actionContext) => {
80
+ const context = getActionContext();
81
+ const currentState = statePartArg.getState();
82
+ try {
83
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'importCertificate');
84
+ await request.fire({
85
+ identity: context.identity,
86
+ cert,
87
+ });
88
+ // Re-fetch overview after import
89
+ return await actionContext.dispatch(fetchCertificateOverviewAction, null);
90
+ }
91
+ catch (error) {
92
+ return {
93
+ ...currentState,
94
+ error: error instanceof Error ? error.message : 'Failed to import certificate',
95
+ };
96
+ }
97
+ });
98
+ export async function fetchCertificateExport(domain) {
99
+ const context = getActionContext();
100
+ const request = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'exportCertificate');
101
+ return request.fire({
102
+ identity: context.identity,
103
+ domain,
104
+ });
105
+ }
106
+ // ============================================================================
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfd2ViL2FwcHN0YXRlL2NlcnRpZmljYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEtBQUssVUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBVTlDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sUUFBUSxDQUFDLFlBQVksQ0FDN0QsY0FBYyxFQUNkO0lBQ0UsWUFBWSxFQUFFLEVBQUU7SUFDaEIsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDL0UsU0FBUyxFQUFFLEtBQUs7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxXQUFXLEVBQUUsQ0FBQztDQUNmLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFFRixzQkFBc0I7QUFDdEIsK0VBQStFO0FBRS9FLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUE4QixFQUFFO0lBQ2pJLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFB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
@@ -0,0 +1,9 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ export interface IConfigState {
4
+ config: interfaces.requests.IConfigData | null;
5
+ isLoading: boolean;
6
+ error: string | null;
7
+ }
8
+ export declare const configStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, IConfigState>;
9
+ export declare const fetchConfigurationAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IConfigState, unknown>;
@@ -0,0 +1,35 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ import { appState } from './shared.js';
4
+ import { getActionContext } from './login.js';
5
+ export const configStatePart = await appState.getStatePart('config', {
6
+ config: null,
7
+ isLoading: false,
8
+ error: null,
9
+ });
10
+ // Fetch Configuration Action (read-only)
11
+ export const fetchConfigurationAction = configStatePart.createAction(async (statePartArg) => {
12
+ const context = getActionContext();
13
+ const currentState = statePartArg.getState();
14
+ if (!context.identity)
15
+ return currentState;
16
+ try {
17
+ const configRequest = new plugins.domtools.plugins.typedrequest.TypedRequest('/typedrequest', 'getConfiguration');
18
+ const response = await configRequest.fire({
19
+ identity: context.identity,
20
+ });
21
+ return {
22
+ config: response.config,
23
+ isLoading: false,
24
+ error: null,
25
+ };
26
+ }
27
+ catch (error) {
28
+ return {
29
+ ...currentState,
30
+ isLoading: false,
31
+ error: error.message || 'Failed to fetch configuration',
32
+ };
33
+ }
34
+ });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfd2ViL2FwcHN0YXRlL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssVUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBUTlDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLENBQ3hELFFBQVEsRUFDUjtJQUNFLE1BQU0sRUFBRSxJQUFJO0lBQ1osU0FBUyxFQUFFLEtBQUs7SUFDaEIsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUNGLENBQUM7QUFFRix5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUF5QixFQUFFO0lBQ2pILE1BQU0sT0FBTyxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRyxDQUFDO0lBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTNDLElBQUksQ0FBQztRQUNILE1BQU0sYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FFMUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3hDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUMzQixDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3ZCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQWMsRUFBRSxDQUFDO1FBQ3hCLE9BQU87WUFDTCxHQUFHLFlBQVk7WUFDZixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLLEVBQUcsS0FBZSxDQUFDLE9BQU8sSUFBSSwrQkFBK0I7U0FDbkUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,80 @@
1
+ import * as plugins from '../plugins.js';
2
+ import * as interfaces from '../../dist_ts_interfaces/index.js';
3
+ export interface IDomainsState {
4
+ providers: interfaces.data.IDnsProviderPublic[];
5
+ domains: interfaces.data.IDomain[];
6
+ records: interfaces.data.IDnsRecord[];
7
+ /** id of the currently-selected domain in the DNS records subview. */
8
+ selectedDomainId: string | null;
9
+ isLoading: boolean;
10
+ error: string | null;
11
+ lastUpdated: number;
12
+ }
13
+ export declare const domainsStatePart: plugins.deesElement.domtools.plugins.smartstate.StatePart<string, IDomainsState>;
14
+ export declare const fetchDomainsAndProvidersAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, unknown>;
15
+ export declare const fetchDnsRecordsForDomainAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
16
+ domainId: string;
17
+ }>;
18
+ export declare const createDnsProviderAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
19
+ name: string;
20
+ type: interfaces.data.TDnsProviderType;
21
+ credentials: interfaces.data.TDnsProviderCredentials;
22
+ }>;
23
+ export declare const updateDnsProviderAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
24
+ id: string;
25
+ name?: string;
26
+ credentials?: interfaces.data.TDnsProviderCredentials;
27
+ }>;
28
+ export declare const deleteDnsProviderAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
29
+ id: string;
30
+ force?: boolean;
31
+ }>;
32
+ export declare const testDnsProviderAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
33
+ id: string;
34
+ }>;
35
+ /** One-shot fetch for the import-domain modal. Does NOT modify state. */
36
+ export declare function fetchProviderDomains(providerId: string): Promise<{
37
+ success: boolean;
38
+ domains?: interfaces.data.IProviderDomainListing[];
39
+ message?: string;
40
+ }>;
41
+ export declare const createDcrouterDomainAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
42
+ name: string;
43
+ description?: string;
44
+ }>;
45
+ export declare const importDomainsFromProviderAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
46
+ providerId: string;
47
+ domainNames: string[];
48
+ }>;
49
+ export declare const deleteDomainAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
50
+ id: string;
51
+ }>;
52
+ export declare const syncDomainAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
53
+ id: string;
54
+ }>;
55
+ export declare const migrateDomainAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
56
+ id: string;
57
+ targetSource: interfaces.data.TDomainSource;
58
+ targetProviderId?: string;
59
+ deleteExistingProviderRecords?: boolean;
60
+ }>;
61
+ export declare const createDnsRecordAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
62
+ domainId: string;
63
+ name: string;
64
+ type: interfaces.data.TDnsRecordType;
65
+ value: string;
66
+ ttl?: number;
67
+ proxied?: boolean;
68
+ }>;
69
+ export declare const updateDnsRecordAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
70
+ id: string;
71
+ domainId: string;
72
+ name?: string;
73
+ value?: string;
74
+ ttl?: number;
75
+ proxied?: boolean;
76
+ }>;
77
+ export declare const deleteDnsRecordAction: plugins.deesElement.domtools.plugins.smartstate.StateAction<IDomainsState, {
78
+ id: string;
79
+ domainId: string;
80
+ }>;