@stacksjs/ts-cloud-core 0.1.1

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 (251) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +321 -0
  3. package/package.json +31 -0
  4. package/src/advanced-features.test.ts +465 -0
  5. package/src/aws/cloudformation.ts +421 -0
  6. package/src/aws/cloudfront.ts +158 -0
  7. package/src/aws/credentials.test.ts +132 -0
  8. package/src/aws/credentials.ts +545 -0
  9. package/src/aws/index.ts +87 -0
  10. package/src/aws/s3.test.ts +188 -0
  11. package/src/aws/s3.ts +1088 -0
  12. package/src/aws/signature.test.ts +670 -0
  13. package/src/aws/signature.ts +1155 -0
  14. package/src/backup/disaster-recovery.test.ts +726 -0
  15. package/src/backup/disaster-recovery.ts +500 -0
  16. package/src/backup/index.ts +34 -0
  17. package/src/backup/manager.test.ts +498 -0
  18. package/src/backup/manager.ts +432 -0
  19. package/src/cicd/circleci.ts +430 -0
  20. package/src/cicd/github-actions.ts +424 -0
  21. package/src/cicd/gitlab-ci.ts +255 -0
  22. package/src/cicd/index.ts +8 -0
  23. package/src/cli/history.ts +396 -0
  24. package/src/cli/index.ts +10 -0
  25. package/src/cli/progress.ts +458 -0
  26. package/src/cli/repl.ts +454 -0
  27. package/src/cli/suggestions.ts +327 -0
  28. package/src/cli/table.test.ts +319 -0
  29. package/src/cli/table.ts +332 -0
  30. package/src/cloudformation/builder.test.ts +327 -0
  31. package/src/cloudformation/builder.ts +378 -0
  32. package/src/cloudformation/builders/api-gateway.ts +449 -0
  33. package/src/cloudformation/builders/cache.ts +334 -0
  34. package/src/cloudformation/builders/cdn.ts +278 -0
  35. package/src/cloudformation/builders/compute.ts +485 -0
  36. package/src/cloudformation/builders/database.ts +392 -0
  37. package/src/cloudformation/builders/functions.ts +343 -0
  38. package/src/cloudformation/builders/messaging.ts +140 -0
  39. package/src/cloudformation/builders/monitoring.ts +300 -0
  40. package/src/cloudformation/builders/network.ts +264 -0
  41. package/src/cloudformation/builders/queue.ts +147 -0
  42. package/src/cloudformation/builders/security.ts +399 -0
  43. package/src/cloudformation/builders/storage.ts +285 -0
  44. package/src/cloudformation/index.ts +30 -0
  45. package/src/cloudformation/types.ts +173 -0
  46. package/src/compliance/aws-config.ts +543 -0
  47. package/src/compliance/cloudtrail.ts +376 -0
  48. package/src/compliance/compliance.test.ts +423 -0
  49. package/src/compliance/guardduty.ts +446 -0
  50. package/src/compliance/index.ts +66 -0
  51. package/src/compliance/security-hub.ts +456 -0
  52. package/src/containers/build-optimization.ts +416 -0
  53. package/src/containers/containers.test.ts +508 -0
  54. package/src/containers/image-scanning.ts +360 -0
  55. package/src/containers/index.ts +9 -0
  56. package/src/containers/registry.ts +293 -0
  57. package/src/containers/service-mesh.ts +520 -0
  58. package/src/database/database.test.ts +762 -0
  59. package/src/database/index.ts +9 -0
  60. package/src/database/migrations.ts +444 -0
  61. package/src/database/performance.ts +528 -0
  62. package/src/database/replicas.ts +534 -0
  63. package/src/database/users.ts +494 -0
  64. package/src/dependency-graph.ts +143 -0
  65. package/src/deployment/ab-testing.ts +582 -0
  66. package/src/deployment/blue-green.ts +452 -0
  67. package/src/deployment/canary.ts +500 -0
  68. package/src/deployment/deployment.test.ts +526 -0
  69. package/src/deployment/index.ts +61 -0
  70. package/src/deployment/progressive.ts +62 -0
  71. package/src/dns/dns.test.ts +641 -0
  72. package/src/dns/dnssec.ts +315 -0
  73. package/src/dns/index.ts +8 -0
  74. package/src/dns/resolver.ts +496 -0
  75. package/src/dns/routing.ts +593 -0
  76. package/src/email/advanced/analytics.ts +445 -0
  77. package/src/email/advanced/index.ts +11 -0
  78. package/src/email/advanced/rules.ts +465 -0
  79. package/src/email/advanced/scheduling.ts +352 -0
  80. package/src/email/advanced/search.ts +412 -0
  81. package/src/email/advanced/shared-mailboxes.ts +404 -0
  82. package/src/email/advanced/templates.ts +455 -0
  83. package/src/email/advanced/threading.ts +281 -0
  84. package/src/email/analytics.ts +467 -0
  85. package/src/email/bounce-handling.ts +425 -0
  86. package/src/email/email.test.ts +431 -0
  87. package/src/email/handlers/__tests__/inbound.test.ts +38 -0
  88. package/src/email/handlers/__tests__/outbound.test.ts +37 -0
  89. package/src/email/handlers/converter.ts +227 -0
  90. package/src/email/handlers/feedback.ts +228 -0
  91. package/src/email/handlers/inbound.ts +169 -0
  92. package/src/email/handlers/outbound.ts +178 -0
  93. package/src/email/index.ts +15 -0
  94. package/src/email/reputation.ts +303 -0
  95. package/src/email/templates.ts +352 -0
  96. package/src/errors/index.test.ts +434 -0
  97. package/src/errors/index.ts +416 -0
  98. package/src/health-checks/index.ts +40 -0
  99. package/src/index.ts +360 -0
  100. package/src/intrinsic-functions.ts +118 -0
  101. package/src/lambda/concurrency.ts +330 -0
  102. package/src/lambda/destinations.ts +345 -0
  103. package/src/lambda/dlq.ts +425 -0
  104. package/src/lambda/index.ts +11 -0
  105. package/src/lambda/lambda.test.ts +840 -0
  106. package/src/lambda/layers.ts +263 -0
  107. package/src/lambda/versions.ts +376 -0
  108. package/src/lambda/vpc.ts +399 -0
  109. package/src/local/config.ts +114 -0
  110. package/src/local/index.ts +6 -0
  111. package/src/local/mock-aws.ts +351 -0
  112. package/src/modules/ai.ts +340 -0
  113. package/src/modules/api.ts +478 -0
  114. package/src/modules/auth.ts +805 -0
  115. package/src/modules/cache.ts +417 -0
  116. package/src/modules/cdn.ts +1062 -0
  117. package/src/modules/communication.ts +1094 -0
  118. package/src/modules/compute.ts +3348 -0
  119. package/src/modules/database.ts +554 -0
  120. package/src/modules/deployment.ts +1079 -0
  121. package/src/modules/dns.ts +337 -0
  122. package/src/modules/email.ts +1538 -0
  123. package/src/modules/filesystem.ts +515 -0
  124. package/src/modules/index.ts +32 -0
  125. package/src/modules/messaging.ts +486 -0
  126. package/src/modules/monitoring.ts +2086 -0
  127. package/src/modules/network.ts +664 -0
  128. package/src/modules/parameter-store.ts +325 -0
  129. package/src/modules/permissions.ts +1081 -0
  130. package/src/modules/phone.ts +494 -0
  131. package/src/modules/queue.ts +1260 -0
  132. package/src/modules/redirects.ts +464 -0
  133. package/src/modules/registry.ts +699 -0
  134. package/src/modules/search.ts +401 -0
  135. package/src/modules/secrets.ts +416 -0
  136. package/src/modules/security.ts +731 -0
  137. package/src/modules/sms.ts +389 -0
  138. package/src/modules/storage.ts +1120 -0
  139. package/src/modules/workflow.ts +680 -0
  140. package/src/multi-account/config.ts +521 -0
  141. package/src/multi-account/index.ts +7 -0
  142. package/src/multi-account/manager.ts +427 -0
  143. package/src/multi-region/cross-region.ts +410 -0
  144. package/src/multi-region/index.ts +8 -0
  145. package/src/multi-region/manager.ts +483 -0
  146. package/src/multi-region/regions.ts +435 -0
  147. package/src/network-security/index.ts +48 -0
  148. package/src/observability/index.ts +9 -0
  149. package/src/observability/logs.ts +522 -0
  150. package/src/observability/metrics.ts +460 -0
  151. package/src/observability/observability.test.ts +782 -0
  152. package/src/observability/synthetics.ts +568 -0
  153. package/src/observability/xray.ts +358 -0
  154. package/src/phone/advanced/analytics.ts +349 -0
  155. package/src/phone/advanced/callbacks.ts +428 -0
  156. package/src/phone/advanced/index.ts +8 -0
  157. package/src/phone/advanced/ivr-builder.ts +504 -0
  158. package/src/phone/advanced/recording.ts +310 -0
  159. package/src/phone/handlers/__tests__/incoming-call.test.ts +40 -0
  160. package/src/phone/handlers/incoming-call.ts +117 -0
  161. package/src/phone/handlers/missed-call.ts +116 -0
  162. package/src/phone/handlers/voicemail.ts +179 -0
  163. package/src/phone/index.ts +9 -0
  164. package/src/presets/api-backend.ts +134 -0
  165. package/src/presets/data-pipeline.ts +204 -0
  166. package/src/presets/extend.test.ts +295 -0
  167. package/src/presets/extend.ts +297 -0
  168. package/src/presets/fullstack-app.ts +144 -0
  169. package/src/presets/index.ts +27 -0
  170. package/src/presets/jamstack.ts +135 -0
  171. package/src/presets/microservices.ts +167 -0
  172. package/src/presets/ml-api.ts +208 -0
  173. package/src/presets/nodejs-server.ts +104 -0
  174. package/src/presets/nodejs-serverless.ts +114 -0
  175. package/src/presets/realtime-app.ts +184 -0
  176. package/src/presets/static-site.ts +64 -0
  177. package/src/presets/traditional-web-app.ts +339 -0
  178. package/src/presets/wordpress.ts +138 -0
  179. package/src/preview/github.test.ts +249 -0
  180. package/src/preview/github.ts +297 -0
  181. package/src/preview/index.ts +37 -0
  182. package/src/preview/manager.test.ts +440 -0
  183. package/src/preview/manager.ts +326 -0
  184. package/src/preview/notifications.test.ts +582 -0
  185. package/src/preview/notifications.ts +341 -0
  186. package/src/queue/batch-processing.ts +402 -0
  187. package/src/queue/dlq-monitoring.ts +402 -0
  188. package/src/queue/fifo.ts +342 -0
  189. package/src/queue/index.ts +9 -0
  190. package/src/queue/management.ts +428 -0
  191. package/src/queue/queue.test.ts +429 -0
  192. package/src/resource-mgmt/index.ts +39 -0
  193. package/src/resource-naming.ts +62 -0
  194. package/src/s3/index.ts +523 -0
  195. package/src/schema/cloud-config.schema.json +554 -0
  196. package/src/schema/index.ts +68 -0
  197. package/src/security/certificate-manager.ts +492 -0
  198. package/src/security/index.ts +9 -0
  199. package/src/security/scanning.ts +545 -0
  200. package/src/security/secrets-manager.ts +476 -0
  201. package/src/security/secrets-rotation.ts +456 -0
  202. package/src/security/security.test.ts +738 -0
  203. package/src/sms/advanced/ab-testing.ts +389 -0
  204. package/src/sms/advanced/analytics.ts +336 -0
  205. package/src/sms/advanced/campaigns.ts +523 -0
  206. package/src/sms/advanced/chatbot.ts +224 -0
  207. package/src/sms/advanced/index.ts +10 -0
  208. package/src/sms/advanced/link-tracking.ts +248 -0
  209. package/src/sms/advanced/mms.ts +308 -0
  210. package/src/sms/handlers/__tests__/send.test.ts +40 -0
  211. package/src/sms/handlers/delivery-status.ts +133 -0
  212. package/src/sms/handlers/receive.ts +162 -0
  213. package/src/sms/handlers/send.ts +174 -0
  214. package/src/sms/index.ts +9 -0
  215. package/src/stack-diff.ts +389 -0
  216. package/src/static-site/index.ts +85 -0
  217. package/src/template-builder.ts +110 -0
  218. package/src/template-validator.ts +574 -0
  219. package/src/utils/cache.ts +291 -0
  220. package/src/utils/diff.ts +269 -0
  221. package/src/utils/hash.ts +227 -0
  222. package/src/utils/index.ts +8 -0
  223. package/src/utils/parallel.ts +294 -0
  224. package/src/validators/credentials.test.ts +274 -0
  225. package/src/validators/credentials.ts +233 -0
  226. package/src/validators/quotas.test.ts +434 -0
  227. package/src/validators/quotas.ts +217 -0
  228. package/test/ai.test.ts +327 -0
  229. package/test/api.test.ts +511 -0
  230. package/test/auth.test.ts +632 -0
  231. package/test/cache.test.ts +406 -0
  232. package/test/cdn.test.ts +247 -0
  233. package/test/compute.test.ts +861 -0
  234. package/test/database.test.ts +523 -0
  235. package/test/deployment.test.ts +499 -0
  236. package/test/dns.test.ts +270 -0
  237. package/test/email.test.ts +439 -0
  238. package/test/filesystem.test.ts +382 -0
  239. package/test/integration.test.ts +350 -0
  240. package/test/messaging.test.ts +514 -0
  241. package/test/monitoring.test.ts +634 -0
  242. package/test/network.test.ts +425 -0
  243. package/test/permissions.test.ts +488 -0
  244. package/test/queue.test.ts +484 -0
  245. package/test/registry.test.ts +306 -0
  246. package/test/security.test.ts +462 -0
  247. package/test/storage.test.ts +463 -0
  248. package/test/template-validator.test.ts +559 -0
  249. package/test/workflow.test.ts +592 -0
  250. package/tsconfig.json +16 -0
  251. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,315 @@
1
+ /**
2
+ * DNSSEC Configuration
3
+ * DNS Security Extensions for Route53
4
+ */
5
+
6
+ export interface DNSSECConfig {
7
+ id: string
8
+ hostedZoneId: string
9
+ status: 'SIGNING' | 'SIGNED' | 'NOT_SIGNING' | 'DELETING' | 'ACTION_NEEDED'
10
+ signingStatus?: string
11
+ statusMessage?: string
12
+ }
13
+
14
+ export interface KSK {
15
+ id: string
16
+ name: string
17
+ hostedZoneId: string
18
+ status: 'ACTIVE' | 'INACTIVE' | 'DELETING' | 'ACTION_NEEDED'
19
+ keyManagementServiceArn: string
20
+ dnskeyRecord?: string
21
+ dsRecord?: string
22
+ digestAlgorithm: number
23
+ digestValue?: string
24
+ flag: number
25
+ keyTag?: number
26
+ publicKey?: string
27
+ }
28
+
29
+ export interface DNSSECValidation {
30
+ id: string
31
+ domain: string
32
+ validationStatus: 'VALID' | 'INVALID' | 'INSECURE' | 'BOGUS'
33
+ dnskeyPresent: boolean
34
+ rrsigPresent: boolean
35
+ validSignature: boolean
36
+ errors: string[]
37
+ }
38
+
39
+ /**
40
+ * DNSSEC manager
41
+ */
42
+ export class DNSSECManager {
43
+ private configs: Map<string, DNSSECConfig> = new Map()
44
+ private ksks: Map<string, KSK> = new Map()
45
+ private validations: Map<string, DNSSECValidation> = new Map()
46
+ private configCounter = 0
47
+ private kskCounter = 0
48
+ private validationCounter = 0
49
+
50
+ /**
51
+ * Enable DNSSEC
52
+ */
53
+ enableDNSSEC(options: {
54
+ hostedZoneId: string
55
+ kmsKeyArn?: string
56
+ }): DNSSECConfig {
57
+ const id = `dnssec-${Date.now()}-${this.configCounter++}`
58
+
59
+ const config: DNSSECConfig = {
60
+ id,
61
+ hostedZoneId: options.hostedZoneId,
62
+ status: 'SIGNING',
63
+ signingStatus: 'Initializing DNSSEC signing',
64
+ }
65
+
66
+ this.configs.set(id, config)
67
+
68
+ // Create KSK if KMS key provided
69
+ if (options.kmsKeyArn) {
70
+ this.createKSK({
71
+ name: `ksk-${options.hostedZoneId}`,
72
+ hostedZoneId: options.hostedZoneId,
73
+ kmsKeyArn: options.kmsKeyArn,
74
+ })
75
+ }
76
+
77
+ // Simulate signing process
78
+ setTimeout(() => {
79
+ config.status = 'SIGNED'
80
+ config.signingStatus = 'DNSSEC signing complete'
81
+ }, 100)
82
+
83
+ return config
84
+ }
85
+
86
+ /**
87
+ * Disable DNSSEC
88
+ */
89
+ disableDNSSEC(configId: string): DNSSECConfig {
90
+ const config = this.configs.get(configId)
91
+
92
+ if (!config) {
93
+ throw new Error(`DNSSEC config not found: ${configId}`)
94
+ }
95
+
96
+ config.status = 'DELETING'
97
+ config.signingStatus = 'Removing DNSSEC signing'
98
+
99
+ setTimeout(() => {
100
+ config.status = 'NOT_SIGNING'
101
+ config.signingStatus = 'DNSSEC signing removed'
102
+ }, 100)
103
+
104
+ return config
105
+ }
106
+
107
+ /**
108
+ * Create KSK (Key-Signing Key)
109
+ */
110
+ createKSK(options: {
111
+ name: string
112
+ hostedZoneId: string
113
+ kmsKeyArn: string
114
+ }): KSK {
115
+ const id = `ksk-${Date.now()}-${this.kskCounter++}`
116
+
117
+ const ksk: KSK = {
118
+ id,
119
+ status: 'ACTIVE',
120
+ flag: 257, // KSK flag
121
+ keyManagementServiceArn: options.kmsKeyArn,
122
+ digestAlgorithm: 2, // SHA-256
123
+ keyTag: Math.floor(Math.random() * 65535),
124
+ publicKey: this.generatePublicKey(),
125
+ ...options,
126
+ }
127
+
128
+ // Generate DNSKEY record
129
+ ksk.dnskeyRecord = `${ksk.flag} 3 8 ${ksk.publicKey}`
130
+
131
+ // Generate DS record
132
+ const digest = this.generateDigest(ksk.dnskeyRecord)
133
+ ksk.digestValue = digest
134
+ ksk.dsRecord = `${ksk.keyTag} 8 ${ksk.digestAlgorithm} ${digest}`
135
+
136
+ this.ksks.set(id, ksk)
137
+
138
+ return ksk
139
+ }
140
+
141
+ /**
142
+ * Deactivate KSK
143
+ */
144
+ deactivateKSK(kskId: string): KSK {
145
+ const ksk = this.ksks.get(kskId)
146
+
147
+ if (!ksk) {
148
+ throw new Error(`KSK not found: ${kskId}`)
149
+ }
150
+
151
+ ksk.status = 'INACTIVE'
152
+
153
+ return ksk
154
+ }
155
+
156
+ /**
157
+ * Validate DNSSEC
158
+ */
159
+ validateDNSSEC(options: {
160
+ domain: string
161
+ checkDNSKEY?: boolean
162
+ checkRRSIG?: boolean
163
+ }): DNSSECValidation {
164
+ const id = `validation-${Date.now()}-${this.validationCounter++}`
165
+
166
+ const dnskeyPresent = options.checkDNSKEY !== false ? Math.random() > 0.1 : false
167
+ const rrsigPresent = options.checkRRSIG !== false ? Math.random() > 0.1 : false
168
+ const validSignature = dnskeyPresent && rrsigPresent
169
+
170
+ const errors: string[] = []
171
+ if (!dnskeyPresent) {
172
+ errors.push('DNSKEY record not found')
173
+ }
174
+ if (!rrsigPresent) {
175
+ errors.push('RRSIG record not found')
176
+ }
177
+
178
+ let validationStatus: 'VALID' | 'INVALID' | 'INSECURE' | 'BOGUS'
179
+
180
+ if (!dnskeyPresent && !rrsigPresent) {
181
+ validationStatus = 'INSECURE'
182
+ } else if (dnskeyPresent && rrsigPresent && validSignature) {
183
+ validationStatus = 'VALID'
184
+ } else if (dnskeyPresent || rrsigPresent) {
185
+ validationStatus = 'BOGUS'
186
+ errors.push('Invalid signature or incomplete DNSSEC chain')
187
+ } else {
188
+ validationStatus = 'INVALID'
189
+ }
190
+
191
+ const validation: DNSSECValidation = {
192
+ id,
193
+ domain: options.domain,
194
+ validationStatus,
195
+ dnskeyPresent,
196
+ rrsigPresent,
197
+ validSignature,
198
+ errors,
199
+ }
200
+
201
+ this.validations.set(id, validation)
202
+
203
+ return validation
204
+ }
205
+
206
+ /**
207
+ * Get DNSSEC config
208
+ */
209
+ getDNSSECConfig(id: string): DNSSECConfig | undefined {
210
+ return this.configs.get(id)
211
+ }
212
+
213
+ /**
214
+ * List DNSSEC configs
215
+ */
216
+ listDNSSECConfigs(): DNSSECConfig[] {
217
+ return Array.from(this.configs.values())
218
+ }
219
+
220
+ /**
221
+ * Get KSK
222
+ */
223
+ getKSK(id: string): KSK | undefined {
224
+ return this.ksks.get(id)
225
+ }
226
+
227
+ /**
228
+ * List KSKs
229
+ */
230
+ listKSKs(hostedZoneId?: string): KSK[] {
231
+ const ksks = Array.from(this.ksks.values())
232
+ return hostedZoneId ? ksks.filter(k => k.hostedZoneId === hostedZoneId) : ksks
233
+ }
234
+
235
+ /**
236
+ * Get DS record for parent zone
237
+ */
238
+ getDSRecord(kskId: string): string {
239
+ const ksk = this.ksks.get(kskId)
240
+
241
+ if (!ksk || !ksk.dsRecord) {
242
+ throw new Error('DS record not available')
243
+ }
244
+
245
+ return ksk.dsRecord
246
+ }
247
+
248
+ /**
249
+ * Generate public key (simulated)
250
+ */
251
+ private generatePublicKey(): string {
252
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
253
+ let result = ''
254
+ for (let i = 0; i < 256; i++) {
255
+ result += chars.charAt(Math.floor(Math.random() * chars.length))
256
+ }
257
+ return result
258
+ }
259
+
260
+ /**
261
+ * Generate digest (simulated)
262
+ */
263
+ private generateDigest(dnskeyRecord: string): string {
264
+ const chars = '0123456789ABCDEF'
265
+ let result = ''
266
+ for (let i = 0; i < 64; i++) {
267
+ result += chars.charAt(Math.floor(Math.random() * chars.length))
268
+ }
269
+ return result
270
+ }
271
+
272
+ /**
273
+ * Generate CloudFormation for DNSSEC
274
+ */
275
+ generateDNSSECCF(config: DNSSECConfig): any {
276
+ return {
277
+ Type: 'AWS::Route53::DNSSEC',
278
+ Properties: {
279
+ HostedZoneId: config.hostedZoneId,
280
+ },
281
+ }
282
+ }
283
+
284
+ /**
285
+ * Generate CloudFormation for KSK
286
+ */
287
+ generateKSKCF(ksk: KSK): any {
288
+ return {
289
+ Type: 'AWS::Route53::KeySigningKey',
290
+ Properties: {
291
+ Name: ksk.name,
292
+ HostedZoneId: ksk.hostedZoneId,
293
+ KeyManagementServiceArn: ksk.keyManagementServiceArn,
294
+ Status: ksk.status,
295
+ },
296
+ }
297
+ }
298
+
299
+ /**
300
+ * Clear all data
301
+ */
302
+ clear(): void {
303
+ this.configs.clear()
304
+ this.ksks.clear()
305
+ this.validations.clear()
306
+ this.configCounter = 0
307
+ this.kskCounter = 0
308
+ this.validationCounter = 0
309
+ }
310
+ }
311
+
312
+ /**
313
+ * Global DNSSEC manager instance
314
+ */
315
+ export const dnssecManager: DNSSECManager = new DNSSECManager()
@@ -0,0 +1,8 @@
1
+ /**
2
+ * DNS Advanced Features
3
+ * Routing policies, DNSSEC, and Route53 Resolver
4
+ */
5
+
6
+ export * from './routing'
7
+ export * from './dnssec'
8
+ export * from './resolver'