@k8ts/instruments 0.5.3 → 0.6.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.
Files changed (567) hide show
  1. package/dist/core/graph/entity.d.ts +13 -0
  2. package/dist/core/graph/entity.d.ts.map +1 -0
  3. package/dist/core/graph/entity.js +27 -0
  4. package/dist/core/graph/entity.js.map +1 -0
  5. package/dist/core/graph/index.d.ts +6 -0
  6. package/dist/core/graph/index.d.ts.map +1 -0
  7. package/dist/core/graph/index.js +26 -0
  8. package/dist/core/graph/index.js.map +1 -0
  9. package/dist/core/graph/node.d.ts +24 -0
  10. package/dist/core/graph/node.d.ts.map +1 -0
  11. package/dist/core/graph/node.js +131 -0
  12. package/dist/core/graph/node.js.map +1 -0
  13. package/dist/core/graph/origin/entity.d.ts +32 -0
  14. package/dist/core/graph/origin/entity.d.ts.map +1 -0
  15. package/dist/core/graph/origin/entity.js +149 -0
  16. package/dist/core/graph/origin/entity.js.map +1 -0
  17. package/dist/core/graph/origin/events.d.ts +41 -0
  18. package/dist/core/graph/origin/events.d.ts.map +1 -0
  19. package/dist/core/graph/origin/events.js +46 -0
  20. package/dist/core/graph/origin/events.js.map +1 -0
  21. package/dist/core/graph/origin/exporter.d.ts +13 -0
  22. package/dist/core/graph/origin/exporter.d.ts.map +1 -0
  23. package/dist/core/graph/origin/exporter.js +94 -0
  24. package/dist/core/graph/origin/exporter.js.map +1 -0
  25. package/dist/core/graph/origin/index.d.ts +7 -0
  26. package/dist/core/graph/origin/index.d.ts.map +1 -0
  27. package/dist/core/graph/origin/index.js +23 -0
  28. package/dist/core/graph/origin/index.js.map +1 -0
  29. package/dist/core/graph/origin/kind-map/index.d.ts +36 -0
  30. package/dist/core/graph/origin/kind-map/index.d.ts.map +1 -0
  31. package/dist/core/graph/origin/kind-map/index.js +195 -0
  32. package/dist/core/graph/origin/kind-map/index.js.map +1 -0
  33. package/dist/core/graph/origin/node.d.ts +23 -0
  34. package/dist/core/graph/origin/node.d.ts.map +1 -0
  35. package/dist/{graph/origin-node.js → core/graph/origin/node.js} +33 -78
  36. package/dist/core/graph/origin/node.js.map +1 -0
  37. package/dist/core/graph/origin/origin-events.d.ts +41 -0
  38. package/dist/core/graph/origin/origin-events.d.ts.map +1 -0
  39. package/dist/core/graph/origin/origin-events.js +46 -0
  40. package/dist/core/graph/origin/origin-events.js.map +1 -0
  41. package/dist/core/graph/origin/tracker.d.ts +19 -0
  42. package/dist/core/graph/origin/tracker.d.ts.map +1 -0
  43. package/dist/core/graph/origin/tracker.js +87 -0
  44. package/dist/core/graph/origin/tracker.js.map +1 -0
  45. package/dist/core/graph/relation.d.ts +7 -0
  46. package/dist/core/graph/relation.d.ts.map +1 -0
  47. package/dist/{graph/dependencies.js → core/graph/relation.js} +3 -13
  48. package/dist/core/graph/relation.js.map +1 -0
  49. package/dist/core/graph/resource/api-kind/index.d.ts +57 -0
  50. package/dist/core/graph/resource/api-kind/index.d.ts.map +1 -0
  51. package/dist/{api-kind → core/graph/resource/api-kind}/index.js +35 -15
  52. package/dist/core/graph/resource/api-kind/index.js.map +1 -0
  53. package/dist/core/graph/resource/api-kind/pluralize.d.ts +19 -0
  54. package/dist/core/graph/resource/api-kind/pluralize.d.ts.map +1 -0
  55. package/dist/core/graph/resource/api-kind/pluralize.js +13 -0
  56. package/dist/core/graph/resource/api-kind/pluralize.js.map +1 -0
  57. package/dist/core/graph/resource/child.d.ts +10 -0
  58. package/dist/core/graph/resource/child.d.ts.map +1 -0
  59. package/dist/core/graph/resource/child.js +22 -0
  60. package/dist/core/graph/resource/child.js.map +1 -0
  61. package/dist/core/graph/resource/entity.d.ts +21 -0
  62. package/dist/core/graph/resource/entity.d.ts.map +1 -0
  63. package/dist/{graph/base-origin-entity.js → core/graph/resource/entity.js} +37 -34
  64. package/dist/core/graph/resource/entity.js.map +1 -0
  65. package/dist/core/graph/resource/index.d.ts +8 -0
  66. package/dist/core/graph/resource/index.d.ts.map +1 -0
  67. package/dist/core/graph/resource/index.js +24 -0
  68. package/dist/core/graph/resource/index.js.map +1 -0
  69. package/dist/core/graph/resource/node.d.ts +29 -0
  70. package/dist/core/graph/resource/node.d.ts.map +1 -0
  71. package/dist/{graph/resource-node.js → core/graph/resource/node.js} +23 -31
  72. package/dist/core/graph/resource/node.js.map +1 -0
  73. package/dist/core/graph/resource/ref-key/index.d.ts.map +1 -0
  74. package/dist/core/graph/resource/ref-key/index.js.map +1 -0
  75. package/dist/core/graph/resource/ref-key/ref-key.d.ts +18 -0
  76. package/dist/core/graph/resource/ref-key/ref-key.d.ts.map +1 -0
  77. package/dist/core/graph/resource/ref-key/ref-key.js +58 -0
  78. package/dist/core/graph/resource/ref-key/ref-key.js.map +1 -0
  79. package/dist/core/graph/resource/reference/error.d.ts +5 -0
  80. package/dist/core/graph/resource/reference/error.d.ts.map +1 -0
  81. package/dist/core/graph/resource/reference/error.js +11 -0
  82. package/dist/core/graph/resource/reference/error.js.map +1 -0
  83. package/dist/core/graph/resource/reference/fw-ref-exports.d.ts +15 -0
  84. package/dist/core/graph/resource/reference/fw-ref-exports.d.ts.map +1 -0
  85. package/dist/core/graph/resource/reference/fw-ref-exports.js +133 -0
  86. package/dist/core/graph/resource/reference/fw-ref-exports.js.map +1 -0
  87. package/dist/core/graph/resource/reference/fw-ref.d.ts +25 -0
  88. package/dist/core/graph/resource/reference/fw-ref.d.ts.map +1 -0
  89. package/dist/core/graph/resource/reference/fw-ref.js +105 -0
  90. package/dist/core/graph/resource/reference/fw-ref.js.map +1 -0
  91. package/dist/core/graph/resource/reference/index.d.ts +4 -0
  92. package/dist/core/graph/resource/reference/index.d.ts.map +1 -0
  93. package/dist/core/graph/resource/reference/index.js +8 -0
  94. package/dist/core/graph/resource/reference/index.js.map +1 -0
  95. package/dist/core/graph/resource/reference/refable.d.ts +17 -0
  96. package/dist/core/graph/resource/reference/refable.d.ts.map +1 -0
  97. package/dist/core/graph/resource/reference/refable.js.map +1 -0
  98. package/dist/core/graph/resource/top.d.ts +18 -0
  99. package/dist/core/graph/resource/top.d.ts.map +1 -0
  100. package/dist/core/graph/resource/top.js +59 -0
  101. package/dist/core/graph/resource/top.js.map +1 -0
  102. package/dist/core/index.d.ts +5 -0
  103. package/dist/core/index.d.ts.map +1 -0
  104. package/dist/core/index.js +21 -0
  105. package/dist/core/index.js.map +1 -0
  106. package/dist/core/manifest/index.d.ts +31 -0
  107. package/dist/core/manifest/index.d.ts.map +1 -0
  108. package/dist/core/manifest/index.js +6 -0
  109. package/dist/core/manifest/index.js.map +1 -0
  110. package/dist/{tracing → core/tracing}/git.d.ts +2 -1
  111. package/dist/core/tracing/git.d.ts.map +1 -0
  112. package/dist/{tracing → core/tracing}/git.js +20 -3
  113. package/dist/core/tracing/git.js.map +1 -0
  114. package/dist/core/tracing/index.d.ts.map +1 -0
  115. package/dist/core/tracing/index.js.map +1 -0
  116. package/dist/core/tracing/trace.d.ts.map +1 -0
  117. package/dist/core/tracing/trace.js.map +1 -0
  118. package/dist/{tracing → core/tracing}/traced.d.ts +1 -1
  119. package/dist/core/tracing/traced.d.ts.map +1 -0
  120. package/dist/core/tracing/traced.js +6 -0
  121. package/dist/core/tracing/traced.js.map +1 -0
  122. package/dist/error.d.ts +0 -3
  123. package/dist/error.d.ts.map +1 -1
  124. package/dist/error.js +1 -7
  125. package/dist/error.js.map +1 -1
  126. package/dist/{data-sources → expressions/data-sources}/index.d.ts +8 -9
  127. package/dist/expressions/data-sources/index.d.ts.map +1 -0
  128. package/dist/{data-sources → expressions/data-sources}/index.js +52 -34
  129. package/dist/expressions/data-sources/index.js.map +1 -0
  130. package/dist/expressions/index.d.ts +6 -0
  131. package/dist/expressions/index.d.ts.map +1 -0
  132. package/dist/{manifest → expressions}/index.js +5 -4
  133. package/dist/expressions/index.js.map +1 -0
  134. package/dist/expressions/network/index.d.ts +2 -0
  135. package/dist/expressions/network/index.d.ts.map +1 -0
  136. package/dist/{producer → expressions/network}/index.js +1 -1
  137. package/dist/expressions/network/index.js.map +1 -0
  138. package/dist/expressions/network/ip/index.d.ts.map +1 -0
  139. package/dist/expressions/network/ip/index.js.map +1 -0
  140. package/dist/expressions/network/ports/error.d.ts.map +1 -0
  141. package/dist/expressions/network/ports/error.js.map +1 -0
  142. package/dist/{ports → expressions/network/ports}/index.d.ts +1 -1
  143. package/dist/expressions/network/ports/index.d.ts.map +1 -0
  144. package/dist/expressions/network/ports/index.js.map +1 -0
  145. package/dist/{ports → expressions/network/ports}/map.d.ts +0 -1
  146. package/dist/expressions/network/ports/map.d.ts.map +1 -0
  147. package/dist/{ports → expressions/network/ports}/map.js +3 -2
  148. package/dist/expressions/network/ports/map.js.map +1 -0
  149. package/dist/{ports → expressions/network/ports}/set.d.ts +0 -1
  150. package/dist/expressions/network/ports/set.d.ts.map +1 -0
  151. package/dist/{ports → expressions/network/ports}/set.js +8 -7
  152. package/dist/expressions/network/ports/set.js.map +1 -0
  153. package/dist/{ports → expressions/network/ports}/tools/entry.d.ts +0 -1
  154. package/dist/expressions/network/ports/tools/entry.d.ts.map +1 -0
  155. package/dist/{ports → expressions/network/ports}/tools/entry.js +7 -5
  156. package/dist/expressions/network/ports/tools/entry.js.map +1 -0
  157. package/dist/expressions/network/ports/tools/parse.d.ts.map +1 -0
  158. package/dist/expressions/network/ports/tools/parse.js.map +1 -0
  159. package/dist/{ports → expressions/network/ports}/types.d.ts +1 -1
  160. package/dist/expressions/network/ports/types.d.ts.map +1 -0
  161. package/dist/expressions/network/ports/types.js.map +1 -0
  162. package/dist/expressions/quantities/index.d.ts +3 -0
  163. package/dist/expressions/quantities/index.d.ts.map +1 -0
  164. package/dist/{forward-exports → expressions/quantities}/index.js +2 -1
  165. package/dist/expressions/quantities/index.js.map +1 -0
  166. package/dist/expressions/quantities/reqlem/index.d.ts.map +1 -0
  167. package/dist/expressions/quantities/reqlem/index.js.map +1 -0
  168. package/dist/expressions/quantities/reqlem/objects.d.ts +24 -0
  169. package/dist/expressions/quantities/reqlem/objects.d.ts.map +1 -0
  170. package/dist/expressions/quantities/reqlem/objects.js +103 -0
  171. package/dist/expressions/quantities/reqlem/objects.js.map +1 -0
  172. package/dist/expressions/quantities/reqlem/parser.d.ts.map +1 -0
  173. package/dist/expressions/quantities/reqlem/parser.js.map +1 -0
  174. package/dist/expressions/quantities/reqlem/types.d.ts +23 -0
  175. package/dist/expressions/quantities/reqlem/types.d.ts.map +1 -0
  176. package/dist/expressions/quantities/reqlem/types.js.map +1 -0
  177. package/dist/expressions/quantities/units/index.d.ts.map +1 -0
  178. package/dist/expressions/quantities/units/index.js.map +1 -0
  179. package/dist/expressions/quantities/units/unit-parser.d.ts +29 -0
  180. package/dist/expressions/quantities/units/unit-parser.d.ts.map +1 -0
  181. package/dist/{units → expressions/quantities/units}/unit-parser.js +43 -16
  182. package/dist/expressions/quantities/units/unit-parser.js.map +1 -0
  183. package/dist/{units → expressions/quantities/units}/units.d.ts +4 -4
  184. package/dist/expressions/quantities/units/units.d.ts.map +1 -0
  185. package/dist/{units → expressions/quantities/units}/units.js +3 -4
  186. package/dist/expressions/quantities/units/units.js.map +1 -0
  187. package/dist/expressions/timezone.d.ts.map +1 -0
  188. package/dist/{timezone.js.map → expressions/timezone.js.map} +1 -1
  189. package/dist/expressions/workload/_user/index.d.ts.map +1 -0
  190. package/dist/expressions/workload/_user/index.js.map +1 -0
  191. package/dist/{cmd → expressions/workload/cmd}/cli-command.d.ts +7 -8
  192. package/dist/expressions/workload/cmd/cli-command.d.ts.map +1 -0
  193. package/dist/{cmd → expressions/workload/cmd}/cli-command.js +15 -11
  194. package/dist/expressions/workload/cmd/cli-command.js.map +1 -0
  195. package/dist/{cmd → expressions/workload/cmd}/cli-term.d.ts +7 -7
  196. package/dist/expressions/workload/cmd/cli-term.d.ts.map +1 -0
  197. package/dist/{cmd → expressions/workload/cmd}/cli-term.js +12 -12
  198. package/dist/expressions/workload/cmd/cli-term.js.map +1 -0
  199. package/dist/expressions/workload/cmd/index.d.ts +3 -0
  200. package/dist/expressions/workload/cmd/index.d.ts.map +1 -0
  201. package/dist/expressions/workload/cmd/index.js.map +1 -0
  202. package/dist/expressions/workload/cmd/types.d.ts +5 -0
  203. package/dist/expressions/workload/cmd/types.d.ts.map +1 -0
  204. package/dist/expressions/workload/cmd/types.js.map +1 -0
  205. package/dist/expressions/workload/cronjob/index.d.ts.map +1 -0
  206. package/dist/{_cronjob → expressions/workload/cronjob}/index.js +1 -1
  207. package/dist/expressions/workload/cronjob/index.js.map +1 -0
  208. package/dist/expressions/workload/cronjob/types.d.ts.map +1 -0
  209. package/dist/expressions/workload/cronjob/types.js.map +1 -0
  210. package/dist/expressions/workload/image/family.d.ts.map +1 -0
  211. package/dist/{image → expressions/workload/image}/family.js +1 -1
  212. package/dist/expressions/workload/image/family.js.map +1 -0
  213. package/dist/expressions/workload/image/index.d.ts.map +1 -0
  214. package/dist/expressions/workload/image/index.js.map +1 -0
  215. package/dist/expressions/workload/index.d.ts +5 -0
  216. package/dist/expressions/workload/index.d.ts.map +1 -0
  217. package/dist/expressions/workload/index.js +21 -0
  218. package/dist/expressions/workload/index.js.map +1 -0
  219. package/dist/index.d.ts +4 -21
  220. package/dist/index.d.ts.map +1 -1
  221. package/dist/index.js +4 -21
  222. package/dist/index.js.map +1 -1
  223. package/dist/utils/_string/index.d.ts.map +1 -0
  224. package/dist/utils/_string/index.js.map +1 -0
  225. package/dist/utils/_string/markers.d.ts.map +1 -0
  226. package/dist/utils/_string/markers.js.map +1 -0
  227. package/dist/utils/_string/post-processor.d.ts.map +1 -0
  228. package/dist/utils/_string/post-processor.js.map +1 -0
  229. package/dist/utils/_string/pretty-objects.d.ts.map +1 -0
  230. package/dist/utils/_string/pretty-objects.js.map +1 -0
  231. package/dist/utils/_string/pretty-print.d.ts.map +1 -0
  232. package/dist/utils/_string/pretty-print.js.map +1 -0
  233. package/dist/utils/_string/super-script.d.ts.map +1 -0
  234. package/dist/utils/_string/super-script.js.map +1 -0
  235. package/dist/utils/bind.d.ts +3 -0
  236. package/dist/utils/bind.d.ts.map +1 -0
  237. package/dist/{displayers → utils}/bind.js +2 -3
  238. package/dist/utils/bind.js.map +1 -0
  239. package/dist/{displayers → utils/displayers}/displayers.d.ts +2 -10
  240. package/dist/utils/displayers/displayers.d.ts.map +1 -0
  241. package/dist/{displayers → utils/displayers}/displayers.js +27 -8
  242. package/dist/utils/displayers/displayers.js.map +1 -0
  243. package/dist/utils/displayers/index.d.ts.map +1 -0
  244. package/dist/utils/displayers/index.js.map +1 -0
  245. package/dist/{_embedder → utils/embedder}/base.d.ts +2 -1
  246. package/dist/utils/embedder/base.d.ts.map +1 -0
  247. package/dist/{_embedder → utils/embedder}/base.js +8 -4
  248. package/dist/utils/embedder/base.js.map +1 -0
  249. package/dist/utils/embedder/index.d.ts.map +1 -0
  250. package/dist/utils/embedder/index.js.map +1 -0
  251. package/dist/utils/index.d.ts +5 -0
  252. package/dist/utils/index.d.ts.map +1 -0
  253. package/dist/utils/index.js +21 -0
  254. package/dist/utils/index.js.map +1 -0
  255. package/package.json +16 -16
  256. package/src/core/graph/entity.ts +35 -0
  257. package/src/core/graph/index.ts +5 -0
  258. package/src/core/graph/node.ts +139 -0
  259. package/src/core/graph/origin/entity.ts +118 -0
  260. package/src/core/graph/origin/events.ts +86 -0
  261. package/src/core/graph/origin/exporter.ts +62 -0
  262. package/src/core/graph/origin/index.ts +6 -0
  263. package/src/core/graph/origin/kind-map/index.ts +171 -0
  264. package/src/core/graph/origin/node.ts +75 -0
  265. package/src/core/graph/origin/origin-events.ts +86 -0
  266. package/src/core/graph/origin/tracker.ts +103 -0
  267. package/src/core/graph/relation.ts +17 -0
  268. package/src/core/graph/resource/api-kind/index.ts +176 -0
  269. package/src/core/graph/resource/api-kind/pluralize.ts +32 -0
  270. package/src/core/graph/resource/child.ts +26 -0
  271. package/src/core/graph/resource/entity.ts +58 -0
  272. package/src/core/graph/resource/index.ts +7 -0
  273. package/src/{graph/resource-node.ts → core/graph/resource/node.ts} +28 -40
  274. package/src/core/graph/resource/ref-key/ref-key.ts +62 -0
  275. package/src/core/graph/resource/reference/error.ts +7 -0
  276. package/src/core/graph/resource/reference/fw-ref-exports.ts +164 -0
  277. package/src/core/graph/resource/reference/fw-ref.ts +122 -0
  278. package/src/core/graph/resource/reference/index.ts +8 -0
  279. package/src/core/graph/resource/reference/refable.ts +24 -0
  280. package/src/core/graph/resource/top.ts +69 -0
  281. package/src/core/index.ts +4 -0
  282. package/src/{manifest → core/manifest}/index.ts +7 -22
  283. package/src/{tracing → core/tracing}/git.ts +20 -3
  284. package/src/{tracing → core/tracing}/traced.ts +1 -1
  285. package/src/error.ts +0 -6
  286. package/src/expressions/data-sources/index.ts +147 -0
  287. package/src/expressions/index.ts +5 -0
  288. package/src/expressions/network/index.ts +1 -0
  289. package/src/{ports → expressions/network/ports}/index.ts +1 -1
  290. package/src/{ports → expressions/network/ports}/map.ts +3 -3
  291. package/src/{ports → expressions/network/ports}/set.ts +8 -7
  292. package/src/{ports → expressions/network/ports}/tools/entry.ts +6 -4
  293. package/src/{ports → expressions/network/ports}/types.ts +1 -1
  294. package/src/expressions/quantities/index.ts +2 -0
  295. package/src/expressions/quantities/reqlem/objects.ts +107 -0
  296. package/src/expressions/quantities/reqlem/types.ts +28 -0
  297. package/src/expressions/quantities/units/unit-parser.ts +93 -0
  298. package/src/{units → expressions/quantities/units}/units.ts +4 -5
  299. package/src/{cmd → expressions/workload/cmd}/cli-command.ts +35 -31
  300. package/src/{cmd → expressions/workload/cmd}/cli-term.ts +9 -9
  301. package/src/expressions/workload/cmd/index.ts +2 -0
  302. package/src/expressions/workload/cmd/types.ts +4 -0
  303. package/src/{_cronjob → expressions/workload/cronjob}/index.ts +1 -1
  304. package/src/{image → expressions/workload/image}/family.ts +1 -1
  305. package/src/expressions/workload/index.ts +4 -0
  306. package/src/index.ts +5 -21
  307. package/src/{displayers → utils}/bind.ts +4 -4
  308. package/src/{displayers → utils/displayers}/displayers.ts +28 -20
  309. package/src/{_embedder → utils/embedder}/base.ts +9 -5
  310. package/src/utils/index.ts +4 -0
  311. package/dist/_cronjob/index.d.ts.map +0 -1
  312. package/dist/_cronjob/index.js.map +0 -1
  313. package/dist/_cronjob/types.d.ts.map +0 -1
  314. package/dist/_cronjob/types.js.map +0 -1
  315. package/dist/_embedder/base.d.ts.map +0 -1
  316. package/dist/_embedder/base.js.map +0 -1
  317. package/dist/_embedder/index.d.ts.map +0 -1
  318. package/dist/_embedder/index.js.map +0 -1
  319. package/dist/_ip/index.d.ts.map +0 -1
  320. package/dist/_ip/index.js.map +0 -1
  321. package/dist/_string/index.d.ts.map +0 -1
  322. package/dist/_string/index.js.map +0 -1
  323. package/dist/_string/markers.d.ts.map +0 -1
  324. package/dist/_string/markers.js.map +0 -1
  325. package/dist/_string/post-processor.d.ts.map +0 -1
  326. package/dist/_string/post-processor.js.map +0 -1
  327. package/dist/_string/pretty-objects.d.ts.map +0 -1
  328. package/dist/_string/pretty-objects.js.map +0 -1
  329. package/dist/_string/pretty-print.d.ts.map +0 -1
  330. package/dist/_string/pretty-print.js.map +0 -1
  331. package/dist/_string/super-script.d.ts.map +0 -1
  332. package/dist/_string/super-script.js.map +0 -1
  333. package/dist/_user/index.d.ts.map +0 -1
  334. package/dist/_user/index.js.map +0 -1
  335. package/dist/api-kind/index.d.ts +0 -45
  336. package/dist/api-kind/index.d.ts.map +0 -1
  337. package/dist/api-kind/index.js.map +0 -1
  338. package/dist/cmd/cli-command.d.ts.map +0 -1
  339. package/dist/cmd/cli-command.js.map +0 -1
  340. package/dist/cmd/cli-term.d.ts.map +0 -1
  341. package/dist/cmd/cli-term.js.map +0 -1
  342. package/dist/cmd/index.d.ts +0 -3
  343. package/dist/cmd/index.d.ts.map +0 -1
  344. package/dist/cmd/index.js.map +0 -1
  345. package/dist/cmd/types.d.ts +0 -5
  346. package/dist/cmd/types.d.ts.map +0 -1
  347. package/dist/cmd/types.js.map +0 -1
  348. package/dist/data-sources/index.d.ts.map +0 -1
  349. package/dist/data-sources/index.js.map +0 -1
  350. package/dist/displayers/bind.d.ts +0 -4
  351. package/dist/displayers/bind.d.ts.map +0 -1
  352. package/dist/displayers/bind.js.map +0 -1
  353. package/dist/displayers/displayers.d.ts.map +0 -1
  354. package/dist/displayers/displayers.js.map +0 -1
  355. package/dist/displayers/index.d.ts.map +0 -1
  356. package/dist/displayers/index.js.map +0 -1
  357. package/dist/forward-exports/delayed-exports.d.ts +0 -18
  358. package/dist/forward-exports/delayed-exports.d.ts.map +0 -1
  359. package/dist/forward-exports/delayed-exports.js +0 -115
  360. package/dist/forward-exports/delayed-exports.js.map +0 -1
  361. package/dist/forward-exports/index.d.ts +0 -2
  362. package/dist/forward-exports/index.d.ts.map +0 -1
  363. package/dist/forward-exports/index.js.map +0 -1
  364. package/dist/graph/base-node.d.ts +0 -35
  365. package/dist/graph/base-node.d.ts.map +0 -1
  366. package/dist/graph/base-node.js +0 -112
  367. package/dist/graph/base-node.js.map +0 -1
  368. package/dist/graph/base-origin-entity.d.ts +0 -19
  369. package/dist/graph/base-origin-entity.d.ts.map +0 -1
  370. package/dist/graph/base-origin-entity.js.map +0 -1
  371. package/dist/graph/dependencies.d.ts +0 -12
  372. package/dist/graph/dependencies.d.ts.map +0 -1
  373. package/dist/graph/dependencies.js.map +0 -1
  374. package/dist/graph/index.d.ts +0 -7
  375. package/dist/graph/index.d.ts.map +0 -1
  376. package/dist/graph/index.js +0 -23
  377. package/dist/graph/index.js.map +0 -1
  378. package/dist/graph/origin-node.d.ts +0 -32
  379. package/dist/graph/origin-node.d.ts.map +0 -1
  380. package/dist/graph/origin-node.js.map +0 -1
  381. package/dist/graph/relations.d.ts +0 -26
  382. package/dist/graph/relations.d.ts.map +0 -1
  383. package/dist/graph/relations.js +0 -36
  384. package/dist/graph/relations.js.map +0 -1
  385. package/dist/graph/resource-node.d.ts +0 -35
  386. package/dist/graph/resource-node.d.ts.map +0 -1
  387. package/dist/graph/resource-node.js.map +0 -1
  388. package/dist/image/family.d.ts.map +0 -1
  389. package/dist/image/family.js.map +0 -1
  390. package/dist/image/index.d.ts.map +0 -1
  391. package/dist/image/index.js.map +0 -1
  392. package/dist/kind-map/index.d.ts +0 -44
  393. package/dist/kind-map/index.d.ts.map +0 -1
  394. package/dist/kind-map/index.js +0 -125
  395. package/dist/kind-map/index.js.map +0 -1
  396. package/dist/manifest/index.d.ts +0 -46
  397. package/dist/manifest/index.d.ts.map +0 -1
  398. package/dist/manifest/index.js.map +0 -1
  399. package/dist/manifest/manifest-builder.d.ts +0 -41
  400. package/dist/manifest/manifest-builder.d.ts.map +0 -1
  401. package/dist/manifest/manifest-builder.js +0 -64
  402. package/dist/manifest/manifest-builder.js.map +0 -1
  403. package/dist/ports/error.d.ts.map +0 -1
  404. package/dist/ports/error.js.map +0 -1
  405. package/dist/ports/index.d.ts.map +0 -1
  406. package/dist/ports/index.js.map +0 -1
  407. package/dist/ports/map.d.ts.map +0 -1
  408. package/dist/ports/map.js.map +0 -1
  409. package/dist/ports/set.d.ts.map +0 -1
  410. package/dist/ports/set.js.map +0 -1
  411. package/dist/ports/tools/entry.d.ts.map +0 -1
  412. package/dist/ports/tools/entry.js.map +0 -1
  413. package/dist/ports/tools/parse.d.ts.map +0 -1
  414. package/dist/ports/tools/parse.js.map +0 -1
  415. package/dist/ports/types.d.ts.map +0 -1
  416. package/dist/ports/types.js.map +0 -1
  417. package/dist/producer/index.d.ts +0 -2
  418. package/dist/producer/index.d.ts.map +0 -1
  419. package/dist/producer/index.js.map +0 -1
  420. package/dist/producer/producer.d.ts +0 -6
  421. package/dist/producer/producer.d.ts.map +0 -1
  422. package/dist/producer/producer.js +0 -13
  423. package/dist/producer/producer.js.map +0 -1
  424. package/dist/ref-key/index.d.ts.map +0 -1
  425. package/dist/ref-key/index.js.map +0 -1
  426. package/dist/ref-key/ref-key.d.ts +0 -23
  427. package/dist/ref-key/ref-key.d.ts.map +0 -1
  428. package/dist/ref-key/ref-key.js +0 -69
  429. package/dist/ref-key/ref-key.js.map +0 -1
  430. package/dist/reference/forward-ref.d.ts +0 -22
  431. package/dist/reference/forward-ref.d.ts.map +0 -1
  432. package/dist/reference/forward-ref.js +0 -113
  433. package/dist/reference/forward-ref.js.map +0 -1
  434. package/dist/reference/index.d.ts +0 -4
  435. package/dist/reference/index.d.ts.map +0 -1
  436. package/dist/reference/index.js +0 -8
  437. package/dist/reference/index.js.map +0 -1
  438. package/dist/reference/refable.d.ts +0 -9
  439. package/dist/reference/refable.d.ts.map +0 -1
  440. package/dist/reference/refable.js.map +0 -1
  441. package/dist/resources/index.d.ts.map +0 -1
  442. package/dist/resources/index.js.map +0 -1
  443. package/dist/resources/objects.d.ts +0 -22
  444. package/dist/resources/objects.d.ts.map +0 -1
  445. package/dist/resources/objects.js +0 -97
  446. package/dist/resources/objects.js.map +0 -1
  447. package/dist/resources/parser.d.ts.map +0 -1
  448. package/dist/resources/parser.js.map +0 -1
  449. package/dist/resources/types.d.ts +0 -21
  450. package/dist/resources/types.d.ts.map +0 -1
  451. package/dist/resources/types.js.map +0 -1
  452. package/dist/timezone.d.ts.map +0 -1
  453. package/dist/tracing/git.d.ts.map +0 -1
  454. package/dist/tracing/git.js.map +0 -1
  455. package/dist/tracing/index.d.ts.map +0 -1
  456. package/dist/tracing/index.js.map +0 -1
  457. package/dist/tracing/trace.d.ts.map +0 -1
  458. package/dist/tracing/trace.js.map +0 -1
  459. package/dist/tracing/traced.d.ts.map +0 -1
  460. package/dist/tracing/traced.js +0 -6
  461. package/dist/tracing/traced.js.map +0 -1
  462. package/dist/types.d.ts +0 -7
  463. package/dist/types.d.ts.map +0 -1
  464. package/dist/types.js +0 -3
  465. package/dist/types.js.map +0 -1
  466. package/dist/units/index.d.ts.map +0 -1
  467. package/dist/units/index.js.map +0 -1
  468. package/dist/units/unit-parser.d.ts +0 -19
  469. package/dist/units/unit-parser.d.ts.map +0 -1
  470. package/dist/units/unit-parser.js.map +0 -1
  471. package/dist/units/units.d.ts.map +0 -1
  472. package/dist/units/units.js.map +0 -1
  473. package/src/api-kind/index.ts +0 -142
  474. package/src/cmd/index.ts +0 -2
  475. package/src/cmd/types.ts +0 -4
  476. package/src/data-sources/index.ts +0 -126
  477. package/src/forward-exports/delayed-exports.ts +0 -157
  478. package/src/forward-exports/index.ts +0 -1
  479. package/src/graph/base-node.ts +0 -135
  480. package/src/graph/base-origin-entity.ts +0 -44
  481. package/src/graph/dependencies.ts +0 -30
  482. package/src/graph/index.ts +0 -6
  483. package/src/graph/origin-node.ts +0 -122
  484. package/src/graph/relations.ts +0 -62
  485. package/src/kind-map/index.ts +0 -150
  486. package/src/manifest/manifest-builder.ts +0 -99
  487. package/src/producer/index.ts +0 -1
  488. package/src/producer/producer.ts +0 -18
  489. package/src/ref-key/ref-key.ts +0 -76
  490. package/src/reference/forward-ref.ts +0 -122
  491. package/src/reference/index.ts +0 -3
  492. package/src/reference/refable.ts +0 -12
  493. package/src/resources/objects.ts +0 -99
  494. package/src/resources/types.ts +0 -26
  495. package/src/types.ts +0 -13
  496. package/src/units/unit-parser.ts +0 -63
  497. /package/dist/{ref-key → core/graph/resource/ref-key}/index.d.ts +0 -0
  498. /package/dist/{ref-key → core/graph/resource/ref-key}/index.js +0 -0
  499. /package/dist/{reference → core/graph/resource/reference}/refable.js +0 -0
  500. /package/dist/{tracing → core/tracing}/index.d.ts +0 -0
  501. /package/dist/{tracing → core/tracing}/index.js +0 -0
  502. /package/dist/{tracing → core/tracing}/trace.d.ts +0 -0
  503. /package/dist/{tracing → core/tracing}/trace.js +0 -0
  504. /package/dist/{_ip → expressions/network/ip}/index.d.ts +0 -0
  505. /package/dist/{_ip → expressions/network/ip}/index.js +0 -0
  506. /package/dist/{ports → expressions/network/ports}/error.d.ts +0 -0
  507. /package/dist/{ports → expressions/network/ports}/error.js +0 -0
  508. /package/dist/{ports → expressions/network/ports}/index.js +0 -0
  509. /package/dist/{ports → expressions/network/ports}/tools/parse.d.ts +0 -0
  510. /package/dist/{ports → expressions/network/ports}/tools/parse.js +0 -0
  511. /package/dist/{_cronjob → expressions/network/ports}/types.js +0 -0
  512. /package/dist/{resources → expressions/quantities/reqlem}/index.d.ts +0 -0
  513. /package/dist/{resources → expressions/quantities/reqlem}/index.js +0 -0
  514. /package/dist/{resources → expressions/quantities/reqlem}/parser.d.ts +0 -0
  515. /package/dist/{resources → expressions/quantities/reqlem}/parser.js +0 -0
  516. /package/dist/{cmd → expressions/quantities/reqlem}/types.js +0 -0
  517. /package/dist/{units → expressions/quantities/units}/index.d.ts +0 -0
  518. /package/dist/{units → expressions/quantities/units}/index.js +0 -0
  519. /package/dist/{timezone.d.ts → expressions/timezone.d.ts} +0 -0
  520. /package/dist/{timezone.js → expressions/timezone.js} +0 -0
  521. /package/dist/{_user → expressions/workload/_user}/index.d.ts +0 -0
  522. /package/dist/{_user → expressions/workload/_user}/index.js +0 -0
  523. /package/dist/{cmd → expressions/workload/cmd}/index.js +0 -0
  524. /package/dist/{ports → expressions/workload/cmd}/types.js +0 -0
  525. /package/dist/{_cronjob → expressions/workload/cronjob}/index.d.ts +0 -0
  526. /package/dist/{_cronjob → expressions/workload/cronjob}/types.d.ts +0 -0
  527. /package/dist/{resources → expressions/workload/cronjob}/types.js +0 -0
  528. /package/dist/{image → expressions/workload/image}/family.d.ts +0 -0
  529. /package/dist/{image → expressions/workload/image}/index.d.ts +0 -0
  530. /package/dist/{image → expressions/workload/image}/index.js +0 -0
  531. /package/dist/{_string → utils/_string}/index.d.ts +0 -0
  532. /package/dist/{_string → utils/_string}/index.js +0 -0
  533. /package/dist/{_string → utils/_string}/markers.d.ts +0 -0
  534. /package/dist/{_string → utils/_string}/markers.js +0 -0
  535. /package/dist/{_string → utils/_string}/post-processor.d.ts +0 -0
  536. /package/dist/{_string → utils/_string}/post-processor.js +0 -0
  537. /package/dist/{_string → utils/_string}/pretty-objects.d.ts +0 -0
  538. /package/dist/{_string → utils/_string}/pretty-objects.js +0 -0
  539. /package/dist/{_string → utils/_string}/pretty-print.d.ts +0 -0
  540. /package/dist/{_string → utils/_string}/pretty-print.js +0 -0
  541. /package/dist/{_string → utils/_string}/super-script.d.ts +0 -0
  542. /package/dist/{_string → utils/_string}/super-script.js +0 -0
  543. /package/dist/{displayers → utils/displayers}/index.d.ts +0 -0
  544. /package/dist/{displayers → utils/displayers}/index.js +0 -0
  545. /package/dist/{_embedder → utils/embedder}/index.d.ts +0 -0
  546. /package/dist/{_embedder → utils/embedder}/index.js +0 -0
  547. /package/src/{ref-key → core/graph/resource/ref-key}/index.ts +0 -0
  548. /package/src/{tracing → core/tracing}/index.ts +0 -0
  549. /package/src/{tracing → core/tracing}/trace.ts +0 -0
  550. /package/src/{_ip → expressions/network/ip}/index.ts +0 -0
  551. /package/src/{ports → expressions/network/ports}/error.ts +0 -0
  552. /package/src/{ports → expressions/network/ports}/tools/parse.ts +0 -0
  553. /package/src/{resources → expressions/quantities/reqlem}/index.ts +0 -0
  554. /package/src/{resources → expressions/quantities/reqlem}/parser.ts +0 -0
  555. /package/src/{units → expressions/quantities/units}/index.ts +0 -0
  556. /package/src/{timezone.ts → expressions/timezone.ts} +0 -0
  557. /package/src/{_user → expressions/workload/_user}/index.ts +0 -0
  558. /package/src/{_cronjob → expressions/workload/cronjob}/types.ts +0 -0
  559. /package/src/{image → expressions/workload/image}/index.ts +0 -0
  560. /package/src/{_string → utils/_string}/index.ts +0 -0
  561. /package/src/{_string → utils/_string}/markers.ts +0 -0
  562. /package/src/{_string → utils/_string}/post-processor.ts +0 -0
  563. /package/src/{_string → utils/_string}/pretty-objects.ts +0 -0
  564. /package/src/{_string → utils/_string}/pretty-print.ts +0 -0
  565. /package/src/{_string → utils/_string}/super-script.ts +0 -0
  566. /package/src/{displayers → utils/displayers}/index.ts +0 -0
  567. /package/src/{_embedder → utils/embedder}/index.ts +0 -0
@@ -0,0 +1,62 @@
1
+ import { doddlify, seq } from "doddle"
2
+ import type { Resource_Top } from "../resource"
3
+ import { FwReference, type Resource_Core_Ref } from "../resource"
4
+ import { Origin_Entity } from "./entity"
5
+ import type { Origin_Props } from "./node"
6
+
7
+ export interface Origin_Exporter_Props extends Origin_Props {}
8
+
9
+ export abstract class Origin_Exporter<
10
+ Props extends Origin_Exporter_Props = Origin_Exporter_Props
11
+ > extends Origin_Entity<Props> {
12
+ constructor(
13
+ private readonly _parent: Origin_Entity,
14
+ name: string,
15
+ props: Props
16
+ ) {
17
+ super(name, props)
18
+
19
+ this._parent["__attach_kid__"](this)
20
+ }
21
+
22
+ protected abstract __exports__(): Iterable<Resource_Core_Ref>
23
+
24
+ protected __parent__() {
25
+ return this._parent
26
+ }
27
+
28
+ @doddlify
29
+ get resources(): Iterable<Resource_Core_Ref> {
30
+ const self = this
31
+ const boundExports = self.__binder__().bind(self.__exports__.bind(self))
32
+ const allEmitted = new Set<Resource_Core_Ref>()
33
+ const normalResources = seq(() => super.resources).cache()
34
+ return seq(function* () {
35
+ for (const em of boundExports() as Resource_Top[]) {
36
+ if (FwReference.is(em)) {
37
+ throw new Error(
38
+ `FwReference ${em} cannot be directly exported from ChildOrigin ${self.name}`
39
+ )
40
+ }
41
+ if (em instanceof Origin_Entity) {
42
+ continue
43
+ }
44
+
45
+ allEmitted.add(em)
46
+ if (em._origin.equals(self)) {
47
+ // Means it's being exported for the first time
48
+ self.__emit__("resource/exported", {
49
+ origin: self,
50
+ resource: em
51
+ })
52
+ }
53
+ yield em
54
+ }
55
+ for (const resource of normalResources) {
56
+ if (!allEmitted.has(resource)) {
57
+ yield resource
58
+ }
59
+ }
60
+ }).cache()
61
+ }
62
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./entity"
2
+ export * from "./events"
3
+ export * from "./exporter"
4
+ export * from "./kind-map"
5
+ export * from "./node"
6
+ export * from "./tracker"
@@ -0,0 +1,171 @@
1
+ import { doddlify, seq, type Seq } from "doddle"
2
+ import type { AnyCtor } from "what-are-you"
3
+ import { InstrumentsError } from "../../../../error"
4
+
5
+ import type { Resource_Ctor_Of } from "../../resource"
6
+ import { Kind } from "../../resource/api-kind"
7
+ import { RefKey } from "../../resource/ref-key"
8
+ const separator = "/"
9
+ interface NodeEntry {
10
+ kindName: string
11
+ class: AnyCtor<any>
12
+ ident: Kind.IdentParent
13
+ }
14
+ export type KindMapInput<Ks extends Resource_Ctor_Of> = Ks[]
15
+ type LookupKey = string | RefKey | AnyCtor<any> | Kind.IdentParent
16
+ export class KindMap<Kinds extends Resource_Ctor_Of = Resource_Ctor_Of> {
17
+ __KINDS__!: Kinds["prototype"]["kind"]
18
+ constructor(private _ownKinds: KindMapInput<Kinds>) {}
19
+
20
+ [Symbol.iterator]() {
21
+ return this._ownKinds[Symbol.iterator]()
22
+ }
23
+ child<Ks extends Resource_Ctor_Of = Resource_Ctor_Of>(
24
+ kinds: KindMapInput<Ks> | KindMap<Ks>
25
+ ): KindMap<Kinds | Ks> {
26
+ const ownKinds = kinds instanceof KindMap ? kinds._ownKinds : kinds
27
+ return new KindMap<Kinds | Ks>([...this._ownKinds, ...ownKinds])
28
+ }
29
+
30
+ @doddlify
31
+ private get _entriesSeq(): Seq<NodeEntry> {
32
+ return seq(this._ownKinds).map(klass => {
33
+ const kind = klass.prototype.kind
34
+ const entry: NodeEntry = {
35
+ kindName: kind.name,
36
+ class: klass,
37
+ ident: kind
38
+ }
39
+ return entry
40
+ })
41
+ }
42
+ @doddlify
43
+ private get _entriesMap(): Map<LookupKey, NodeEntry> {
44
+ return seq(this._entriesSeq)
45
+ .flatMap(entry => {
46
+ return [
47
+ [entry.kindName, entry],
48
+ [entry.class, entry],
49
+ [entry.ident.text, entry]
50
+ ] as const
51
+ })
52
+ .toMap(x => x)
53
+ .pull()
54
+ }
55
+
56
+ refKey<Kind extends Kind.IdentParent, Name extends string>(
57
+ kind: Kind,
58
+ name: Name
59
+ ): RefKey<Kind, Name> {
60
+ const trueKind = this.getKind(kind)
61
+ return new RefKey(trueKind, name) as any
62
+ }
63
+
64
+ parse(ref: string | RefKey<this["__KINDS__"]>): RefKey<this["__KINDS__"]> {
65
+ const result = this.tryParse(ref)
66
+ if (!result) {
67
+ throw new InstrumentsError(`Could not parse reference key: ${ref}`)
68
+ }
69
+ return result as any
70
+ }
71
+
72
+ tryParse(ref: unknown): RefKey<this["__KINDS__"]> | undefined {
73
+ if (typeof ref !== "string" && typeof ref !== "object") {
74
+ return undefined
75
+ }
76
+ if (ref == null) {
77
+ return undefined
78
+ }
79
+ if (ref instanceof RefKey) {
80
+ return ref
81
+ }
82
+ if (typeof ref === "object") {
83
+ return undefined
84
+ }
85
+ const [kind, name] = ref.split(separator).map(s => s.trim())
86
+ if (!kind || !name) {
87
+ return undefined
88
+ }
89
+ const ident = this.tryGetKind(kind)
90
+ if (!ident) {
91
+ return undefined
92
+ }
93
+ return this.refKey(ident, name)
94
+ }
95
+
96
+ get kinds(): Set<string> {
97
+ return this._entriesSeq
98
+ .map(x => x.kindName)
99
+ .toSet()
100
+ .pull()
101
+ }
102
+
103
+ private _unknownNameError(kind: string) {
104
+ return new InstrumentsError(`The shorthand name ${kind} is not registered`)
105
+ }
106
+ private _unknownIdentError(ident: Kind.Identifier) {
107
+ return new InstrumentsError(`The kind identifier ${ident} is not registered`)
108
+ }
109
+ private _unknownClassError(klass: Function) {
110
+ return new InstrumentsError(`The class ${klass.name} is not registered`)
111
+ }
112
+ private _convert(something: LookupKey | RefKey | Function | Kind.IdentParent) {
113
+ if (typeof something === "string") {
114
+ if (something.includes("/")) {
115
+ return this.parse(something).kind
116
+ }
117
+ return something
118
+ } else if (typeof something === "function") {
119
+ return something as AnyCtor<any>
120
+ } else if (something instanceof Kind.Identifier) {
121
+ return something.text
122
+ } else if (something instanceof RefKey) {
123
+ return something.kind.text
124
+ }
125
+ throw new InstrumentsError(`Invalid argument ${something}`)
126
+ }
127
+ private _getEntry(key: LookupKey) {
128
+ const entry = this._tryGetEntry(key)
129
+ if (!entry) {
130
+ if (typeof key === "string") {
131
+ throw this._unknownNameError(key)
132
+ } else if (key instanceof Kind.Identifier) {
133
+ throw this._unknownIdentError(key)
134
+ } else if (typeof key === "function") {
135
+ throw this._unknownClassError(key)
136
+ }
137
+ }
138
+ return entry!
139
+ }
140
+ private _tryGetEntry(key: LookupKey): NodeEntry | undefined {
141
+ const converted = this._convert(key)
142
+ return this._entriesMap.get(converted)
143
+ }
144
+
145
+ tryGetKind(kindOrIdent: LookupKey): any {
146
+ return this._tryGetEntry(kindOrIdent)?.ident as Kinds | undefined
147
+ }
148
+
149
+ getKind(kindOrClass: LookupKey): this["__KINDS__"] {
150
+ return this._getEntry(kindOrClass).ident
151
+ }
152
+
153
+ tryGetClass(kindOrIdent: LookupKey): AnyCtor<any> | undefined {
154
+ return this._tryGetEntry(kindOrIdent)?.class
155
+ }
156
+
157
+ getClass(refKey: RefKey): AnyCtor<any>
158
+ getClass<F extends AnyCtor<any>>(klass: F): F
159
+ getClass(kind: string): AnyCtor<any>
160
+ getClass(ident: Kind.IdentParent): AnyCtor<any>
161
+ getClass<T extends AnyCtor<any> | string>(
162
+ kindOrClass: T
163
+ ): T extends AnyCtor<any> ? string : AnyCtor<any>
164
+ getClass(kindOrClass: LookupKey): AnyCtor<any> | string {
165
+ return this._getEntry(kindOrClass).class
166
+ }
167
+
168
+ has(kindOrClass: LookupKey): boolean {
169
+ return this._entriesMap.has(kindOrClass as any)
170
+ }
171
+ }
@@ -0,0 +1,75 @@
1
+ import { Meta } from "@k8ts/metadata"
2
+ import chalk from "chalk"
3
+ import { seq, Seq } from "doddle"
4
+ import { displayers } from "../../../utils/displayers"
5
+ import { Node } from "../node"
6
+ import type { Resource_Core_Ref, Resource_Ctor_Of } from "../resource"
7
+ import type { Origin_Entity } from "./entity"
8
+ import { type KindMapInput } from "./kind-map"
9
+
10
+ @displayers({
11
+ simple: s => `[${s.shortFqn}]`,
12
+ prefix: s => {
13
+ return ""
14
+ },
15
+ pretty(origin, format) {
16
+ const kindName = chalk.greenBright.bold(origin.kind)
17
+ const resourceName = chalk.cyan(origin.name)
18
+ const pref = this.prefix!()
19
+
20
+ return chalk.underline(`${pref}${kindName}:${resourceName}`)
21
+ }
22
+ })
23
+ export class OriginNode extends Node<OriginNode, Origin_Entity> {
24
+ get kids() {
25
+ return seq(this.entity["__kids__"]()).map(x => x.node)
26
+ }
27
+ get meta() {
28
+ return this.entity.meta
29
+ }
30
+ get kind() {
31
+ return this.entity.kind
32
+ }
33
+ get shortFqn() {
34
+ return `${this.kind}/${this.name}`
35
+ }
36
+ get inheritedMeta(): Meta {
37
+ const self = this
38
+ return [this, ...this.ancestors]
39
+ .map(x => x.meta.clone())
40
+ .reduce((acc, meta) => acc.add(meta), Meta.make())
41
+ }
42
+ constructor(entity: Origin_Entity) {
43
+ super(entity)
44
+ }
45
+
46
+ get resourceKinds() {
47
+ return this.entity["__resource_kinds__"]()
48
+ }
49
+
50
+ get relations() {
51
+ return seq([])
52
+ }
53
+
54
+ get resources() {
55
+ return this.entity.resources
56
+ }
57
+ readonly attachedTree: Seq<Resource_Core_Ref> = seq(() => {
58
+ const self = this
59
+ const desc = self.descendants
60
+ .concatTo([this])
61
+ .map(x => x)
62
+ .concatMap(function* (x) {
63
+ yield* self.resources
64
+ for (const kid of self.kids) {
65
+ yield* kid.resources
66
+ }
67
+ })
68
+ return desc
69
+ }).cache()
70
+ }
71
+
72
+ export interface Origin_Props<KindedCtors extends Resource_Ctor_Of = Resource_Ctor_Of> {
73
+ meta?: Meta.Input
74
+ kinds?: KindMapInput<KindedCtors>
75
+ }
@@ -0,0 +1,86 @@
1
+ import { doddle } from "doddle"
2
+ import EventEmitter from "eventemitter3"
3
+ import type { Manifest } from "../../manifest"
4
+ import type { Resource_Entity, Resource_Top } from "../resource"
5
+ import type { Origin_Entity } from "./entity"
6
+
7
+ export function OriginEventsEmitter() {
8
+ const em = new EventEmitter<Origin_EventMap>()
9
+ return em
10
+ }
11
+
12
+ export function SubscribeFn(self: Origin_Entity, em: EventEmitter<Origin_EventMap>) {
13
+ function on<EventKey extends keyof Origin_EventMap>(
14
+ event: EventKey,
15
+ listener: (data: Origin_EventMap[EventKey]) => void
16
+ ): void
17
+ function on(
18
+ listener: <EventKey extends keyof Origin_EventMap>(
19
+ event: EventKey,
20
+ data: Origin_EventMap[EventKey]
21
+ ) => void
22
+ ): void
23
+ function on<
24
+ K extends keyof Origin_EventMap,
25
+ HandledMap extends {
26
+ [key2 in K]: (data: Origin_EventMap[key2]) => void
27
+ }
28
+ >(handlers: HandledMap): void
29
+ function on(a?: any, b?: any) {
30
+ if (typeof a === "function") {
31
+ for (const eventName of originEventNames) {
32
+ em.on(eventName as any, (data: any) => a(eventName as any, data))
33
+ }
34
+ } else if (typeof a === "string") {
35
+ return em.on(a as any, b)
36
+ } else if (typeof a === "object") {
37
+ const handlers = a as any
38
+ for (const key of Object.keys(handlers) as (keyof Origin_EventMap)[]) {
39
+ em.on(key, handlers[key]!)
40
+ }
41
+ }
42
+ }
43
+ return on
44
+ }
45
+ export interface Origin_EventMap {
46
+ "resource/exported": {
47
+ readonly origin: Origin_Entity
48
+ readonly resource: Resource_Top
49
+ }
50
+ "resource/attached": {
51
+ readonly origin: Origin_Entity
52
+ readonly resource: Resource_Entity
53
+ }
54
+ "resource/manifested": {
55
+ readonly origin: Origin_Entity
56
+ readonly manifest: Manifest
57
+ readonly resource: Resource_Top
58
+ }
59
+ "resource/loaded": {
60
+ readonly origin: Origin_Entity
61
+ readonly resource: Resource_Top
62
+ }
63
+ "resource/serialized": {
64
+ readonly origin: Origin_Entity
65
+ readonly resource: Resource_Top
66
+ readonly manifest: Manifest
67
+ content: string
68
+ }
69
+ "origin/attached": {
70
+ readonly origin: Origin_Entity
71
+ readonly child: Origin_Entity
72
+ }
73
+ }
74
+
75
+ export const originEventNames = doddle(() => {
76
+ // Forces type checking the event names basded on the Origin_EventMap
77
+ const obj = {
78
+ "resource/exported": true,
79
+ "resource/attached": true,
80
+ "resource/manifested": true,
81
+ "resource/loaded": true,
82
+ "resource/serialized": true,
83
+ "origin/attached": true
84
+ } satisfies Record<keyof Origin_EventMap, true>
85
+ return Object.keys(obj) as (keyof Origin_EventMap)[]
86
+ }).pull()
@@ -0,0 +1,103 @@
1
+ import { AsyncLocalStorage } from "async_hooks"
2
+ import { doddle, pull, type Doddle, type MaybeDoddle } from "doddle"
3
+ import { isIterable } from "what-are-you"
4
+ import type { Origin_Entity } from "./entity"
5
+
6
+ export interface OriginStackBinder {
7
+ run<T>(callback: () => T): T
8
+ bind<F extends (...args: any[]) => any>(fn: F): F
9
+ }
10
+
11
+ export class _OriginContextTracker {
12
+ private readonly _store: AsyncLocalStorage<Origin_Entity | undefined>
13
+ constructor() {
14
+ this._store = new AsyncLocalStorage<Origin_Entity | undefined>()
15
+ }
16
+
17
+ get current(): Origin_Entity | undefined {
18
+ return this._store.getStore()
19
+ }
20
+
21
+ disposableOriginModifier(origin: Origin_Entity): Disposable {
22
+ const curOrigin = this._store.getStore()
23
+ this._store.enterWith(origin)
24
+ return {
25
+ [Symbol.dispose]: () => {
26
+ this._store.enterWith(curOrigin)
27
+ }
28
+ }
29
+ }
30
+
31
+ binder(origin: MaybeDoddle<Origin_Entity>): OriginStackBinder {
32
+ const runner = this
33
+ return {
34
+ run<T>(callback: () => T): T {
35
+ const orig = doddle.is(origin) ? origin.pull() : origin
36
+ return runner._run(orig, callback)
37
+ },
38
+ bind<F extends (...args: any[]) => any>(fn: F): F {
39
+ const boundOrigin = origin
40
+ return runner._bind(boundOrigin as Doddle<Origin_Entity>, fn)
41
+ }
42
+ }
43
+ }
44
+
45
+ private _run<T>(origin: Origin_Entity, callback: () => T): T {
46
+ return this._store.run(origin, callback)
47
+ }
48
+
49
+ private _bindIterator(
50
+ boundOrigin: Doddle<Origin_Entity> | Origin_Entity,
51
+ iterator: Iterator<any>
52
+ ): Iterator<any> {
53
+ const runner = this
54
+ return {
55
+ next() {
56
+ const origin = doddle.is(boundOrigin) ? boundOrigin.pull() : boundOrigin
57
+ return runner._run(origin, () => iterator.next())
58
+ },
59
+ return(value?: any) {
60
+ if (iterator.return) {
61
+ return iterator.return(value)
62
+ }
63
+ return {
64
+ done: true,
65
+ value
66
+ }
67
+ },
68
+ throw(err?: any) {
69
+ if (iterator.throw) {
70
+ return iterator.throw(err)
71
+ }
72
+ throw err
73
+ }
74
+ }
75
+ }
76
+
77
+ private _bindIterable<It extends Iterable<any>>(
78
+ boundOrigin: Doddle<Origin_Entity> | Origin_Entity,
79
+ iterable: It
80
+ ) {
81
+ const iterator = iterable[Symbol.iterator]()
82
+ const runner = this
83
+ const boundIterator: Iterable<any> = {
84
+ [Symbol.iterator]() {
85
+ return runner._bindIterator(boundOrigin, iterator)
86
+ }
87
+ }
88
+ return boundIterator
89
+ }
90
+
91
+ private _bind<F extends (...args: any[]) => any>(origin: Doddle<Origin_Entity>, fn: F): F {
92
+ const self = this
93
+ return function boundRunFunction(this: any, ...args: any[]) {
94
+ const result = self._run(pull(origin), () => fn.apply(this, args))
95
+ if (isIterable(result)) {
96
+ return self._bindIterable(origin, result)
97
+ }
98
+ return result
99
+ } as F
100
+ }
101
+ }
102
+
103
+ export const OriginContextTracker = new _OriginContextTracker()
@@ -0,0 +1,17 @@
1
+ import { pretty } from "../../utils/_string"
2
+ import { displayers } from "../../utils/displayers"
3
+ import type { Node } from "./node"
4
+
5
+ @displayers({
6
+ simple: s => [s.why, "-->", s.needed],
7
+ pretty: (dep, format) => {
8
+ const neededFmt = pretty`${["lowkey", dep.needed]}`
9
+ return [dep.why, neededFmt].join("➜ ")
10
+ }
11
+ })
12
+ export class Relation<_Node extends Node<_Node>> {
13
+ constructor(
14
+ readonly why: string,
15
+ readonly needed: _Node
16
+ ) {}
17
+ }
@@ -0,0 +1,176 @@
1
+ import { InstrumentsError } from "../../../../error"
2
+ import { bind_own_methods } from "../../../../utils"
3
+ import { displayers } from "../../../../utils/displayers"
4
+ import { RefKey } from "../ref-key"
5
+ import { pluralize } from "./pluralize"
6
+
7
+ export type Kind<
8
+ GroupName extends string = string,
9
+ Version extends string = string,
10
+ Name extends string = string
11
+ > = Kind.Kind<GroupName, Version, Name>
12
+ export namespace Kind {
13
+ export interface IdentParent {
14
+ text: string
15
+ name: string
16
+ dns: string
17
+ parent: IdentParent | null
18
+ equals(other: any): boolean
19
+ }
20
+ type _alphabeta = "alpha" | "beta" | ""
21
+ type _subversion = `${_alphabeta}${number}` | ""
22
+ type _version = `v${number}${_subversion | ""}`
23
+ @displayers({
24
+ simple: self => self.text
25
+ })
26
+ @bind_own_methods()
27
+ export abstract class Identifier<
28
+ Name extends string = string,
29
+ Parent extends IdentParent | null = IdentParent | null
30
+ > implements IdentParent
31
+ {
32
+ constructor(
33
+ readonly name: Name,
34
+ readonly parent: Parent
35
+ ) {}
36
+
37
+ get full(): IdentParent[] {
38
+ const parts: IdentParent[] = []
39
+ let curr: IdentParent | null = this
40
+ while (curr) {
41
+ parts.unshift(curr)
42
+ curr = curr.parent
43
+ }
44
+ return parts.filter(x => x.name)
45
+ }
46
+
47
+ get text(): string {
48
+ return this.full.map(p => p.name).join("/") as any
49
+ }
50
+
51
+ get dns(): string {
52
+ return this.full
53
+ .map(x => x.name)
54
+ .filter(Boolean)
55
+ .join(".")
56
+ }
57
+
58
+ abstract child(name: string): Identifier<
59
+ string,
60
+ {
61
+ name: Name
62
+ } & IdentParent
63
+ >
64
+
65
+ equals(other: any) {
66
+ if (typeof other !== "object" || !other) {
67
+ return false
68
+ }
69
+ if (!(other instanceof Identifier)) {
70
+ return false
71
+ }
72
+ return this.text === other.text
73
+ }
74
+ }
75
+ @bind_own_methods()
76
+ export class Group<const _Group extends string = string> extends Identifier<_Group, null> {
77
+ constructor(override name: _Group) {
78
+ super(name, null)
79
+ }
80
+ version<Version extends _version>(apiVersion: Version) {
81
+ return new Version(apiVersion, this)
82
+ }
83
+
84
+ child(name: string): Version<_Group, string> {
85
+ if (!name.startsWith("v")) {
86
+ throw new InstrumentsError(
87
+ `Invalid version name "${name}". Version name must start with "v".`
88
+ )
89
+ }
90
+ return this.version(name as any) as any
91
+ }
92
+ }
93
+ @bind_own_methods()
94
+ export class Version<
95
+ const _Group extends string = string,
96
+ const _Version extends string = string
97
+ > extends Identifier<_Version, Kind.Group<_Group>> {
98
+ kind<_Kind extends string>(kind: _Kind) {
99
+ return new Kind(kind, this as Version<_Group, _Version>)
100
+ }
101
+
102
+ __FORMAT__!: _Version
103
+
104
+ get group() {
105
+ return this.parent
106
+ }
107
+
108
+ child(name: string): Kind<_Group, _Version, string> {
109
+ return this.kind(name)
110
+ }
111
+ }
112
+ @bind_own_methods()
113
+ export class Kind<
114
+ const _Group extends string = string,
115
+ const _Version extends string = string,
116
+ const _Kind extends string = string
117
+ > extends Identifier<_Kind, Version<_Group, _Version>> {
118
+ constructor(name: _Kind, parent: Version<_Group, _Version>) {
119
+ super(name, parent)
120
+ }
121
+
122
+ refKey<Name extends string>(name: Name) {
123
+ return new RefKey<this, Name>(this as any, name)
124
+ }
125
+
126
+ get plural() {
127
+ return pluralize(this.name.toLowerCase())
128
+ }
129
+ get version() {
130
+ return this.parent
131
+ }
132
+
133
+ get group() {
134
+ return this.parent.parent
135
+ }
136
+
137
+ subkind<SubKind extends string>(subkind: SubKind) {
138
+ return new SubKind(subkind, this)
139
+ }
140
+
141
+ child<Name extends string>(name: Name): SubKind<Name, this> {
142
+ return this.subkind(name)
143
+ }
144
+ }
145
+
146
+ @bind_own_methods()
147
+ export class SubKind<
148
+ Name extends string = string,
149
+ Parent extends IdentParent = IdentParent
150
+ > extends Identifier<Name, Parent> {
151
+ constructor(name: Name, parent: Parent) {
152
+ super(name, parent)
153
+ }
154
+ subkind<_SubKind2 extends string>(subkind: _SubKind2): SubKind<_SubKind2, this> {
155
+ return new SubKind(subkind, this)
156
+ }
157
+
158
+ child<Name extends string>(name: Name) {
159
+ return this.subkind(name)
160
+ }
161
+ }
162
+
163
+ export function group<ApiGroup extends string>(apiGroup: ApiGroup) {
164
+ return new Group(apiGroup)
165
+ }
166
+
167
+ export function version<ApiVersion extends _version>(apiVersion: ApiVersion) {
168
+ return new Version(apiVersion, group(""))
169
+ }
170
+ }
171
+ export function kinded(kind: Kind.Identifier) {
172
+ return <T extends abstract new (...args: any[]) => object>(ctor: T) => {
173
+ ctor.prototype.kind = kind
174
+ return ctor
175
+ }
176
+ }