s3db.js 13.6.0 → 14.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +139 -43
- package/dist/s3db.cjs +72425 -38970
- package/dist/s3db.cjs.map +1 -1
- package/dist/s3db.es.js +72177 -38764
- package/dist/s3db.es.js.map +1 -1
- package/mcp/lib/base-handler.js +157 -0
- package/mcp/lib/handlers/connection-handler.js +280 -0
- package/mcp/lib/handlers/query-handler.js +533 -0
- package/mcp/lib/handlers/resource-handler.js +428 -0
- package/mcp/lib/tool-registry.js +336 -0
- package/mcp/lib/tools/connection-tools.js +161 -0
- package/mcp/lib/tools/query-tools.js +267 -0
- package/mcp/lib/tools/resource-tools.js +404 -0
- package/package.json +94 -49
- package/src/clients/memory-client.class.js +346 -191
- package/src/clients/memory-storage.class.js +300 -84
- package/src/clients/s3-client.class.js +7 -6
- package/src/concerns/geo-encoding.js +19 -2
- package/src/concerns/ip.js +59 -9
- package/src/concerns/money.js +8 -1
- package/src/concerns/password-hashing.js +49 -8
- package/src/concerns/plugin-storage.js +186 -18
- package/src/concerns/storage-drivers/filesystem-driver.js +284 -0
- package/src/database.class.js +139 -29
- package/src/errors.js +332 -42
- package/src/plugins/api/auth/oidc-auth.js +66 -17
- package/src/plugins/api/auth/strategies/base-strategy.class.js +74 -0
- package/src/plugins/api/auth/strategies/factory.class.js +63 -0
- package/src/plugins/api/auth/strategies/global-strategy.class.js +44 -0
- package/src/plugins/api/auth/strategies/path-based-strategy.class.js +83 -0
- package/src/plugins/api/auth/strategies/path-rules-strategy.class.js +118 -0
- package/src/plugins/api/concerns/failban-manager.js +106 -57
- package/src/plugins/api/concerns/opengraph-helper.js +116 -0
- package/src/plugins/api/concerns/route-context.js +601 -0
- package/src/plugins/api/concerns/state-machine.js +288 -0
- package/src/plugins/api/index.js +180 -41
- package/src/plugins/api/routes/auth-routes.js +198 -30
- package/src/plugins/api/routes/resource-routes.js +19 -4
- package/src/plugins/api/server/health-manager.class.js +163 -0
- package/src/plugins/api/server/middleware-chain.class.js +310 -0
- package/src/plugins/api/server/router.class.js +472 -0
- package/src/plugins/api/server.js +280 -1303
- package/src/plugins/api/utils/custom-routes.js +17 -5
- package/src/plugins/api/utils/guards.js +76 -17
- package/src/plugins/api/utils/openapi-generator-cached.class.js +133 -0
- package/src/plugins/api/utils/openapi-generator.js +7 -6
- package/src/plugins/api/utils/template-engine.js +77 -3
- package/src/plugins/audit.plugin.js +30 -8
- package/src/plugins/backup.plugin.js +110 -14
- package/src/plugins/cache/cache.class.js +22 -5
- package/src/plugins/cache/filesystem-cache.class.js +116 -19
- package/src/plugins/cache/memory-cache.class.js +211 -57
- package/src/plugins/cache/multi-tier-cache.class.js +371 -0
- package/src/plugins/cache/partition-aware-filesystem-cache.class.js +168 -47
- package/src/plugins/cache/redis-cache.class.js +552 -0
- package/src/plugins/cache/s3-cache.class.js +17 -8
- package/src/plugins/cache.plugin.js +176 -61
- package/src/plugins/cloud-inventory/drivers/alibaba-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/aws-driver.js +60 -29
- package/src/plugins/cloud-inventory/drivers/azure-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/base-driver.js +16 -2
- package/src/plugins/cloud-inventory/drivers/cloudflare-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/digitalocean-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/hetzner-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/linode-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/mongodb-atlas-driver.js +8 -1
- package/src/plugins/cloud-inventory/drivers/vultr-driver.js +8 -1
- package/src/plugins/cloud-inventory/index.js +29 -8
- package/src/plugins/cloud-inventory/registry.js +64 -42
- package/src/plugins/cloud-inventory.plugin.js +240 -138
- package/src/plugins/concerns/plugin-dependencies.js +54 -0
- package/src/plugins/concerns/resource-names.js +100 -0
- package/src/plugins/consumers/index.js +10 -2
- package/src/plugins/consumers/sqs-consumer.js +12 -2
- package/src/plugins/cookie-farm-suite.plugin.js +278 -0
- package/src/plugins/cookie-farm.errors.js +73 -0
- package/src/plugins/cookie-farm.plugin.js +869 -0
- package/src/plugins/costs.plugin.js +7 -1
- package/src/plugins/eventual-consistency/analytics.js +94 -19
- package/src/plugins/eventual-consistency/config.js +15 -7
- package/src/plugins/eventual-consistency/consolidation.js +29 -11
- package/src/plugins/eventual-consistency/garbage-collection.js +3 -1
- package/src/plugins/eventual-consistency/helpers.js +39 -14
- package/src/plugins/eventual-consistency/install.js +21 -2
- package/src/plugins/eventual-consistency/utils.js +32 -10
- package/src/plugins/fulltext.plugin.js +38 -11
- package/src/plugins/geo.plugin.js +61 -9
- package/src/plugins/identity/concerns/config.js +61 -0
- package/src/plugins/identity/concerns/mfa-manager.js +15 -2
- package/src/plugins/identity/concerns/rate-limit.js +124 -0
- package/src/plugins/identity/concerns/resource-schemas.js +9 -1
- package/src/plugins/identity/concerns/token-generator.js +29 -4
- package/src/plugins/identity/drivers/auth-driver.interface.js +76 -0
- package/src/plugins/identity/drivers/client-credentials-driver.js +127 -0
- package/src/plugins/identity/drivers/index.js +18 -0
- package/src/plugins/identity/drivers/password-driver.js +122 -0
- package/src/plugins/identity/email-service.js +17 -2
- package/src/plugins/identity/index.js +413 -69
- package/src/plugins/identity/oauth2-server.js +413 -30
- package/src/plugins/identity/oidc-discovery.js +16 -8
- package/src/plugins/identity/rsa-keys.js +115 -35
- package/src/plugins/identity/server.js +166 -45
- package/src/plugins/identity/session-manager.js +53 -7
- package/src/plugins/identity/ui/pages/mfa-verification.js +17 -15
- package/src/plugins/identity/ui/routes.js +363 -255
- package/src/plugins/importer/index.js +153 -20
- package/src/plugins/index.js +9 -2
- package/src/plugins/kubernetes-inventory/index.js +6 -0
- package/src/plugins/kubernetes-inventory/k8s-driver.js +867 -0
- package/src/plugins/kubernetes-inventory/resource-types.js +274 -0
- package/src/plugins/kubernetes-inventory.plugin.js +980 -0
- package/src/plugins/metrics.plugin.js +64 -16
- package/src/plugins/ml/base-model.class.js +25 -15
- package/src/plugins/ml/regression-model.class.js +1 -1
- package/src/plugins/ml.errors.js +57 -25
- package/src/plugins/ml.plugin.js +28 -4
- package/src/plugins/namespace.js +210 -0
- package/src/plugins/plugin.class.js +180 -8
- package/src/plugins/puppeteer/console-monitor.js +729 -0
- package/src/plugins/puppeteer/cookie-manager.js +492 -0
- package/src/plugins/puppeteer/network-monitor.js +816 -0
- package/src/plugins/puppeteer/performance-manager.js +746 -0
- package/src/plugins/puppeteer/proxy-manager.js +478 -0
- package/src/plugins/puppeteer/stealth-manager.js +556 -0
- package/src/plugins/puppeteer.errors.js +81 -0
- package/src/plugins/puppeteer.plugin.js +1327 -0
- package/src/plugins/queue-consumer.plugin.js +69 -14
- package/src/plugins/recon/behaviors/uptime-behavior.js +691 -0
- package/src/plugins/recon/concerns/command-runner.js +148 -0
- package/src/plugins/recon/concerns/diff-detector.js +372 -0
- package/src/plugins/recon/concerns/fingerprint-builder.js +307 -0
- package/src/plugins/recon/concerns/process-manager.js +338 -0
- package/src/plugins/recon/concerns/report-generator.js +478 -0
- package/src/plugins/recon/concerns/security-analyzer.js +571 -0
- package/src/plugins/recon/concerns/target-normalizer.js +68 -0
- package/src/plugins/recon/config/defaults.js +321 -0
- package/src/plugins/recon/config/resources.js +370 -0
- package/src/plugins/recon/index.js +778 -0
- package/src/plugins/recon/managers/dependency-manager.js +174 -0
- package/src/plugins/recon/managers/scheduler-manager.js +179 -0
- package/src/plugins/recon/managers/storage-manager.js +745 -0
- package/src/plugins/recon/managers/target-manager.js +274 -0
- package/src/plugins/recon/stages/asn-stage.js +314 -0
- package/src/plugins/recon/stages/certificate-stage.js +84 -0
- package/src/plugins/recon/stages/dns-stage.js +107 -0
- package/src/plugins/recon/stages/dnsdumpster-stage.js +362 -0
- package/src/plugins/recon/stages/fingerprint-stage.js +71 -0
- package/src/plugins/recon/stages/google-dorks-stage.js +440 -0
- package/src/plugins/recon/stages/http-stage.js +89 -0
- package/src/plugins/recon/stages/latency-stage.js +148 -0
- package/src/plugins/recon/stages/massdns-stage.js +302 -0
- package/src/plugins/recon/stages/osint-stage.js +1373 -0
- package/src/plugins/recon/stages/ports-stage.js +169 -0
- package/src/plugins/recon/stages/screenshot-stage.js +94 -0
- package/src/plugins/recon/stages/secrets-stage.js +514 -0
- package/src/plugins/recon/stages/subdomains-stage.js +295 -0
- package/src/plugins/recon/stages/tls-audit-stage.js +78 -0
- package/src/plugins/recon/stages/vulnerability-stage.js +78 -0
- package/src/plugins/recon/stages/web-discovery-stage.js +113 -0
- package/src/plugins/recon/stages/whois-stage.js +349 -0
- package/src/plugins/recon.plugin.js +75 -0
- package/src/plugins/recon.plugin.js.backup +2635 -0
- package/src/plugins/relation.errors.js +87 -14
- package/src/plugins/replicator.plugin.js +514 -137
- package/src/plugins/replicators/base-replicator.class.js +89 -1
- package/src/plugins/replicators/bigquery-replicator.class.js +66 -22
- package/src/plugins/replicators/dynamodb-replicator.class.js +22 -15
- package/src/plugins/replicators/mongodb-replicator.class.js +22 -15
- package/src/plugins/replicators/mysql-replicator.class.js +52 -17
- package/src/plugins/replicators/planetscale-replicator.class.js +30 -4
- package/src/plugins/replicators/postgres-replicator.class.js +62 -27
- package/src/plugins/replicators/s3db-replicator.class.js +25 -18
- package/src/plugins/replicators/schema-sync.helper.js +3 -3
- package/src/plugins/replicators/sqs-replicator.class.js +8 -2
- package/src/plugins/replicators/turso-replicator.class.js +23 -3
- package/src/plugins/replicators/webhook-replicator.class.js +42 -4
- package/src/plugins/s3-queue.plugin.js +464 -65
- package/src/plugins/scheduler.plugin.js +20 -6
- package/src/plugins/state-machine.plugin.js +40 -9
- package/src/plugins/tfstate/README.md +126 -126
- package/src/plugins/tfstate/base-driver.js +28 -4
- package/src/plugins/tfstate/errors.js +65 -10
- package/src/plugins/tfstate/filesystem-driver.js +52 -8
- package/src/plugins/tfstate/index.js +163 -90
- package/src/plugins/tfstate/s3-driver.js +64 -6
- package/src/plugins/ttl.plugin.js +72 -17
- package/src/plugins/vector/distances.js +18 -12
- package/src/plugins/vector/kmeans.js +26 -4
- package/src/resource.class.js +115 -19
- package/src/testing/factory.class.js +20 -3
- package/src/testing/seeder.class.js +7 -1
- package/src/clients/memory-client.md +0 -917
- package/src/plugins/cloud-inventory/drivers/mock-drivers.js +0 -449
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kubernetes Resource Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive list of all standard Kubernetes resource types across different API groups.
|
|
5
|
+
* Used for discovery and inventory collection.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Core API Group (v1) - Fundamental Kubernetes resources
|
|
10
|
+
*/
|
|
11
|
+
export const CORE_RESOURCE_TYPES = [
|
|
12
|
+
// Workload Resources
|
|
13
|
+
{ group: '', version: 'v1', kind: 'Pod', plural: 'pods', namespaced: true, category: 'workload' },
|
|
14
|
+
{ group: '', version: 'v1', kind: 'ReplicationController', plural: 'replicationcontrollers', namespaced: true, category: 'workload' },
|
|
15
|
+
|
|
16
|
+
// Service & Discovery
|
|
17
|
+
{ group: '', version: 'v1', kind: 'Service', plural: 'services', namespaced: true, category: 'networking' },
|
|
18
|
+
{ group: '', version: 'v1', kind: 'Endpoints', plural: 'endpoints', namespaced: true, category: 'networking' },
|
|
19
|
+
{ group: '', version: 'v1', kind: 'EndpointSlice', plural: 'endpointslices', namespaced: true, category: 'networking' },
|
|
20
|
+
|
|
21
|
+
// Configuration
|
|
22
|
+
{ group: '', version: 'v1', kind: 'ConfigMap', plural: 'configmaps', namespaced: true, category: 'config' },
|
|
23
|
+
{ group: '', version: 'v1', kind: 'Secret', plural: 'secrets', namespaced: true, category: 'config', sensitive: true },
|
|
24
|
+
|
|
25
|
+
// Storage
|
|
26
|
+
{ group: '', version: 'v1', kind: 'PersistentVolume', plural: 'persistentvolumes', namespaced: false, category: 'storage' },
|
|
27
|
+
{ group: '', version: 'v1', kind: 'PersistentVolumeClaim', plural: 'persistentvolumeclaims', namespaced: true, category: 'storage' },
|
|
28
|
+
|
|
29
|
+
// Cluster
|
|
30
|
+
{ group: '', version: 'v1', kind: 'Namespace', plural: 'namespaces', namespaced: false, category: 'cluster' },
|
|
31
|
+
{ group: '', version: 'v1', kind: 'Node', plural: 'nodes', namespaced: false, category: 'cluster' },
|
|
32
|
+
|
|
33
|
+
// Service Accounts & Auth
|
|
34
|
+
{ group: '', version: 'v1', kind: 'ServiceAccount', plural: 'serviceaccounts', namespaced: true, category: 'auth' },
|
|
35
|
+
|
|
36
|
+
// Resource Quotas & Limits
|
|
37
|
+
{ group: '', version: 'v1', kind: 'ResourceQuota', plural: 'resourcequotas', namespaced: true, category: 'policy' },
|
|
38
|
+
{ group: '', version: 'v1', kind: 'LimitRange', plural: 'limitranges', namespaced: true, category: 'policy' },
|
|
39
|
+
|
|
40
|
+
// Events (usually ignored due to volume)
|
|
41
|
+
{ group: '', version: 'v1', kind: 'Event', plural: 'events', namespaced: true, category: 'events', highVolume: true },
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Apps API Group (apps/v1) - Application workload resources
|
|
46
|
+
*/
|
|
47
|
+
export const APPS_RESOURCE_TYPES = [
|
|
48
|
+
{ group: 'apps', version: 'v1', kind: 'Deployment', plural: 'deployments', namespaced: true, category: 'workload' },
|
|
49
|
+
{ group: 'apps', version: 'v1', kind: 'StatefulSet', plural: 'statefulsets', namespaced: true, category: 'workload' },
|
|
50
|
+
{ group: 'apps', version: 'v1', kind: 'DaemonSet', plural: 'daemonsets', namespaced: true, category: 'workload' },
|
|
51
|
+
{ group: 'apps', version: 'v1', kind: 'ReplicaSet', plural: 'replicasets', namespaced: true, category: 'workload' },
|
|
52
|
+
{ group: 'apps', version: 'v1', kind: 'ControllerRevision', plural: 'controllerrevisions', namespaced: true, category: 'workload' },
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Batch API Group (batch/v1) - Job and scheduled workload resources
|
|
57
|
+
*/
|
|
58
|
+
export const BATCH_RESOURCE_TYPES = [
|
|
59
|
+
{ group: 'batch', version: 'v1', kind: 'Job', plural: 'jobs', namespaced: true, category: 'workload' },
|
|
60
|
+
{ group: 'batch', version: 'v1', kind: 'CronJob', plural: 'cronjobs', namespaced: true, category: 'workload' },
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Networking API Group (networking.k8s.io/v1) - Network policies and ingress
|
|
65
|
+
*/
|
|
66
|
+
export const NETWORKING_RESOURCE_TYPES = [
|
|
67
|
+
{ group: 'networking.k8s.io', version: 'v1', kind: 'Ingress', plural: 'ingresses', namespaced: true, category: 'networking' },
|
|
68
|
+
{ group: 'networking.k8s.io', version: 'v1', kind: 'IngressClass', plural: 'ingressclasses', namespaced: false, category: 'networking' },
|
|
69
|
+
{ group: 'networking.k8s.io', version: 'v1', kind: 'NetworkPolicy', plural: 'networkpolicies', namespaced: true, category: 'networking' },
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Storage API Group (storage.k8s.io/v1) - Storage classes and volume management
|
|
74
|
+
*/
|
|
75
|
+
export const STORAGE_RESOURCE_TYPES = [
|
|
76
|
+
{ group: 'storage.k8s.io', version: 'v1', kind: 'StorageClass', plural: 'storageclasses', namespaced: false, category: 'storage' },
|
|
77
|
+
{ group: 'storage.k8s.io', version: 'v1', kind: 'VolumeAttachment', plural: 'volumeattachments', namespaced: false, category: 'storage' },
|
|
78
|
+
{ group: 'storage.k8s.io', version: 'v1', kind: 'CSIDriver', plural: 'csidrivers', namespaced: false, category: 'storage' },
|
|
79
|
+
{ group: 'storage.k8s.io', version: 'v1', kind: 'CSINode', plural: 'csinodes', namespaced: false, category: 'storage' },
|
|
80
|
+
{ group: 'storage.k8s.io', version: 'v1', kind: 'CSIStorageCapacity', plural: 'csistoragecapacities', namespaced: true, category: 'storage' },
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* RBAC API Group (rbac.authorization.k8s.io/v1) - Role-based access control
|
|
85
|
+
*/
|
|
86
|
+
export const RBAC_RESOURCE_TYPES = [
|
|
87
|
+
{ group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'Role', plural: 'roles', namespaced: true, category: 'auth' },
|
|
88
|
+
{ group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'RoleBinding', plural: 'rolebindings', namespaced: true, category: 'auth' },
|
|
89
|
+
{ group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'ClusterRole', plural: 'clusterroles', namespaced: false, category: 'auth' },
|
|
90
|
+
{ group: 'rbac.authorization.k8s.io', version: 'v1', kind: 'ClusterRoleBinding', plural: 'clusterrolebindings', namespaced: false, category: 'auth' },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Policy API Group (policy/v1) - Pod disruption budgets and security policies
|
|
95
|
+
*/
|
|
96
|
+
export const POLICY_RESOURCE_TYPES = [
|
|
97
|
+
{ group: 'policy', version: 'v1', kind: 'PodDisruptionBudget', plural: 'poddisruptionbudgets', namespaced: true, category: 'policy' },
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Autoscaling API Group (autoscaling/v2) - Horizontal pod autoscaling
|
|
102
|
+
*/
|
|
103
|
+
export const AUTOSCALING_RESOURCE_TYPES = [
|
|
104
|
+
{ group: 'autoscaling', version: 'v1', kind: 'HorizontalPodAutoscaler', plural: 'horizontalpodautoscalers', namespaced: true, category: 'autoscaling' },
|
|
105
|
+
{ group: 'autoscaling', version: 'v2', kind: 'HorizontalPodAutoscaler', plural: 'horizontalpodautoscalers', namespaced: true, category: 'autoscaling' },
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Scheduling API Group (scheduling.k8s.io/v1) - Priority classes
|
|
110
|
+
*/
|
|
111
|
+
export const SCHEDULING_RESOURCE_TYPES = [
|
|
112
|
+
{ group: 'scheduling.k8s.io', version: 'v1', kind: 'PriorityClass', plural: 'priorityclasses', namespaced: false, category: 'scheduling' },
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Node API Group (node.k8s.io/v1) - Runtime classes
|
|
117
|
+
*/
|
|
118
|
+
export const NODE_RESOURCE_TYPES = [
|
|
119
|
+
{ group: 'node.k8s.io', version: 'v1', kind: 'RuntimeClass', plural: 'runtimeclasses', namespaced: false, category: 'cluster' },
|
|
120
|
+
];
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Certificates API Group (certificates.k8s.io/v1) - Certificate signing requests
|
|
124
|
+
*/
|
|
125
|
+
export const CERTIFICATES_RESOURCE_TYPES = [
|
|
126
|
+
{ group: 'certificates.k8s.io', version: 'v1', kind: 'CertificateSigningRequest', plural: 'certificatesigningrequests', namespaced: false, category: 'auth' },
|
|
127
|
+
];
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Coordination API Group (coordination.k8s.io/v1) - Leader election leases
|
|
131
|
+
*/
|
|
132
|
+
export const COORDINATION_RESOURCE_TYPES = [
|
|
133
|
+
{ group: 'coordination.k8s.io', version: 'v1', kind: 'Lease', plural: 'leases', namespaced: true, category: 'cluster', highVolume: true },
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Discovery API Group (discovery.k8s.io/v1) - Endpoint slices
|
|
138
|
+
*/
|
|
139
|
+
export const DISCOVERY_RESOURCE_TYPES = [
|
|
140
|
+
{ group: 'discovery.k8s.io', version: 'v1', kind: 'EndpointSlice', plural: 'endpointslices', namespaced: true, category: 'networking' },
|
|
141
|
+
];
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Events API Group (events.k8s.io/v1) - Enhanced events
|
|
145
|
+
*/
|
|
146
|
+
export const EVENTS_RESOURCE_TYPES = [
|
|
147
|
+
{ group: 'events.k8s.io', version: 'v1', kind: 'Event', plural: 'events', namespaced: true, category: 'events', highVolume: true },
|
|
148
|
+
];
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Admission Registration API Group (admissionregistration.k8s.io/v1)
|
|
152
|
+
*/
|
|
153
|
+
export const ADMISSION_RESOURCE_TYPES = [
|
|
154
|
+
{ group: 'admissionregistration.k8s.io', version: 'v1', kind: 'MutatingWebhookConfiguration', plural: 'mutatingwebhookconfigurations', namespaced: false, category: 'cluster' },
|
|
155
|
+
{ group: 'admissionregistration.k8s.io', version: 'v1', kind: 'ValidatingWebhookConfiguration', plural: 'validatingwebhookconfigurations', namespaced: false, category: 'cluster' },
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* API Registration API Group (apiregistration.k8s.io/v1)
|
|
160
|
+
*/
|
|
161
|
+
export const API_REGISTRATION_RESOURCE_TYPES = [
|
|
162
|
+
{ group: 'apiregistration.k8s.io', version: 'v1', kind: 'APIService', plural: 'apiservices', namespaced: false, category: 'cluster' },
|
|
163
|
+
];
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Flow Control API Group (flowcontrol.apiserver.k8s.io/v1)
|
|
167
|
+
*/
|
|
168
|
+
export const FLOWCONTROL_RESOURCE_TYPES = [
|
|
169
|
+
{ group: 'flowcontrol.apiserver.k8s.io', version: 'v1', kind: 'FlowSchema', plural: 'flowschemas', namespaced: false, category: 'cluster' },
|
|
170
|
+
{ group: 'flowcontrol.apiserver.k8s.io', version: 'v1', kind: 'PriorityLevelConfiguration', plural: 'prioritylevelconfigurations', namespaced: false, category: 'cluster' },
|
|
171
|
+
];
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* All standard resource types combined
|
|
175
|
+
*/
|
|
176
|
+
export const ALL_STANDARD_RESOURCE_TYPES = [
|
|
177
|
+
...CORE_RESOURCE_TYPES,
|
|
178
|
+
...APPS_RESOURCE_TYPES,
|
|
179
|
+
...BATCH_RESOURCE_TYPES,
|
|
180
|
+
...NETWORKING_RESOURCE_TYPES,
|
|
181
|
+
...STORAGE_RESOURCE_TYPES,
|
|
182
|
+
...RBAC_RESOURCE_TYPES,
|
|
183
|
+
...POLICY_RESOURCE_TYPES,
|
|
184
|
+
...AUTOSCALING_RESOURCE_TYPES,
|
|
185
|
+
...SCHEDULING_RESOURCE_TYPES,
|
|
186
|
+
...NODE_RESOURCE_TYPES,
|
|
187
|
+
...CERTIFICATES_RESOURCE_TYPES,
|
|
188
|
+
...COORDINATION_RESOURCE_TYPES,
|
|
189
|
+
...DISCOVERY_RESOURCE_TYPES,
|
|
190
|
+
...EVENTS_RESOURCE_TYPES,
|
|
191
|
+
...ADMISSION_RESOURCE_TYPES,
|
|
192
|
+
...API_REGISTRATION_RESOURCE_TYPES,
|
|
193
|
+
...FLOWCONTROL_RESOURCE_TYPES,
|
|
194
|
+
];
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Resource types grouped by category
|
|
198
|
+
*/
|
|
199
|
+
export const RESOURCE_TYPES_BY_CATEGORY = {
|
|
200
|
+
workload: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'workload'),
|
|
201
|
+
networking: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'networking'),
|
|
202
|
+
storage: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'storage'),
|
|
203
|
+
config: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'config'),
|
|
204
|
+
auth: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'auth'),
|
|
205
|
+
policy: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'policy'),
|
|
206
|
+
cluster: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'cluster'),
|
|
207
|
+
autoscaling: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'autoscaling'),
|
|
208
|
+
scheduling: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'scheduling'),
|
|
209
|
+
events: ALL_STANDARD_RESOURCE_TYPES.filter(rt => rt.category === 'events'),
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Helper function to format resource type as identifier
|
|
214
|
+
* @param {Object} resourceType - Resource type definition
|
|
215
|
+
* @returns {string} Formatted identifier (e.g., "apps.v1.Deployment")
|
|
216
|
+
*/
|
|
217
|
+
export function formatResourceTypeId(resourceType) {
|
|
218
|
+
const group = resourceType.group || 'core';
|
|
219
|
+
return `${group}.${resourceType.version}.${resourceType.kind}`;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Helper function to parse resource type identifier
|
|
224
|
+
* @param {string} id - Resource type ID (e.g., "apps.v1.Deployment")
|
|
225
|
+
* @returns {Object} Parsed components { group, version, kind }
|
|
226
|
+
*/
|
|
227
|
+
export function parseResourceTypeId(id) {
|
|
228
|
+
const parts = id.split('.');
|
|
229
|
+
if (parts.length !== 3) {
|
|
230
|
+
throw new Error(`Invalid resource type ID: ${id}. Expected format: group.version.Kind`);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
const [group, version, kind] = parts;
|
|
234
|
+
return {
|
|
235
|
+
group: group === 'core' ? '' : group,
|
|
236
|
+
version,
|
|
237
|
+
kind,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Helper function to find resource type by identifier
|
|
243
|
+
* @param {string} id - Resource type ID
|
|
244
|
+
* @returns {Object|null} Resource type definition or null
|
|
245
|
+
*/
|
|
246
|
+
export function findResourceType(id) {
|
|
247
|
+
const { group, version, kind } = parseResourceTypeId(id);
|
|
248
|
+
return ALL_STANDARD_RESOURCE_TYPES.find(
|
|
249
|
+
rt => rt.group === group && rt.version === version && rt.kind === kind
|
|
250
|
+
) || null;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Common resource type filters
|
|
255
|
+
*/
|
|
256
|
+
export const COMMON_FILTERS = {
|
|
257
|
+
// Exclude high-volume resources that change frequently
|
|
258
|
+
excludeHighVolume: (rt) => !rt.highVolume,
|
|
259
|
+
|
|
260
|
+
// Exclude sensitive resources (secrets)
|
|
261
|
+
excludeSensitive: (rt) => !rt.sensitive,
|
|
262
|
+
|
|
263
|
+
// Only namespaced resources
|
|
264
|
+
namespacedOnly: (rt) => rt.namespaced,
|
|
265
|
+
|
|
266
|
+
// Only cluster-scoped resources
|
|
267
|
+
clusterScopedOnly: (rt) => !rt.namespaced,
|
|
268
|
+
|
|
269
|
+
// Only workload resources
|
|
270
|
+
workloadOnly: (rt) => rt.category === 'workload',
|
|
271
|
+
|
|
272
|
+
// Exclude events and leases (usually too many)
|
|
273
|
+
excludeNoisy: (rt) => !['Event', 'Lease'].includes(rt.kind),
|
|
274
|
+
};
|