@serve.zone/dcrouter 13.16.1 → 13.17.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/dist_serve/bundle.js +729 -721
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/monitoring/classes.metricsmanager.ts +43 -34
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/network/ops-view-network-activity.ts +2 -1
- package/ts_web/elements/network/ops-view-routes.ts +24 -8
- package/dist_ts/00_commitinfo_data.d.ts +0 -8
- package/dist_ts/00_commitinfo_data.js +0 -9
- package/dist_ts/acme/index.d.ts +0 -1
- package/dist_ts/acme/index.js +0 -2
- package/dist_ts/acme/manager.acme-config.d.ts +0 -48
- package/dist_ts/acme/manager.acme-config.js +0 -156
- package/dist_ts/classes.cert-provision-scheduler.d.ts +0 -52
- package/dist_ts/classes.cert-provision-scheduler.js +0 -138
- package/dist_ts/classes.dcrouter.d.ts +0 -401
- package/dist_ts/classes.dcrouter.js +0 -1852
- package/dist_ts/classes.storage-cert-manager.d.ts +0 -15
- package/dist_ts/classes.storage-cert-manager.js +0 -53
- package/dist_ts/config/classes.api-token-manager.d.ts +0 -44
- package/dist_ts/config/classes.api-token-manager.js +0 -180
- package/dist_ts/config/classes.db-seeder.d.ts +0 -25
- package/dist_ts/config/classes.db-seeder.js +0 -69
- package/dist_ts/config/classes.reference-resolver.d.ts +0 -80
- package/dist_ts/config/classes.reference-resolver.js +0 -483
- package/dist_ts/config/classes.route-config-manager.d.ts +0 -54
- package/dist_ts/config/classes.route-config-manager.js +0 -370
- package/dist_ts/config/classes.target-profile-manager.d.ts +0 -82
- package/dist_ts/config/classes.target-profile-manager.js +0 -349
- package/dist_ts/config/index.d.ts +0 -6
- package/dist_ts/config/index.js +0 -8
- package/dist_ts/config/validator.d.ts +0 -104
- package/dist_ts/config/validator.js +0 -152
- package/dist_ts/db/classes.cache.cleaner.d.ts +0 -47
- package/dist_ts/db/classes.cache.cleaner.js +0 -130
- package/dist_ts/db/classes.cached.document.d.ts +0 -76
- package/dist_ts/db/classes.cached.document.js +0 -100
- package/dist_ts/db/classes.dcrouter-db.d.ts +0 -70
- package/dist_ts/db/classes.dcrouter-db.js +0 -146
- package/dist_ts/db/documents/classes.accounting-session.doc.d.ts +0 -32
- package/dist_ts/db/documents/classes.accounting-session.doc.js +0 -214
- package/dist_ts/db/documents/classes.acme-cert.doc.d.ts +0 -13
- package/dist_ts/db/documents/classes.acme-cert.doc.js +0 -109
- package/dist_ts/db/documents/classes.acme-config.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.acme-config.doc.js +0 -121
- package/dist_ts/db/documents/classes.api-token.doc.d.ts +0 -18
- package/dist_ts/db/documents/classes.api-token.doc.js +0 -127
- package/dist_ts/db/documents/classes.cached.email.d.ts +0 -125
- package/dist_ts/db/documents/classes.cached.email.js +0 -337
- package/dist_ts/db/documents/classes.cached.ip.reputation.d.ts +0 -119
- package/dist_ts/db/documents/classes.cached.ip.reputation.js +0 -323
- package/dist_ts/db/documents/classes.cert-backoff.doc.d.ts +0 -11
- package/dist_ts/db/documents/classes.cert-backoff.doc.js +0 -97
- package/dist_ts/db/documents/classes.dns-provider.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.dns-provider.doc.js +0 -134
- package/dist_ts/db/documents/classes.dns-record.doc.d.ts +0 -21
- package/dist_ts/db/documents/classes.dns-record.doc.js +0 -143
- package/dist_ts/db/documents/classes.domain.doc.d.ts +0 -22
- package/dist_ts/db/documents/classes.domain.doc.js +0 -146
- package/dist_ts/db/documents/classes.email-domain.doc.d.ts +0 -17
- package/dist_ts/db/documents/classes.email-domain.doc.js +0 -124
- package/dist_ts/db/documents/classes.network-target.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.network-target.doc.js +0 -118
- package/dist_ts/db/documents/classes.proxy-cert.doc.d.ts +0 -12
- package/dist_ts/db/documents/classes.proxy-cert.doc.js +0 -103
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.d.ts +0 -17
- package/dist_ts/db/documents/classes.remote-ingress-edge.doc.js +0 -130
- package/dist_ts/db/documents/classes.route.doc.d.ts +0 -18
- package/dist_ts/db/documents/classes.route.doc.js +0 -121
- package/dist_ts/db/documents/classes.source-profile.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.source-profile.doc.js +0 -115
- package/dist_ts/db/documents/classes.target-profile.doc.d.ts +0 -16
- package/dist_ts/db/documents/classes.target-profile.doc.js +0 -121
- package/dist_ts/db/documents/classes.vlan-mappings.doc.d.ts +0 -15
- package/dist_ts/db/documents/classes.vlan-mappings.doc.js +0 -77
- package/dist_ts/db/documents/classes.vpn-client.doc.d.ts +0 -23
- package/dist_ts/db/documents/classes.vpn-client.doc.js +0 -172
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.d.ts +0 -10
- package/dist_ts/db/documents/classes.vpn-server-keys.doc.js +0 -94
- package/dist_ts/db/documents/index.d.ts +0 -20
- package/dist_ts/db/documents/index.js +0 -30
- package/dist_ts/db/index.d.ts +0 -4
- package/dist_ts/db/index.js +0 -9
- package/dist_ts/dns/index.d.ts +0 -2
- package/dist_ts/dns/index.js +0 -3
- package/dist_ts/dns/manager.dns.d.ts +0 -267
- package/dist_ts/dns/manager.dns.js +0 -906
- package/dist_ts/dns/providers/cloudflare.provider.d.ts +0 -21
- package/dist_ts/dns/providers/cloudflare.provider.js +0 -106
- package/dist_ts/dns/providers/factory.d.ts +0 -23
- package/dist_ts/dns/providers/factory.js +0 -47
- package/dist_ts/dns/providers/index.d.ts +0 -3
- package/dist_ts/dns/providers/index.js +0 -4
- package/dist_ts/dns/providers/interfaces.d.ts +0 -54
- package/dist_ts/dns/providers/interfaces.js +0 -2
- package/dist_ts/email/classes.email-domain.manager.d.ts +0 -46
- package/dist_ts/email/classes.email-domain.manager.js +0 -276
- package/dist_ts/email/index.d.ts +0 -1
- package/dist_ts/email/index.js +0 -2
- package/dist_ts/errors/base.errors.d.ts +0 -224
- package/dist_ts/errors/base.errors.js +0 -320
- package/dist_ts/errors/error-handler.d.ts +0 -98
- package/dist_ts/errors/error-handler.js +0 -282
- package/dist_ts/errors/error.codes.d.ts +0 -115
- package/dist_ts/errors/error.codes.js +0 -136
- package/dist_ts/errors/index.d.ts +0 -54
- package/dist_ts/errors/index.js +0 -136
- package/dist_ts/errors/reputation.errors.d.ts +0 -183
- package/dist_ts/errors/reputation.errors.js +0 -292
- package/dist_ts/http3/http3-route-augmentation.d.ts +0 -50
- package/dist_ts/http3/http3-route-augmentation.js +0 -98
- package/dist_ts/http3/index.d.ts +0 -1
- package/dist_ts/http3/index.js +0 -2
- package/dist_ts/index.d.ts +0 -8
- package/dist_ts/index.js +0 -29
- package/dist_ts/logger.d.ts +0 -21
- package/dist_ts/logger.js +0 -81
- package/dist_ts/monitoring/classes.metricscache.d.ts +0 -32
- package/dist_ts/monitoring/classes.metricscache.js +0 -63
- package/dist_ts/monitoring/classes.metricsmanager.d.ts +0 -233
- package/dist_ts/monitoring/classes.metricsmanager.js +0 -897
- package/dist_ts/monitoring/index.d.ts +0 -1
- package/dist_ts/monitoring/index.js +0 -2
- package/dist_ts/opsserver/classes.opsserver.d.ts +0 -47
- package/dist_ts/opsserver/classes.opsserver.js +0 -105
- package/dist_ts/opsserver/handlers/acme-config.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/acme-config.handler.js +0 -77
- package/dist_ts/opsserver/handlers/admin.handler.d.ts +0 -40
- package/dist_ts/opsserver/handlers/admin.handler.js +0 -191
- package/dist_ts/opsserver/handlers/api-token.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/api-token.handler.js +0 -62
- package/dist_ts/opsserver/handlers/certificate.handler.d.ts +0 -77
- package/dist_ts/opsserver/handlers/certificate.handler.js +0 -574
- package/dist_ts/opsserver/handlers/config.handler.d.ts +0 -7
- package/dist_ts/opsserver/handlers/config.handler.js +0 -200
- package/dist_ts/opsserver/handlers/dns-provider.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/dns-provider.handler.js +0 -156
- package/dist_ts/opsserver/handlers/dns-record.handler.d.ts +0 -13
- package/dist_ts/opsserver/handlers/dns-record.handler.js +0 -98
- package/dist_ts/opsserver/handlers/domain.handler.d.ts +0 -13
- package/dist_ts/opsserver/handlers/domain.handler.js +0 -137
- package/dist_ts/opsserver/handlers/email-domain.handler.d.ts +0 -16
- package/dist_ts/opsserver/handlers/email-domain.handler.js +0 -150
- package/dist_ts/opsserver/handlers/email-ops.handler.d.ts +0 -30
- package/dist_ts/opsserver/handlers/email-ops.handler.js +0 -227
- package/dist_ts/opsserver/handlers/index.d.ts +0 -21
- package/dist_ts/opsserver/handlers/index.js +0 -22
- package/dist_ts/opsserver/handlers/logs.handler.d.ts +0 -25
- package/dist_ts/opsserver/handlers/logs.handler.js +0 -264
- package/dist_ts/opsserver/handlers/network-target.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/network-target.handler.js +0 -117
- package/dist_ts/opsserver/handlers/radius.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/radius.handler.js +0 -295
- package/dist_ts/opsserver/handlers/remoteingress.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/remoteingress.handler.js +0 -156
- package/dist_ts/opsserver/handlers/route-management.handler.d.ts +0 -14
- package/dist_ts/opsserver/handlers/route-management.handler.js +0 -98
- package/dist_ts/opsserver/handlers/security.handler.d.ts +0 -9
- package/dist_ts/opsserver/handlers/security.handler.js +0 -237
- package/dist_ts/opsserver/handlers/source-profile.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/source-profile.handler.js +0 -119
- package/dist_ts/opsserver/handlers/stats.handler.d.ts +0 -11
- package/dist_ts/opsserver/handlers/stats.handler.js +0 -461
- package/dist_ts/opsserver/handlers/target-profile.handler.d.ts +0 -10
- package/dist_ts/opsserver/handlers/target-profile.handler.js +0 -117
- package/dist_ts/opsserver/handlers/users.handler.d.ts +0 -12
- package/dist_ts/opsserver/handlers/users.handler.js +0 -24
- package/dist_ts/opsserver/handlers/vpn.handler.d.ts +0 -6
- package/dist_ts/opsserver/handlers/vpn.handler.js +0 -262
- package/dist_ts/opsserver/helpers/guards.d.ts +0 -27
- package/dist_ts/opsserver/helpers/guards.js +0 -43
- package/dist_ts/opsserver/index.d.ts +0 -1
- package/dist_ts/opsserver/index.js +0 -2
- package/dist_ts/paths.d.ts +0 -25
- package/dist_ts/paths.js +0 -44
- package/dist_ts/plugins.d.ts +0 -81
- package/dist_ts/plugins.js +0 -115
- package/dist_ts/radius/classes.accounting.manager.d.ts +0 -223
- package/dist_ts/radius/classes.accounting.manager.js +0 -449
- package/dist_ts/radius/classes.radius.server.d.ts +0 -169
- package/dist_ts/radius/classes.radius.server.js +0 -384
- package/dist_ts/radius/classes.vlan.manager.d.ts +0 -124
- package/dist_ts/radius/classes.vlan.manager.js +0 -272
- package/dist_ts/radius/index.d.ts +0 -13
- package/dist_ts/radius/index.js +0 -14
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +0 -92
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +0 -291
- package/dist_ts/remoteingress/classes.tunnel-manager.d.ts +0 -59
- package/dist_ts/remoteingress/classes.tunnel-manager.js +0 -165
- package/dist_ts/remoteingress/index.d.ts +0 -2
- package/dist_ts/remoteingress/index.js +0 -3
- package/dist_ts/security/classes.contentscanner.d.ts +0 -164
- package/dist_ts/security/classes.contentscanner.js +0 -642
- package/dist_ts/security/classes.ipreputationchecker.d.ts +0 -145
- package/dist_ts/security/classes.ipreputationchecker.js +0 -458
- package/dist_ts/security/classes.securitylogger.d.ts +0 -144
- package/dist_ts/security/classes.securitylogger.js +0 -235
- package/dist_ts/security/index.d.ts +0 -3
- package/dist_ts/security/index.js +0 -4
- package/dist_ts/sms/classes.smsservice.d.ts +0 -15
- package/dist_ts/sms/classes.smsservice.js +0 -72
- package/dist_ts/sms/config/sms.config.d.ts +0 -93
- package/dist_ts/sms/config/sms.config.js +0 -2
- package/dist_ts/sms/config/sms.schema.d.ts +0 -5
- package/dist_ts/sms/config/sms.schema.js +0 -121
- package/dist_ts/sms/index.d.ts +0 -1
- package/dist_ts/sms/index.js +0 -2
- package/dist_ts/vpn/classes.vpn-manager.d.ts +0 -159
- package/dist_ts/vpn/classes.vpn-manager.js +0 -459
- package/dist_ts/vpn/index.d.ts +0 -1
- package/dist_ts/vpn/index.js +0 -2
- package/dist_ts_apiclient/classes.apitoken.d.ts +0 -41
- package/dist_ts_apiclient/classes.apitoken.js +0 -115
- package/dist_ts_apiclient/classes.certificate.d.ts +0 -57
- package/dist_ts_apiclient/classes.certificate.js +0 -69
- package/dist_ts_apiclient/classes.config.d.ts +0 -7
- package/dist_ts_apiclient/classes.config.js +0 -11
- package/dist_ts_apiclient/classes.dcrouterapiclient.d.ts +0 -41
- package/dist_ts_apiclient/classes.dcrouterapiclient.js +0 -81
- package/dist_ts_apiclient/classes.email.d.ts +0 -30
- package/dist_ts_apiclient/classes.email.js +0 -52
- package/dist_ts_apiclient/classes.logs.d.ts +0 -21
- package/dist_ts_apiclient/classes.logs.js +0 -14
- package/dist_ts_apiclient/classes.radius.d.ts +0 -59
- package/dist_ts_apiclient/classes.radius.js +0 -95
- package/dist_ts_apiclient/classes.remoteingress.d.ts +0 -54
- package/dist_ts_apiclient/classes.remoteingress.js +0 -136
- package/dist_ts_apiclient/classes.route.d.ts +0 -39
- package/dist_ts_apiclient/classes.route.js +0 -125
- package/dist_ts_apiclient/classes.stats.d.ts +0 -47
- package/dist_ts_apiclient/classes.stats.js +0 -38
- package/dist_ts_apiclient/index.d.ts +0 -10
- package/dist_ts_apiclient/index.js +0 -14
- package/dist_ts_apiclient/plugins.d.ts +0 -3
- package/dist_ts_apiclient/plugins.js +0 -5
- package/dist_ts_interfaces/data/acme-config.d.ts +0 -25
- package/dist_ts_interfaces/data/acme-config.js +0 -2
- package/dist_ts_interfaces/data/auth.d.ts +0 -8
- package/dist_ts_interfaces/data/auth.js +0 -2
- package/dist_ts_interfaces/data/dns-provider.d.ts +0 -136
- package/dist_ts_interfaces/data/dns-provider.js +0 -41
- package/dist_ts_interfaces/data/dns-record.d.ts +0 -42
- package/dist_ts_interfaces/data/dns-record.js +0 -2
- package/dist_ts_interfaces/data/domain.d.ts +0 -35
- package/dist_ts_interfaces/data/domain.js +0 -2
- package/dist_ts_interfaces/data/email-domain.d.ts +0 -70
- package/dist_ts_interfaces/data/email-domain.js +0 -2
- package/dist_ts_interfaces/data/index.d.ts +0 -11
- package/dist_ts_interfaces/data/index.js +0 -12
- package/dist_ts_interfaces/data/remoteingress.d.ts +0 -60
- package/dist_ts_interfaces/data/remoteingress.js +0 -2
- package/dist_ts_interfaces/data/route-management.d.ts +0 -110
- package/dist_ts_interfaces/data/route-management.js +0 -2
- package/dist_ts_interfaces/data/stats.d.ts +0 -238
- package/dist_ts_interfaces/data/stats.js +0 -2
- package/dist_ts_interfaces/data/target-profile.d.ts +0 -28
- package/dist_ts_interfaces/data/target-profile.js +0 -2
- package/dist_ts_interfaces/data/vpn.d.ts +0 -61
- package/dist_ts_interfaces/data/vpn.js +0 -2
- package/dist_ts_interfaces/index.d.ts +0 -5
- package/dist_ts_interfaces/index.js +0 -8
- package/dist_ts_interfaces/plugins.d.ts +0 -2
- package/dist_ts_interfaces/plugins.js +0 -4
- package/dist_ts_interfaces/requests/acme-config.d.ts +0 -42
- package/dist_ts_interfaces/requests/acme-config.js +0 -2
- package/dist_ts_interfaces/requests/admin.d.ts +0 -31
- package/dist_ts_interfaces/requests/admin.js +0 -3
- package/dist_ts_interfaces/requests/api-tokens.d.ts +0 -79
- package/dist_ts_interfaces/requests/api-tokens.js +0 -2
- package/dist_ts_interfaces/requests/certificate.d.ts +0 -111
- package/dist_ts_interfaces/requests/certificate.js +0 -3
- package/dist_ts_interfaces/requests/combined.stats.d.ts +0 -28
- package/dist_ts_interfaces/requests/combined.stats.js +0 -2
- package/dist_ts_interfaces/requests/config.d.ts +0 -90
- package/dist_ts_interfaces/requests/config.js +0 -3
- package/dist_ts_interfaces/requests/dns-providers.d.ts +0 -117
- package/dist_ts_interfaces/requests/dns-providers.js +0 -2
- package/dist_ts_interfaces/requests/dns-records.d.ts +0 -89
- package/dist_ts_interfaces/requests/dns-records.js +0 -2
- package/dist_ts_interfaces/requests/domains.d.ts +0 -142
- package/dist_ts_interfaces/requests/domains.js +0 -2
- package/dist_ts_interfaces/requests/email-domains.d.ts +0 -142
- package/dist_ts_interfaces/requests/email-domains.js +0 -2
- package/dist_ts_interfaces/requests/email-ops.d.ts +0 -82
- package/dist_ts_interfaces/requests/email-ops.js +0 -3
- package/dist_ts_interfaces/requests/index.d.ts +0 -21
- package/dist_ts_interfaces/requests/index.js +0 -22
- package/dist_ts_interfaces/requests/logs.d.ts +0 -41
- package/dist_ts_interfaces/requests/logs.js +0 -4
- package/dist_ts_interfaces/requests/network-targets.d.ts +0 -102
- package/dist_ts_interfaces/requests/network-targets.js +0 -2
- package/dist_ts_interfaces/requests/radius.d.ts +0 -268
- package/dist_ts_interfaces/requests/radius.js +0 -3
- package/dist_ts_interfaces/requests/remoteingress.d.ts +0 -108
- package/dist_ts_interfaces/requests/remoteingress.js +0 -3
- package/dist_ts_interfaces/requests/route-management.d.ts +0 -85
- package/dist_ts_interfaces/requests/route-management.js +0 -2
- package/dist_ts_interfaces/requests/source-profiles.d.ts +0 -102
- package/dist_ts_interfaces/requests/source-profiles.js +0 -2
- package/dist_ts_interfaces/requests/stats.d.ts +0 -177
- package/dist_ts_interfaces/requests/stats.js +0 -4
- package/dist_ts_interfaces/requests/target-profiles.d.ts +0 -103
- package/dist_ts_interfaces/requests/target-profiles.js +0 -2
- package/dist_ts_interfaces/requests/users.d.ts +0 -19
- package/dist_ts_interfaces/requests/users.js +0 -3
- package/dist_ts_interfaces/requests/vpn.d.ts +0 -177
- package/dist_ts_interfaces/requests/vpn.js +0 -3
- package/dist_ts_migrations/index.d.ts +0 -28
- package/dist_ts_migrations/index.js +0 -82
- package/dist_ts_oci_container/index.d.ts +0 -8
- package/dist_ts_oci_container/index.js +0 -110
- package/dist_ts_oci_container/plugins.d.ts +0 -3
- package/dist_ts_oci_container/plugins.js +0 -4
- package/dist_ts_web/00_commitinfo_data.d.ts +0 -8
- package/dist_ts_web/00_commitinfo_data.js +0 -9
- package/dist_ts_web/appstate.d.ts +0 -478
- package/dist_ts_web/appstate.js +0 -1968
- package/dist_ts_web/elements/access/index.d.ts +0 -2
- package/dist_ts_web/elements/access/index.js +0 -3
- package/dist_ts_web/elements/access/ops-view-apitokens.d.ts +0 -13
- package/dist_ts_web/elements/access/ops-view-apitokens.js +0 -372
- package/dist_ts_web/elements/access/ops-view-users.d.ts +0 -11
- package/dist_ts_web/elements/access/ops-view-users.js +0 -190
- package/dist_ts_web/elements/domains/dns-provider-form.d.ts +0 -60
- package/dist_ts_web/elements/domains/dns-provider-form.js +0 -259
- package/dist_ts_web/elements/domains/index.d.ts +0 -5
- package/dist_ts_web/elements/domains/index.js +0 -6
- package/dist_ts_web/elements/domains/ops-view-certificates.d.ts +0 -25
- package/dist_ts_web/elements/domains/ops-view-certificates.js +0 -669
- package/dist_ts_web/elements/domains/ops-view-dns.d.ts +0 -17
- package/dist_ts_web/elements/domains/ops-view-dns.js +0 -305
- package/dist_ts_web/elements/domains/ops-view-domains.d.ts +0 -19
- package/dist_ts_web/elements/domains/ops-view-domains.js +0 -456
- package/dist_ts_web/elements/domains/ops-view-providers.d.ts +0 -21
- package/dist_ts_web/elements/domains/ops-view-providers.js +0 -330
- package/dist_ts_web/elements/email/index.d.ts +0 -3
- package/dist_ts_web/elements/email/index.js +0 -4
- package/dist_ts_web/elements/email/ops-view-email-domains.d.ts +0 -19
- package/dist_ts_web/elements/email/ops-view-email-domains.js +0 -410
- package/dist_ts_web/elements/email/ops-view-email-security.d.ts +0 -14
- package/dist_ts_web/elements/email/ops-view-email-security.js +0 -178
- package/dist_ts_web/elements/email/ops-view-emails.d.ts +0 -21
- package/dist_ts_web/elements/email/ops-view-emails.js +0 -165
- package/dist_ts_web/elements/index.d.ts +0 -9
- package/dist_ts_web/elements/index.js +0 -10
- package/dist_ts_web/elements/network/index.d.ts +0 -7
- package/dist_ts_web/elements/network/index.js +0 -8
- package/dist_ts_web/elements/network/ops-view-network-activity.d.ts +0 -60
- package/dist_ts_web/elements/network/ops-view-network-activity.js +0 -753
- package/dist_ts_web/elements/network/ops-view-networktargets.d.ts +0 -17
- package/dist_ts_web/elements/network/ops-view-networktargets.js +0 -255
- package/dist_ts_web/elements/network/ops-view-remoteingress.d.ts +0 -20
- package/dist_ts_web/elements/network/ops-view-remoteingress.js +0 -497
- package/dist_ts_web/elements/network/ops-view-routes.d.ts +0 -16
- package/dist_ts_web/elements/network/ops-view-routes.js +0 -674
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.d.ts +0 -17
- package/dist_ts_web/elements/network/ops-view-sourceprofiles.js +0 -278
- package/dist_ts_web/elements/network/ops-view-targetprofiles.d.ts +0 -21
- package/dist_ts_web/elements/network/ops-view-targetprofiles.js +0 -420
- package/dist_ts_web/elements/network/ops-view-vpn.d.ts +0 -31
- package/dist_ts_web/elements/network/ops-view-vpn.js +0 -873
- package/dist_ts_web/elements/ops-dashboard.d.ts +0 -31
- package/dist_ts_web/elements/ops-dashboard.js +0 -405
- package/dist_ts_web/elements/ops-view-logs.d.ts +0 -13
- package/dist_ts_web/elements/ops-view-logs.js +0 -159
- package/dist_ts_web/elements/overview/index.d.ts +0 -2
- package/dist_ts_web/elements/overview/index.js +0 -3
- package/dist_ts_web/elements/overview/ops-view-config.d.ts +0 -19
- package/dist_ts_web/elements/overview/ops-view-config.js +0 -339
- package/dist_ts_web/elements/overview/ops-view-overview.d.ts +0 -24
- package/dist_ts_web/elements/overview/ops-view-overview.js +0 -545
- package/dist_ts_web/elements/security/index.d.ts +0 -3
- package/dist_ts_web/elements/security/index.js +0 -4
- package/dist_ts_web/elements/security/ops-view-security-authentication.d.ts +0 -13
- package/dist_ts_web/elements/security/ops-view-security-authentication.js +0 -157
- package/dist_ts_web/elements/security/ops-view-security-blocked.d.ts +0 -15
- package/dist_ts_web/elements/security/ops-view-security-blocked.js +0 -153
- package/dist_ts_web/elements/security/ops-view-security-overview.d.ts +0 -16
- package/dist_ts_web/elements/security/ops-view-security-overview.js +0 -205
- package/dist_ts_web/elements/shared/css.d.ts +0 -1
- package/dist_ts_web/elements/shared/css.js +0 -10
- package/dist_ts_web/elements/shared/index.d.ts +0 -1
- package/dist_ts_web/elements/shared/index.js +0 -2
- package/dist_ts_web/index.d.ts +0 -1
- package/dist_ts_web/index.js +0 -10
- package/dist_ts_web/plugins.d.ts +0 -7
- package/dist_ts_web/plugins.js +0 -13
- package/dist_ts_web/router.d.ts +0 -21
- package/dist_ts_web/router.js +0 -151
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Read-only handler for OpsServer user accounts. Registers on adminRouter,
|
|
5
|
-
* so admin middleware enforces auth + role check before the handler runs.
|
|
6
|
-
* User data is owned by AdminHandler; this handler just exposes a safe
|
|
7
|
-
* projection of it via TypedRequest.
|
|
8
|
-
*/
|
|
9
|
-
export class UsersHandler {
|
|
10
|
-
opsServerRef;
|
|
11
|
-
constructor(opsServerRef) {
|
|
12
|
-
this.opsServerRef = opsServerRef;
|
|
13
|
-
this.registerHandlers();
|
|
14
|
-
}
|
|
15
|
-
registerHandlers() {
|
|
16
|
-
const router = this.opsServerRef.adminRouter;
|
|
17
|
-
// List users (admin-only, read-only)
|
|
18
|
-
router.addTypedHandler(new plugins.typedrequest.TypedHandler('listUsers', async (_dataArg) => {
|
|
19
|
-
const users = this.opsServerRef.adminHandler.listUsers();
|
|
20
|
-
return { users };
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL29wc3NlcnZlci9oYW5kbGVycy91c2Vycy5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ0g7SUFBcEIsWUFBb0IsWUFBdUI7UUFBdkIsaUJBQVksR0FBWixZQUFZLENBQVc7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUU3QyxxQ0FBcUM7UUFDckMsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsV0FBVyxFQUNYLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
-
export class VpnHandler {
|
|
4
|
-
opsServerRef;
|
|
5
|
-
constructor(opsServerRef) {
|
|
6
|
-
this.opsServerRef = opsServerRef;
|
|
7
|
-
this.registerHandlers();
|
|
8
|
-
}
|
|
9
|
-
registerHandlers() {
|
|
10
|
-
const viewRouter = this.opsServerRef.viewRouter;
|
|
11
|
-
const adminRouter = this.opsServerRef.adminRouter;
|
|
12
|
-
// ---- Read endpoints (viewRouter — valid identity required via middleware) ----
|
|
13
|
-
// Get all registered VPN clients
|
|
14
|
-
viewRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getVpnClients', async (dataArg, toolsArg) => {
|
|
15
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
16
|
-
if (!manager) {
|
|
17
|
-
return { clients: [] };
|
|
18
|
-
}
|
|
19
|
-
const clients = manager.listClients().map((c) => ({
|
|
20
|
-
clientId: c.clientId,
|
|
21
|
-
enabled: c.enabled,
|
|
22
|
-
targetProfileIds: c.targetProfileIds,
|
|
23
|
-
description: c.description,
|
|
24
|
-
assignedIp: c.assignedIp,
|
|
25
|
-
createdAt: c.createdAt,
|
|
26
|
-
updatedAt: c.updatedAt,
|
|
27
|
-
expiresAt: c.expiresAt,
|
|
28
|
-
destinationAllowList: c.destinationAllowList,
|
|
29
|
-
destinationBlockList: c.destinationBlockList,
|
|
30
|
-
useHostIp: c.useHostIp,
|
|
31
|
-
useDhcp: c.useDhcp,
|
|
32
|
-
staticIp: c.staticIp,
|
|
33
|
-
forceVlan: c.forceVlan,
|
|
34
|
-
vlanId: c.vlanId,
|
|
35
|
-
}));
|
|
36
|
-
return { clients };
|
|
37
|
-
}));
|
|
38
|
-
// Get VPN server status
|
|
39
|
-
viewRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getVpnStatus', async (dataArg, toolsArg) => {
|
|
40
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
41
|
-
const vpnConfig = this.opsServerRef.dcRouterRef.options.vpnConfig;
|
|
42
|
-
if (!manager) {
|
|
43
|
-
return {
|
|
44
|
-
status: {
|
|
45
|
-
running: false,
|
|
46
|
-
subnet: vpnConfig?.subnet || '10.8.0.0/24',
|
|
47
|
-
wgListenPort: vpnConfig?.wgListenPort ?? 51820,
|
|
48
|
-
serverPublicKeys: null,
|
|
49
|
-
registeredClients: 0,
|
|
50
|
-
connectedClients: 0,
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
const connected = await manager.getConnectedClients();
|
|
55
|
-
return {
|
|
56
|
-
status: {
|
|
57
|
-
running: manager.running,
|
|
58
|
-
subnet: manager.getSubnet(),
|
|
59
|
-
wgListenPort: vpnConfig?.wgListenPort ?? 51820,
|
|
60
|
-
serverPublicKeys: manager.getServerPublicKeys(),
|
|
61
|
-
registeredClients: manager.listClients().length,
|
|
62
|
-
connectedClients: connected.length,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
}));
|
|
66
|
-
// Get currently connected VPN clients
|
|
67
|
-
viewRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getVpnConnectedClients', async (dataArg, toolsArg) => {
|
|
68
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
69
|
-
if (!manager) {
|
|
70
|
-
return { connectedClients: [] };
|
|
71
|
-
}
|
|
72
|
-
const connected = await manager.getConnectedClients();
|
|
73
|
-
return {
|
|
74
|
-
connectedClients: connected.map((c) => ({
|
|
75
|
-
clientId: c.registeredClientId || c.clientId,
|
|
76
|
-
assignedIp: c.assignedIp,
|
|
77
|
-
connectedSince: c.connectedSince,
|
|
78
|
-
bytesSent: c.bytesSent,
|
|
79
|
-
bytesReceived: c.bytesReceived,
|
|
80
|
-
transport: c.transportType,
|
|
81
|
-
})),
|
|
82
|
-
};
|
|
83
|
-
}));
|
|
84
|
-
// ---- Write endpoints (adminRouter — admin identity required via middleware) ----
|
|
85
|
-
// Create a new VPN client
|
|
86
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('createVpnClient', async (dataArg, toolsArg) => {
|
|
87
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
88
|
-
if (!manager) {
|
|
89
|
-
return { success: false, message: 'VPN not configured' };
|
|
90
|
-
}
|
|
91
|
-
try {
|
|
92
|
-
const bundle = await manager.createClient({
|
|
93
|
-
clientId: dataArg.clientId,
|
|
94
|
-
targetProfileIds: dataArg.targetProfileIds,
|
|
95
|
-
description: dataArg.description,
|
|
96
|
-
destinationAllowList: dataArg.destinationAllowList,
|
|
97
|
-
destinationBlockList: dataArg.destinationBlockList,
|
|
98
|
-
useHostIp: dataArg.useHostIp,
|
|
99
|
-
useDhcp: dataArg.useDhcp,
|
|
100
|
-
staticIp: dataArg.staticIp,
|
|
101
|
-
forceVlan: dataArg.forceVlan,
|
|
102
|
-
vlanId: dataArg.vlanId,
|
|
103
|
-
});
|
|
104
|
-
// Retrieve the persisted doc to get dcrouter-level fields
|
|
105
|
-
const persistedClient = manager.listClients().find((c) => c.clientId === bundle.entry.clientId);
|
|
106
|
-
return {
|
|
107
|
-
success: true,
|
|
108
|
-
client: {
|
|
109
|
-
clientId: bundle.entry.clientId,
|
|
110
|
-
enabled: bundle.entry.enabled ?? true,
|
|
111
|
-
targetProfileIds: persistedClient?.targetProfileIds,
|
|
112
|
-
description: bundle.entry.description,
|
|
113
|
-
assignedIp: bundle.entry.assignedIp,
|
|
114
|
-
createdAt: Date.now(),
|
|
115
|
-
updatedAt: Date.now(),
|
|
116
|
-
expiresAt: bundle.entry.expiresAt,
|
|
117
|
-
destinationAllowList: persistedClient?.destinationAllowList,
|
|
118
|
-
destinationBlockList: persistedClient?.destinationBlockList,
|
|
119
|
-
useHostIp: persistedClient?.useHostIp,
|
|
120
|
-
useDhcp: persistedClient?.useDhcp,
|
|
121
|
-
staticIp: persistedClient?.staticIp,
|
|
122
|
-
forceVlan: persistedClient?.forceVlan,
|
|
123
|
-
vlanId: persistedClient?.vlanId,
|
|
124
|
-
},
|
|
125
|
-
wireguardConfig: bundle.wireguardConfig,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
return { success: false, message: err.message };
|
|
130
|
-
}
|
|
131
|
-
}));
|
|
132
|
-
// Update a VPN client's metadata
|
|
133
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('updateVpnClient', async (dataArg, toolsArg) => {
|
|
134
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
135
|
-
if (!manager) {
|
|
136
|
-
return { success: false, message: 'VPN not configured' };
|
|
137
|
-
}
|
|
138
|
-
try {
|
|
139
|
-
await manager.updateClient(dataArg.clientId, {
|
|
140
|
-
description: dataArg.description,
|
|
141
|
-
targetProfileIds: dataArg.targetProfileIds,
|
|
142
|
-
destinationAllowList: dataArg.destinationAllowList,
|
|
143
|
-
destinationBlockList: dataArg.destinationBlockList,
|
|
144
|
-
useHostIp: dataArg.useHostIp,
|
|
145
|
-
useDhcp: dataArg.useDhcp,
|
|
146
|
-
staticIp: dataArg.staticIp,
|
|
147
|
-
forceVlan: dataArg.forceVlan,
|
|
148
|
-
vlanId: dataArg.vlanId,
|
|
149
|
-
});
|
|
150
|
-
return { success: true };
|
|
151
|
-
}
|
|
152
|
-
catch (err) {
|
|
153
|
-
return { success: false, message: err.message };
|
|
154
|
-
}
|
|
155
|
-
}));
|
|
156
|
-
// Delete a VPN client
|
|
157
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('deleteVpnClient', async (dataArg, toolsArg) => {
|
|
158
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
159
|
-
if (!manager) {
|
|
160
|
-
return { success: false, message: 'VPN not configured' };
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
await manager.removeClient(dataArg.clientId);
|
|
164
|
-
return { success: true };
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
return { success: false, message: err.message };
|
|
168
|
-
}
|
|
169
|
-
}));
|
|
170
|
-
// Enable a VPN client
|
|
171
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('enableVpnClient', async (dataArg, toolsArg) => {
|
|
172
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
173
|
-
if (!manager) {
|
|
174
|
-
return { success: false, message: 'VPN not configured' };
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
await manager.enableClient(dataArg.clientId);
|
|
178
|
-
return { success: true };
|
|
179
|
-
}
|
|
180
|
-
catch (err) {
|
|
181
|
-
return { success: false, message: err.message };
|
|
182
|
-
}
|
|
183
|
-
}));
|
|
184
|
-
// Disable a VPN client
|
|
185
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('disableVpnClient', async (dataArg, toolsArg) => {
|
|
186
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
187
|
-
if (!manager) {
|
|
188
|
-
return { success: false, message: 'VPN not configured' };
|
|
189
|
-
}
|
|
190
|
-
try {
|
|
191
|
-
await manager.disableClient(dataArg.clientId);
|
|
192
|
-
return { success: true };
|
|
193
|
-
}
|
|
194
|
-
catch (err) {
|
|
195
|
-
return { success: false, message: err.message };
|
|
196
|
-
}
|
|
197
|
-
}));
|
|
198
|
-
// Rotate a VPN client's keys
|
|
199
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('rotateVpnClientKey', async (dataArg, toolsArg) => {
|
|
200
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
201
|
-
if (!manager) {
|
|
202
|
-
return { success: false, message: 'VPN not configured' };
|
|
203
|
-
}
|
|
204
|
-
try {
|
|
205
|
-
const bundle = await manager.rotateClientKey(dataArg.clientId);
|
|
206
|
-
return {
|
|
207
|
-
success: true,
|
|
208
|
-
wireguardConfig: bundle.wireguardConfig,
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
return { success: false, message: err.message };
|
|
213
|
-
}
|
|
214
|
-
}));
|
|
215
|
-
// Export a VPN client config
|
|
216
|
-
adminRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('exportVpnClientConfig', async (dataArg, toolsArg) => {
|
|
217
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
218
|
-
if (!manager) {
|
|
219
|
-
return { success: false, message: 'VPN not configured' };
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
const config = await manager.exportClientConfig(dataArg.clientId, dataArg.format);
|
|
223
|
-
return { success: true, config };
|
|
224
|
-
}
|
|
225
|
-
catch (err) {
|
|
226
|
-
return { success: false, message: err.message };
|
|
227
|
-
}
|
|
228
|
-
}));
|
|
229
|
-
// Get telemetry for a specific VPN client
|
|
230
|
-
viewRouter.addTypedHandler(new plugins.typedrequest.TypedHandler('getVpnClientTelemetry', async (dataArg, toolsArg) => {
|
|
231
|
-
const manager = this.opsServerRef.dcRouterRef.vpnManager;
|
|
232
|
-
if (!manager) {
|
|
233
|
-
return { success: false, message: 'VPN not configured' };
|
|
234
|
-
}
|
|
235
|
-
try {
|
|
236
|
-
const telemetry = await manager.getClientTelemetry(dataArg.clientId);
|
|
237
|
-
if (!telemetry) {
|
|
238
|
-
return { success: false, message: 'Client not found or not connected' };
|
|
239
|
-
}
|
|
240
|
-
return {
|
|
241
|
-
success: true,
|
|
242
|
-
telemetry: {
|
|
243
|
-
clientId: telemetry.clientId,
|
|
244
|
-
assignedIp: telemetry.assignedIp,
|
|
245
|
-
bytesSent: telemetry.bytesSent,
|
|
246
|
-
bytesReceived: telemetry.bytesReceived,
|
|
247
|
-
packetsDropped: telemetry.packetsDropped,
|
|
248
|
-
bytesDropped: telemetry.bytesDropped,
|
|
249
|
-
lastKeepaliveAt: telemetry.lastKeepaliveAt,
|
|
250
|
-
keepalivesReceived: telemetry.keepalivesReceived,
|
|
251
|
-
rateLimitBytesPerSec: telemetry.rateLimitBytesPerSec,
|
|
252
|
-
burstBytes: telemetry.burstBytes,
|
|
253
|
-
},
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
catch (err) {
|
|
257
|
-
return { success: false, message: err.message };
|
|
258
|
-
}
|
|
259
|
-
}));
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBuLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9vcHNzZXJ2ZXIvaGFuZGxlcnMvdnBuLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlELE1BQU0sT0FBTyxVQUFVO0lBQ0Q7SUFBcEIsWUFBb0IsWUFBdUI7UUFBdkIsaUJBQVksR0FBWixZQUFZLENBQVc7UUFDekMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztRQUVsRCxpRkFBaUY7UUFFakYsaUNBQWlDO1FBQ2pDLFVBQVUsQ0FBQyxlQUFlLENBQ3hCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQ25DLGVBQWUsRUFDZixLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEQsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxn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
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { AdminHandler } from '../handlers/admin.handler.js';
|
|
3
|
-
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Helper function to use identity guards in handlers
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* // In a handler:
|
|
9
|
-
* await passGuards(toolsArg, this.opsServerRef.adminHandler.validIdentityGuard, dataArg);
|
|
10
|
-
*/
|
|
11
|
-
export declare function passGuards<T extends {
|
|
12
|
-
identity?: any;
|
|
13
|
-
}>(toolsArg: any, guard: plugins.smartguard.Guard<T>, dataArg: T): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Helper to check admin identity in handlers and middleware.
|
|
16
|
-
* Accepts both optional and required identity for flexibility.
|
|
17
|
-
*/
|
|
18
|
-
export declare function requireAdminIdentity(adminHandler: AdminHandler, dataArg: {
|
|
19
|
-
identity?: interfaces.data.IIdentity;
|
|
20
|
-
}): Promise<void>;
|
|
21
|
-
/**
|
|
22
|
-
* Helper to check valid identity in handlers and middleware.
|
|
23
|
-
* Accepts both optional and required identity for flexibility.
|
|
24
|
-
*/
|
|
25
|
-
export declare function requireValidIdentity(adminHandler: AdminHandler, dataArg: {
|
|
26
|
-
identity?: interfaces.data.IIdentity;
|
|
27
|
-
}): Promise<void>;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import * as interfaces from '../../../dist_ts_interfaces/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Helper function to use identity guards in handlers
|
|
5
|
-
*
|
|
6
|
-
* @example
|
|
7
|
-
* // In a handler:
|
|
8
|
-
* await passGuards(toolsArg, this.opsServerRef.adminHandler.validIdentityGuard, dataArg);
|
|
9
|
-
*/
|
|
10
|
-
export async function passGuards(toolsArg, guard, dataArg) {
|
|
11
|
-
const result = await guard.exec(dataArg);
|
|
12
|
-
if (!result) {
|
|
13
|
-
const failedHint = await guard.getFailedHint(dataArg);
|
|
14
|
-
throw new plugins.typedrequest.TypedResponseError(failedHint || 'Guard check failed');
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Helper to check admin identity in handlers and middleware.
|
|
19
|
-
* Accepts both optional and required identity for flexibility.
|
|
20
|
-
*/
|
|
21
|
-
export async function requireAdminIdentity(adminHandler, dataArg) {
|
|
22
|
-
if (!dataArg.identity) {
|
|
23
|
-
throw new plugins.typedrequest.TypedResponseError('No identity provided');
|
|
24
|
-
}
|
|
25
|
-
const passed = await adminHandler.adminIdentityGuard.exec({ identity: dataArg.identity });
|
|
26
|
-
if (!passed) {
|
|
27
|
-
throw new plugins.typedrequest.TypedResponseError('Admin access required');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Helper to check valid identity in handlers and middleware.
|
|
32
|
-
* Accepts both optional and required identity for flexibility.
|
|
33
|
-
*/
|
|
34
|
-
export async function requireValidIdentity(adminHandler, dataArg) {
|
|
35
|
-
if (!dataArg.identity) {
|
|
36
|
-
throw new plugins.typedrequest.TypedResponseError('No identity provided');
|
|
37
|
-
}
|
|
38
|
-
const passed = await adminHandler.validIdentityGuard.exec({ identity: dataArg.identity });
|
|
39
|
-
if (!passed) {
|
|
40
|
-
throw new plugins.typedrequest.TypedResponseError('Valid identity required');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvb3Bzc2VydmVyL2hlbHBlcnMvZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FDOUIsUUFBYSxFQUNiLEtBQWtDLEVBQ2xDLE9BQVU7SUFFVixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsWUFBMEIsRUFDMUIsT0FBaUQ7SUFFakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLFlBQTBCLEVBQzFCLE9BQWlEO0lBRWpELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0UsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './classes.opsserver.js';
|
package/dist_ts/paths.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export declare const packageDir: string;
|
|
2
|
-
export declare const distServe: string;
|
|
3
|
-
export declare const dcrouterHomeDir: string;
|
|
4
|
-
export declare const dataDir: string;
|
|
5
|
-
export declare const defaultTsmDbPath: string;
|
|
6
|
-
export declare const dnsRecordsDir: string;
|
|
7
|
-
/**
|
|
8
|
-
* Resolve all data paths from a given baseDir.
|
|
9
|
-
* When no baseDir is provided, falls back to ~/.serve.zone/dcrouter.
|
|
10
|
-
* Specific overrides (e.g. DATA_DIR env) take precedence.
|
|
11
|
-
*/
|
|
12
|
-
export declare function resolvePaths(baseDir?: string): {
|
|
13
|
-
dcrouterHomeDir: string;
|
|
14
|
-
dataDir: string;
|
|
15
|
-
defaultTsmDbPath: string;
|
|
16
|
-
dnsRecordsDir: string;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Ensure only the data directories that are actually used exist.
|
|
20
|
-
*/
|
|
21
|
-
export declare function ensureDataDirectories(resolvedPaths: ReturnType<typeof resolvePaths>): void;
|
|
22
|
-
/**
|
|
23
|
-
* Legacy wrapper — delegates to ensureDataDirectories with module-level defaults.
|
|
24
|
-
*/
|
|
25
|
-
export declare function ensureDirectories(): void;
|
package/dist_ts/paths.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as plugins from './plugins.js';
|
|
2
|
-
// Code/asset paths (not affected by baseDir)
|
|
3
|
-
export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
|
|
4
|
-
export const distServe = plugins.path.join(packageDir, './dist_serve');
|
|
5
|
-
// Default base for all dcrouter data (always user-writable)
|
|
6
|
-
export const dcrouterHomeDir = plugins.path.join(plugins.os.homedir(), '.serve.zone', 'dcrouter');
|
|
7
|
-
// Configure data directory with environment variable or default to ~/.serve.zone/dcrouter/data
|
|
8
|
-
const DEFAULT_DATA_PATH = plugins.path.join(dcrouterHomeDir, 'data');
|
|
9
|
-
export const dataDir = process.env.DATA_DIR
|
|
10
|
-
? process.env.DATA_DIR
|
|
11
|
-
: DEFAULT_DATA_PATH;
|
|
12
|
-
// Default TsmDB path for CacheDb
|
|
13
|
-
export const defaultTsmDbPath = plugins.path.join(dcrouterHomeDir, 'tsmdb');
|
|
14
|
-
// DNS records directory (only surviving MTA directory reference)
|
|
15
|
-
export const dnsRecordsDir = plugins.path.join(dataDir, 'dns');
|
|
16
|
-
/**
|
|
17
|
-
* Resolve all data paths from a given baseDir.
|
|
18
|
-
* When no baseDir is provided, falls back to ~/.serve.zone/dcrouter.
|
|
19
|
-
* Specific overrides (e.g. DATA_DIR env) take precedence.
|
|
20
|
-
*/
|
|
21
|
-
export function resolvePaths(baseDir) {
|
|
22
|
-
const root = baseDir ?? plugins.path.join(plugins.os.homedir(), '.serve.zone', 'dcrouter');
|
|
23
|
-
const resolvedDataDir = process.env.DATA_DIR ?? plugins.path.join(root, 'data');
|
|
24
|
-
return {
|
|
25
|
-
dcrouterHomeDir: root,
|
|
26
|
-
dataDir: resolvedDataDir,
|
|
27
|
-
defaultTsmDbPath: plugins.path.join(root, 'tsmdb'),
|
|
28
|
-
dnsRecordsDir: plugins.path.join(resolvedDataDir, 'dns'),
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Ensure only the data directories that are actually used exist.
|
|
33
|
-
*/
|
|
34
|
-
export function ensureDataDirectories(resolvedPaths) {
|
|
35
|
-
plugins.fsUtils.ensureDirSync(resolvedPaths.dataDir);
|
|
36
|
-
plugins.fsUtils.ensureDirSync(resolvedPaths.dnsRecordsDir);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Legacy wrapper — delegates to ensureDataDirectories with module-level defaults.
|
|
40
|
-
*/
|
|
41
|
-
export function ensureDirectories() {
|
|
42
|
-
ensureDataDirectories(resolvePaths());
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4Qyw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN6QyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUMvRCxLQUFLLENBQ04sQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFdkUsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVsRywrRkFBK0Y7QUFDL0YsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtJQUN6QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO0lBQ3RCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztBQUV0QixpQ0FBaUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTVFLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRS9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWdCO0lBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsT0FBTztRQUNMLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7S0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxhQUE4QztJQUNsRixPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDIn0=
|
package/dist_ts/plugins.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import * as dns from 'dns';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as crypto from 'crypto';
|
|
4
|
-
import * as http from 'http';
|
|
5
|
-
import * as net from 'net';
|
|
6
|
-
import * as os from 'os';
|
|
7
|
-
import * as path from 'path';
|
|
8
|
-
import * as tls from 'tls';
|
|
9
|
-
import * as util from 'util';
|
|
10
|
-
export { dns, fs, crypto, http, net, os, path, tls, util, };
|
|
11
|
-
import * as servezoneInterfaces from '@serve.zone/interfaces';
|
|
12
|
-
import * as remoteingress from '@serve.zone/remoteingress';
|
|
13
|
-
export { servezoneInterfaces, remoteingress, };
|
|
14
|
-
import * as typedrequest from '@api.global/typedrequest';
|
|
15
|
-
import * as typedserver from '@api.global/typedserver';
|
|
16
|
-
import * as typedsocket from '@api.global/typedsocket';
|
|
17
|
-
export { typedrequest, typedserver, typedsocket, };
|
|
18
|
-
import * as projectinfo from '@push.rocks/projectinfo';
|
|
19
|
-
import * as qenv from '@push.rocks/qenv';
|
|
20
|
-
import * as smartacme from '@push.rocks/smartacme';
|
|
21
|
-
import * as smartdata from '@push.rocks/smartdata';
|
|
22
|
-
import * as smartdns from '@push.rocks/smartdns';
|
|
23
|
-
import * as smartfs from '@push.rocks/smartfs';
|
|
24
|
-
import * as smartguard from '@push.rocks/smartguard';
|
|
25
|
-
import * as smartjwt from '@push.rocks/smartjwt';
|
|
26
|
-
import * as smartlog from '@push.rocks/smartlog';
|
|
27
|
-
import * as smartmetrics from '@push.rocks/smartmetrics';
|
|
28
|
-
import * as smartmta from '@push.rocks/smartmta';
|
|
29
|
-
import * as smartdb from '@push.rocks/smartdb';
|
|
30
|
-
import * as smartnetwork from '@push.rocks/smartnetwork';
|
|
31
|
-
import * as smartpath from '@push.rocks/smartpath';
|
|
32
|
-
import * as smartproxy from '@push.rocks/smartproxy';
|
|
33
|
-
import * as smartpromise from '@push.rocks/smartpromise';
|
|
34
|
-
import * as smartvpn from '@push.rocks/smartvpn';
|
|
35
|
-
import * as smartradius from '@push.rocks/smartradius';
|
|
36
|
-
import * as smartrequest from '@push.rocks/smartrequest';
|
|
37
|
-
import * as smartrx from '@push.rocks/smartrx';
|
|
38
|
-
import * as smartunique from '@push.rocks/smartunique';
|
|
39
|
-
import * as taskbuffer from '@push.rocks/taskbuffer';
|
|
40
|
-
export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfs, smartguard, smartjwt, smartlog, smartmetrics, smartdb, smartmta, smartnetwork, smartpath, smartproxy, smartpromise, smartradius, smartrequest, smartrx, smartunique, smartvpn, taskbuffer };
|
|
41
|
-
export type TLogLevel = 'error' | 'warn' | 'info' | 'success' | 'debug';
|
|
42
|
-
import * as cloudflare from '@apiclient.xyz/cloudflare';
|
|
43
|
-
export { cloudflare, };
|
|
44
|
-
import * as tsclass from '@tsclass/tsclass';
|
|
45
|
-
export { tsclass, };
|
|
46
|
-
import * as uuid from 'uuid';
|
|
47
|
-
export { uuid, };
|
|
48
|
-
export declare const fsUtils: {
|
|
49
|
-
/**
|
|
50
|
-
* Ensure a directory exists, creating it recursively if needed (sync)
|
|
51
|
-
*/
|
|
52
|
-
ensureDirSync: (dirPath: string) => void;
|
|
53
|
-
/**
|
|
54
|
-
* Ensure a directory exists, creating it recursively if needed (async)
|
|
55
|
-
*/
|
|
56
|
-
ensureDir: (dirPath: string) => Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Write JSON content to a file synchronously
|
|
59
|
-
*/
|
|
60
|
-
toFsSync: (content: any, filePath: string) => void;
|
|
61
|
-
/**
|
|
62
|
-
* Write JSON content to a file asynchronously
|
|
63
|
-
*/
|
|
64
|
-
toFs: (content: any, filePath: string) => Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Check if a file or directory exists
|
|
67
|
-
*/
|
|
68
|
-
fileExistsSync: (filePath: string) => boolean;
|
|
69
|
-
/**
|
|
70
|
-
* Check if a file or directory exists (async)
|
|
71
|
-
*/
|
|
72
|
-
fileExists: (filePath: string) => Promise<boolean>;
|
|
73
|
-
/**
|
|
74
|
-
* Read a JSON file synchronously
|
|
75
|
-
*/
|
|
76
|
-
toObjectSync: <T = any>(filePath: string) => T;
|
|
77
|
-
/**
|
|
78
|
-
* Read a JSON file asynchronously
|
|
79
|
-
*/
|
|
80
|
-
toObject: <T = any>(filePath: string) => Promise<T>;
|
|
81
|
-
};
|