@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,32 @@
1
+ type _Alpha_Beta = "alpha" | "beta"
2
+ type _Sub_Version = `${_Alpha_Beta}${number}`
3
+ type Version = `v${number}${_Sub_Version | ""}`
4
+
5
+ export type _Group = string
6
+ export type _Slash<A extends string, B extends string> = `${A}/${B}`
7
+ export type _Group_Version<Group extends string = string, Vers extends string = string> =
8
+ | _Slash<Group, Vers>
9
+ | Version
10
+
11
+ type _Word_Plural_Map = {
12
+ y: "ies"
13
+ s: "es"
14
+ ch: "ches"
15
+ sh: "es"
16
+ z: "zes"
17
+ ro: "es"
18
+ x: "es"
19
+ }
20
+
21
+ export type Pluralize<S extends string> = S extends `${infer K extends keyof _Word_Plural_Map}`
22
+ ? `${K}${_Word_Plural_Map[K]}`
23
+ : `${S}s`
24
+ export function pluralize<S extends string>(word: S): Pluralize<S> {
25
+ if (["s", "sh", "ch", "x", "z", "ro"].some(suffix => word.endsWith(suffix))) {
26
+ return `${word}es` as Pluralize<S>
27
+ }
28
+ if (word.endsWith("y")) {
29
+ return `${word.slice(0, -1)}ies` as Pluralize<S>
30
+ }
31
+ return `${word}s` as Pluralize<S>
32
+ }
@@ -0,0 +1,26 @@
1
+ import { Resource_Entity } from "./entity"
2
+
3
+ export abstract class Resource_Child<Props extends object = object> extends Resource_Entity<
4
+ string,
5
+ Props
6
+ > {
7
+ #parent: Resource_Entity
8
+ constructor(parent: Resource_Entity, name: string, props: Props) {
9
+ super(name, props)
10
+ this.#parent = parent
11
+ }
12
+
13
+ protected __parent__(): Resource_Entity {
14
+ return this.#parent
15
+ }
16
+
17
+ protected __origin__() {
18
+ return this.__parent__()["__origin__"]()
19
+ }
20
+
21
+ protected abstract __submanifest__(): object
22
+
23
+ get namespace(): string | undefined {
24
+ return this.__parent__()?.namespace
25
+ }
26
+ }
@@ -0,0 +1,58 @@
1
+ import { getDeepPropertyDescriptor } from "@k8ts/metadata/util"
2
+ import { getNiceClassName } from "what-are-you"
3
+ import { displayers } from "../../../utils"
4
+ import { Entity } from "../entity"
5
+ import type { Origin_Entity } from "../origin"
6
+ import type { Kind } from "./api-kind"
7
+ import { Resource_Node } from "./node"
8
+
9
+ @displayers({
10
+ simple: s => s.node,
11
+ pretty: s => s.node
12
+ })
13
+ export abstract class Resource_Entity<
14
+ Name extends string = string,
15
+ Props extends object = object
16
+ > extends Entity<Resource_Node, Resource_Entity> {
17
+ abstract get kind(): Kind.IdentParent
18
+
19
+ with(callback: (self: this) => void) {
20
+ callback(this)
21
+ return this
22
+ }
23
+
24
+ abstract readonly namespace: string | undefined
25
+
26
+ ref() {
27
+ return {
28
+ kind: this.kind.name,
29
+ name: this.name,
30
+ namespace: this.namespace
31
+ }
32
+ }
33
+ protected constructor(
34
+ readonly name: Name,
35
+ readonly props: Props
36
+ ) {
37
+ super()
38
+
39
+ this.name = name
40
+ const desc = getDeepPropertyDescriptor(this, "kind")
41
+ if (!desc || !desc.get) {
42
+ throw new Error(
43
+ `ResourceEntity subclass ${getNiceClassName(this)} must implement the 'kind' property as a getter, but it's missing or not a getter.`
44
+ )
45
+ }
46
+ }
47
+
48
+ protected abstract __origin__(): Origin_Entity
49
+ get node(): Resource_Node {
50
+ return new Resource_Node(this.__origin__().node, this)
51
+ }
52
+
53
+ get shortFqn() {
54
+ return [this.node.origin.name, [this.kind.name, this.name].filter(Boolean).join("/")].join(
55
+ ":"
56
+ )
57
+ }
58
+ }
@@ -0,0 +1,7 @@
1
+ export * from "./api-kind"
2
+ export * from "./child"
3
+ export * from "./entity"
4
+ export * from "./node"
5
+ export * from "./ref-key"
6
+ export * from "./reference"
7
+ export * from "./top"
@@ -1,13 +1,15 @@
1
- import { MutableMeta } from "@k8ts/metadata"
1
+ import { Meta } from "@k8ts/metadata"
2
2
  import chalk from "chalk"
3
3
  import { seq } from "doddle"
4
- import { Kind } from "../api-kind"
5
- import { Displayers, displayers, PrivateCtor } from "../displayers"
6
- import { RefKey } from "../ref-key"
7
- import { TraceEmbedder } from "../tracing"
8
- import { BaseEntity, BaseNode, Formats } from "./base-node"
9
- import { Origin } from "./origin-node"
10
- import { Relations } from "./relations"
4
+ import { type AnyCtor } from "what-are-you"
5
+ import { Displayers, displayers } from "../../../utils/displayers"
6
+ import { TraceEmbedder } from "../../tracing"
7
+ import { Formats } from "../entity"
8
+ import { Node } from "../node"
9
+ import { OriginNode } from "../origin/node"
10
+ import type { Kind } from "./api-kind"
11
+ import type { Resource_Entity } from "./entity"
12
+ import { RefKey } from "./ref-key"
11
13
 
12
14
  @displayers({
13
15
  simple: s => `[${s.shortFqn}]`,
@@ -33,21 +35,23 @@ import { Relations } from "./relations"
33
35
  return text
34
36
  }
35
37
  })
36
- export class ResourceNode extends BaseNode<ResourceNode, ResourceEntity> {
37
- get relations() {
38
- return seq(this._relations.needs)
39
- }
40
-
38
+ export class Resource_Node extends Node<Resource_Node, Resource_Entity> {
41
39
  get fullFqn() {
42
40
  return [this.kind.dns, this.namespace, this.name].filter(Boolean).join("/")
43
41
  }
42
+ get key(): RefKey {
43
+ return new RefKey(this.kind, this.name)
44
+ }
45
+ get kind() {
46
+ return this.entity.kind
47
+ }
44
48
 
45
49
  get namespace() {
46
50
  return this.meta?.tryGet("namespace")
47
51
  }
48
52
 
49
53
  get trace() {
50
- return TraceEmbedder.get(this)
54
+ return TraceEmbedder.get(this.entity)
51
55
  }
52
56
 
53
57
  get isExported() {
@@ -55,25 +59,25 @@ export class ResourceNode extends BaseNode<ResourceNode, ResourceEntity> {
55
59
  }
56
60
 
57
61
  get meta() {
58
- return "meta" in this._entity ? (this._entity.meta as MutableMeta) : undefined
62
+ return "meta" in this.entity ? (this.entity.meta as Meta) : undefined
59
63
  }
60
64
 
61
65
  get isExternal() {
62
66
  return this.origins.some(x => x.name === "EXTERNAL").pull()
63
67
  }
64
68
 
65
- when<EntityType extends ResourceEntity>(
66
- type: PrivateCtor<EntityType>,
69
+ when<EntityType extends Resource_Entity>(
70
+ type: AnyCtor<EntityType>,
67
71
  fn: (entity: EntityType) => void
68
72
  ) {
69
- const entity = this._entity as EntityType
73
+ const entity = this.entity as EntityType
70
74
  if (entity instanceof type) {
71
75
  fn(entity)
72
76
  }
73
77
  }
74
78
 
75
- as<EntityType extends ResourceEntity>(type: PrivateCtor<EntityType>) {
76
- const entity = this._entity as EntityType
79
+ as<EntityType extends Resource_Entity>(type: AnyCtor<EntityType>) {
80
+ const entity = this.entity as EntityType
77
81
  if (entity instanceof type) {
78
82
  return entity
79
83
  }
@@ -85,7 +89,7 @@ export class ResourceNode extends BaseNode<ResourceNode, ResourceEntity> {
85
89
  get origins() {
86
90
  const self = this
87
91
  return seq(function* () {
88
- let current: Origin | null = self.origin
92
+ let current: OriginNode | null = self.origin
89
93
  while (current) {
90
94
  yield current
91
95
  current = current.parent
@@ -93,15 +97,7 @@ export class ResourceNode extends BaseNode<ResourceNode, ResourceEntity> {
93
97
  })
94
98
  }
95
99
 
96
- get kids() {
97
- return seq(this._relations.kids)
98
- }
99
-
100
- get parent() {
101
- return this._relations.parent()
102
- }
103
-
104
- override get shortFqn() {
100
+ get shortFqn() {
105
101
  return `${this.origin.name}:${this.key}`
106
102
  }
107
103
 
@@ -112,22 +108,14 @@ export class ResourceNode extends BaseNode<ResourceNode, ResourceEntity> {
112
108
  format(format: Formats) {
113
109
  return Displayers.get(this).pretty(format)
114
110
  }
115
- private get _relations() {
116
- return Relations.get(this._entity)
117
- }
118
111
 
119
112
  hasKind(kind: Kind.Identifier) {
120
113
  return this.kind.equals(kind)
121
114
  }
122
115
  constructor(
123
- readonly origin: Origin,
124
- readonly entity: ResourceEntity,
125
- readonly key: RefKey
116
+ readonly origin: OriginNode,
117
+ readonly entity: Resource_Entity
126
118
  ) {
127
119
  super(entity)
128
120
  }
129
121
  }
130
- export interface MetadataEntity extends BaseEntity<ResourceNode> {
131
- meta: MutableMeta
132
- }
133
- export interface ResourceEntity extends BaseEntity<ResourceNode> {}
@@ -0,0 +1,62 @@
1
+ import { InstrumentsError } from "../../../../error"
2
+ import type { Kind } from "../api-kind"
3
+
4
+ export type RefKey_Input = RefKey | RefKey["string"]
5
+ export type RefKey_sFormat<Kind extends string, Name extends string> = `${Kind}/${Name}`
6
+ const separator = "/"
7
+ export interface RefKey_Parsed {
8
+ kind: string
9
+ name: string
10
+ }
11
+
12
+ export function parse(ref: string) {
13
+ const result = tryParse(ref)
14
+ if (!result) {
15
+ throw new InstrumentsError(`Could not parse reference key: ${ref}`)
16
+ }
17
+ return result
18
+ }
19
+
20
+ export function tryParse(ref: string): RefKey_Parsed | undefined {
21
+ if (typeof ref !== "string") {
22
+ return undefined
23
+ }
24
+ if (ref == null) {
25
+ return undefined
26
+ }
27
+ if (typeof ref === "object") {
28
+ return undefined
29
+ }
30
+ const [kind, name] = ref.split(separator).map(s => s.trim())
31
+ if (!kind || !name) {
32
+ return undefined
33
+ }
34
+ return {
35
+ kind,
36
+ name
37
+ }
38
+ }
39
+ export class RefKey<K extends Kind.IdentParent = Kind.IdentParent, Name extends string = string> {
40
+ constructor(
41
+ readonly kind: K,
42
+ readonly name: Name
43
+ ) {}
44
+
45
+ get string(): RefKey_sFormat<K["name"], Name> {
46
+ return [this.kind.name, this.name].join(separator) as RefKey_sFormat<K["name"], Name>
47
+ }
48
+
49
+ equals(other: RefKey): boolean {
50
+ if (other == null) {
51
+ return false
52
+ }
53
+ if (typeof other !== "object") {
54
+ return false
55
+ }
56
+ return this.kind.equals(other.kind) && this.name === other.name
57
+ }
58
+
59
+ toString() {
60
+ return this.string
61
+ }
62
+ }
@@ -0,0 +1,7 @@
1
+ import { InstrumentsError } from "../../../../error"
2
+
3
+ export class ProxyOperationError extends InstrumentsError {
4
+ constructor(message: string, details: Record<string, any> = {}) {
5
+ super(message, details)
6
+ }
7
+ }
@@ -0,0 +1,164 @@
1
+ import { seq } from "doddle"
2
+ import type { Resource_Core_Ref } from "."
3
+ import { FwReference } from "."
4
+ import type { Origin_Exporter } from "../../origin"
5
+ import { ProxyOperationError } from "./error"
6
+
7
+ export type FwRef_Exports_ByKey<Exports extends Resource_Core_Ref = Resource_Core_Ref> = {
8
+ [E in Exports as `${E["kind"]["name"]}/${E["name"]}`]: FwReference<E>
9
+ }
10
+
11
+ export type FwRef_Exports<Exported extends Resource_Core_Ref = Resource_Core_Ref> =
12
+ FxRef_Exports_Proxied & FwRef_Exports_ByKey<Exported>
13
+
14
+ export type FwRef_Exports_Brand = FxRef_Exports_Proxied
15
+
16
+ export function FwRef_Exports<Exported extends Resource_Core_Ref>(
17
+ entity: Origin_Exporter
18
+ ): FwRef_Exports<Exported> {
19
+ const proxied = new FxRef_Exports_Proxied(entity)
20
+ const handler = new FwRef_Exports_Handler(proxied)
21
+ return new Proxy(proxied, handler) as any
22
+ }
23
+
24
+ export class FxRef_Exports_Proxied {
25
+ #entity: Origin_Exporter
26
+ constructor(entity: Origin_Exporter) {
27
+ this.#entity = entity
28
+ }
29
+
30
+ __entity__(act?: (entity: Origin_Exporter) => any): Origin_Exporter {
31
+ return this.#entity as any
32
+ }
33
+ }
34
+
35
+ class FwRef_Exports_Handler<Entity extends Origin_Exporter> implements ProxyHandler<Entity> {
36
+ constructor(private readonly _subject: FxRef_Exports_Proxied) {}
37
+
38
+ get entity() {
39
+ return this._subject["__entity__"]()
40
+ }
41
+ get node() {
42
+ return this.entity.node
43
+ }
44
+ get resourceKinds() {
45
+ return this.node.resourceKinds
46
+ }
47
+
48
+ #createImmutableError(action: string) {
49
+ return new ProxyOperationError(
50
+ `Tried to ${action} an the exports constructs of ${this.entity}, but it is immutable.`
51
+ )
52
+ }
53
+
54
+ defineProperty(_: object, property: string | symbol, __: PropertyDescriptor): boolean {
55
+ throw this.#createImmutableError(`define property ${String(property)} on`)
56
+ }
57
+
58
+ deleteProperty(_: object, property: string | symbol): boolean {
59
+ throw this.#createImmutableError(`delete property ${String(property)} from`)
60
+ }
61
+
62
+ getPrototypeOf(_: Entity): object | null {
63
+ const r = Reflect.getPrototypeOf(this.entity)
64
+ return r
65
+ }
66
+
67
+ get exported() {
68
+ return seq(this.entity.resources)
69
+ }
70
+
71
+ #isValidReferant(prop: PropertyKey) {
72
+ return this.resourceKinds.tryParse(prop as string) != null
73
+ }
74
+
75
+ get(target: any, property: string | symbol): any {
76
+ const key = property as string
77
+ if (key === "constructor") {
78
+ return this._subject.__entity__().constructor
79
+ }
80
+ if (Reflect.has(this._subject, key)) {
81
+ const x = Reflect.get(this._subject, property)
82
+ if (typeof x === "function") {
83
+ return x.bind(this._subject)
84
+ }
85
+ return x
86
+ }
87
+
88
+ const resourceKinds = this.resourceKinds
89
+ const refKey = resourceKinds.tryParse(key)
90
+ const clazz = resourceKinds.tryGetClass(key)
91
+ if (refKey == null) {
92
+ return undefined
93
+ }
94
+ return FwReference({
95
+ class: clazz,
96
+ key: refKey,
97
+ origin: this.entity,
98
+ namespace: this.entity.meta.tryGet("namespace"),
99
+ resolver: this.exported
100
+ .first(exp => exp.node.key.equals(refKey))
101
+ .map(x => {
102
+ if (x == null) {
103
+ throw new ProxyOperationError(
104
+ `Failed to resolve forward reference to ${refKey} in ${this.entity}.`
105
+ )
106
+ }
107
+ return x
108
+ })
109
+ })
110
+ }
111
+
112
+ has(_: Entity, p: string | symbol): boolean {
113
+ if (Reflect.has(this.entity, p)) {
114
+ return true
115
+ }
116
+ if (!this.#isValidReferant(p)) {
117
+ return false
118
+ }
119
+ return true
120
+ }
121
+
122
+ isExtensible(target: Entity): boolean {
123
+ return false
124
+ }
125
+
126
+ preventExtensions(target: Entity): boolean {
127
+ return true
128
+ }
129
+
130
+ ownKeys(target: Entity): ArrayLike<string | symbol> {
131
+ throw new ProxyOperationError(
132
+ `Cannot list all keys of a dynamic exports construct for ${this.entity}.`
133
+ )
134
+ }
135
+
136
+ set(target: Entity, p: string | symbol, newValue: any, receiver: any): boolean {
137
+ throw this.#createImmutableError(`set property ${String(p)} on`)
138
+ }
139
+
140
+ setPrototypeOf(target: Entity, v: any): boolean {
141
+ throw this.#createImmutableError(`set prototype of`)
142
+ }
143
+
144
+ _tryTargetDescriptor(p: PropertyKey) {
145
+ return Object.getOwnPropertyDescriptor(this.entity, p)
146
+ }
147
+
148
+ getOwnPropertyDescriptor(target: Entity, p: string | symbol): PropertyDescriptor | undefined {
149
+ const desc = this._tryTargetDescriptor(p)
150
+ if (desc) {
151
+ return desc
152
+ }
153
+ const value = this.get(this.entity, p)
154
+ if (value == null) {
155
+ return undefined
156
+ }
157
+ return {
158
+ configurable: false,
159
+ enumerable: true,
160
+ value,
161
+ writable: false
162
+ }
163
+ }
164
+ }
@@ -0,0 +1,122 @@
1
+ import type { Doddle } from "doddle"
2
+ import type { AnyCtor } from "what-are-you"
3
+ import type { RefKey } from "../ref-key"
4
+ import { ProxyOperationError } from "./error"
5
+ import type { Resource_Core_Ref } from "./refable"
6
+
7
+ export type FwReference<T extends Resource_Core_Ref = Resource_Core_Ref> = FwReference_Proxied<T> &
8
+ T
9
+ export function FwReference<Referenced extends Resource_Core_Ref>(
10
+ props: FwReference_Props<Referenced>
11
+ ): FwReference<Referenced> {
12
+ const core = new FwReference_Proxied(props)
13
+ return new Proxy(core, new FwRef_Handler(core)) as FwReference<Referenced>
14
+ }
15
+ export namespace FwReference {
16
+ export function is(obj: any): obj is FwReference {
17
+ return FwReference_Proxied.is(obj)
18
+ }
19
+ }
20
+ export interface FwReference_Props<Referenced extends Resource_Core_Ref> {
21
+ readonly class?: AnyCtor<Referenced>
22
+ readonly key: RefKey
23
+ readonly namespace?: string
24
+ readonly origin: object
25
+ readonly resolver: Doddle<Referenced>
26
+ }
27
+
28
+ class FwReference_Proxied<To extends Resource_Core_Ref> {
29
+ readonly #props: FwReference_Props<To>
30
+ constructor(props: FwReference_Props<To>) {
31
+ this.#props = props
32
+ }
33
+
34
+ static is(obj: any): obj is FwReference {
35
+ return obj && typeof obj === "object" && "__reference_props__" in obj
36
+ }
37
+
38
+ protected __pull__() {
39
+ return this.#props.resolver.pull()
40
+ }
41
+
42
+ protected __reference_props__() {
43
+ return this.#props
44
+ }
45
+ }
46
+
47
+ class FwRef_Handler<T extends Resource_Core_Ref> implements ProxyHandler<T> {
48
+ get _props() {
49
+ return this._subject["__reference_props__"]()
50
+ }
51
+ constructor(private readonly _subject: FwReference_Proxied<T>) {}
52
+
53
+ get(target: T, prop: PropertyKey) {
54
+ const { _props, _subject } = this
55
+ if (prop === "constructor") {
56
+ return this._props.class
57
+ }
58
+ if (Reflect.has(_subject, prop)) {
59
+ return Reflect.get(_subject, prop)
60
+ }
61
+ const resource = _subject["__pull__"]() as any
62
+ const result = Reflect.get(resource, prop)
63
+ if (typeof result === "function") {
64
+ return result.bind(resource)
65
+ }
66
+ return result
67
+ }
68
+ getPrototypeOf(target: T) {
69
+ const Resource_Top = require("../top").Resource_Top
70
+ return this._props.class?.prototype ?? Resource_Top.prototype
71
+ }
72
+ has(target: T, prop: PropertyKey) {
73
+ const { _props, _subject } = this
74
+ if (Reflect.has(_subject, prop)) {
75
+ return true
76
+ }
77
+ const resource = _props.resolver.pull() as any
78
+ return Reflect.has(resource, prop)
79
+ }
80
+ getOwnPropertyDescriptor(_: T, p: string | symbol): PropertyDescriptor | undefined {
81
+ const { _subject, _props } = this
82
+ const desc = Object.getOwnPropertyDescriptor(_subject, p)
83
+ if (desc) {
84
+ desc.configurable = false
85
+ return desc
86
+ }
87
+ const resource = _props.resolver.pull() as any
88
+ const resourceDesc = Object.getOwnPropertyDescriptor(resource, p)
89
+ return resourceDesc
90
+ }
91
+ get referant() {
92
+ return this._subject["__reference_props__"]().key.string
93
+ }
94
+ #createImmutableError(action: string) {
95
+ return new ProxyOperationError(
96
+ `Tried to ${action} a forward reference to ${this.referant}, but it cannot be modified.`
97
+ )
98
+ }
99
+
100
+ defineProperty(_: any, property: string | symbol, desc: PropertyDescriptor): boolean {
101
+ throw this.#createImmutableError(`define property ${String(property)} on`)
102
+ }
103
+ deleteProperty(_: T, p: string | symbol): boolean {
104
+ throw this.#createImmutableError(`delete property ${String(p)} from`)
105
+ }
106
+ preventExtensions(): boolean {
107
+ return true
108
+ }
109
+ isExtensible(): boolean {
110
+ return false
111
+ }
112
+ set(_: T, p: string | symbol): boolean {
113
+ throw this.#createImmutableError(`set property ${String(p)} on`)
114
+ }
115
+ ownKeys(): ArrayLike<string | symbol> {
116
+ const pulled = this._props.resolver.pull() as any
117
+ return [...Reflect.ownKeys(this._subject), ...Reflect.ownKeys(pulled)]
118
+ }
119
+ setPrototypeOf(): boolean {
120
+ throw this.#createImmutableError(`set the prototype of`)
121
+ }
122
+ }
@@ -0,0 +1,8 @@
1
+ export { FwReference } from "./fw-ref"
2
+ export { FwRef_Exports, type FwRef_Exports_Brand } from "./fw-ref-exports"
3
+ export type {
4
+ Resource_Core_Ref,
5
+ Resource_Ctor_Of,
6
+ Resource_Full_Ref,
7
+ Resource_Min_Ref
8
+ } from "./refable"
@@ -0,0 +1,24 @@
1
+ import type { AnyCtor } from "what-are-you"
2
+ import type { Kind } from "../api-kind"
3
+ import type { Resource_Entity } from "../entity"
4
+ import type { Resource_Node } from "../node"
5
+
6
+ export type Resource_Min_Ref<K extends Kind.IdentParent = Kind.IdentParent> = { kind: K }
7
+ export type Resource_Ctor_Of<K extends Kind.IdentParent = Kind.IdentParent> = AnyCtor<
8
+ Resource_Core_Ref<K>
9
+ > & {
10
+ prototype: Resource_Core_Ref<K>
11
+ }
12
+ export type Resource_Core_Ref<
13
+ Kind extends Kind.IdentParent = Kind.IdentParent,
14
+ Name extends string = string
15
+ > = Resource_Min_Ref<Kind> & {
16
+ name: Name
17
+ equals(other: any): boolean
18
+ node: Resource_Node
19
+ }
20
+
21
+ export type Resource_Full_Ref<
22
+ _Kind extends Kind.IdentParent = Kind.IdentParent,
23
+ _Name extends string = string
24
+ > = Resource_Core_Ref<_Kind, _Name> & Resource_Entity<_Name>