@k8ts/instruments 0.4.5 → 0.4.7

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 (61) hide show
  1. package/dist/_ip/index.d.ts +14 -0
  2. package/dist/_ip/index.d.ts.map +1 -0
  3. package/dist/_ip/index.js +23 -0
  4. package/dist/_ip/index.js.map +1 -0
  5. package/dist/api-kind/index.d.ts +3 -3
  6. package/dist/api-kind/index.d.ts.map +1 -1
  7. package/dist/api-kind/index.js +192 -76
  8. package/dist/api-kind/index.js.map +1 -1
  9. package/dist/cmd/cli-command.d.ts +1 -1
  10. package/dist/cmd/cli-command.d.ts.map +1 -1
  11. package/dist/cmd/cli-command.js +110 -58
  12. package/dist/cmd/cli-command.js.map +1 -1
  13. package/dist/cmd/cli-term.d.ts.map +1 -1
  14. package/dist/cmd/cli-term.js +77 -25
  15. package/dist/cmd/cli-term.js.map +1 -1
  16. package/dist/displayers/bind.d.ts +4 -0
  17. package/dist/displayers/bind.d.ts.map +1 -0
  18. package/dist/displayers/bind.js +33 -0
  19. package/dist/displayers/bind.js.map +1 -0
  20. package/dist/displayers/displayers.d.ts +12 -7
  21. package/dist/displayers/displayers.d.ts.map +1 -1
  22. package/dist/displayers/displayers.js +5 -7
  23. package/dist/displayers/displayers.js.map +1 -1
  24. package/dist/forward-exports/delayed-exports.d.ts +1 -1
  25. package/dist/forward-exports/delayed-exports.d.ts.map +1 -1
  26. package/dist/forward-exports/delayed-exports.js +1 -0
  27. package/dist/forward-exports/delayed-exports.js.map +1 -1
  28. package/dist/graph/base-node.d.ts +0 -1
  29. package/dist/graph/base-node.d.ts.map +1 -1
  30. package/dist/graph/base-node.js.map +1 -1
  31. package/dist/graph/resource-node.js +1 -1
  32. package/dist/ports/set.d.ts +1 -0
  33. package/dist/ports/set.d.ts.map +1 -1
  34. package/dist/ports/set.js +3 -0
  35. package/dist/ports/set.js.map +1 -1
  36. package/dist/ports/tools/entry.d.ts.map +1 -1
  37. package/dist/ports/tools/entry.js +5 -4
  38. package/dist/ports/tools/entry.js.map +1 -1
  39. package/dist/ports/types.d.ts +5 -5
  40. package/dist/ports/types.d.ts.map +1 -1
  41. package/dist/reference/index.d.ts +1 -1
  42. package/dist/reference/index.d.ts.map +1 -1
  43. package/dist/reference/refable.d.ts +5 -8
  44. package/dist/reference/refable.d.ts.map +1 -1
  45. package/dist/src.tsbuildinfo +1 -1
  46. package/dist/units/units.d.ts +1 -1
  47. package/package.json +4 -3
  48. package/src/_ip/index.ts +17 -0
  49. package/src/api-kind/index.ts +15 -12
  50. package/src/cmd/cli-command.ts +5 -1
  51. package/src/cmd/cli-term.ts +4 -0
  52. package/src/displayers/bind.ts +30 -0
  53. package/src/displayers/displayers.ts +22 -18
  54. package/src/forward-exports/delayed-exports.ts +3 -1
  55. package/src/graph/base-node.ts +0 -1
  56. package/src/graph/resource-node.ts +1 -1
  57. package/src/ports/set.ts +4 -0
  58. package/src/ports/tools/entry.ts +5 -4
  59. package/src/ports/types.ts +6 -6
  60. package/src/reference/index.ts +1 -1
  61. package/src/reference/refable.ts +8 -7
@@ -1,3 +1,4 @@
1
+ import { displayers } from "../displayers"
1
2
  import { InstrumentsError } from "../error"
2
3
  import type { CliValue } from "./types"
3
4
 
@@ -15,6 +16,9 @@ export class CliFlag {
15
16
 
16
17
  export type ValueTermJoiner = "=" | " "
17
18
 
19
+ @displayers({
20
+ simple: s => s.str("=")
21
+ })
18
22
  export class CliOptionValue {
19
23
  constructor(
20
24
  private readonly key: string,
@@ -0,0 +1,30 @@
1
+ import { List, Map } from "immutable"
2
+
3
+ export function getPrototypes(target: object) {
4
+ const prototypes = []
5
+ let proto = Object.getPrototypeOf(target)
6
+ while (proto) {
7
+ prototypes.push(proto)
8
+ proto = Object.getPrototypeOf(proto)
9
+ }
10
+ return List(prototypes)
11
+ }
12
+
13
+ export function bind_own_methods() {
14
+ return <F extends abstract new (...args: any[]) => any>(target: F) => {
15
+ for (const [key, desc] of Map(Object.getOwnPropertyDescriptors(target.prototype))) {
16
+ if (!desc.value || typeof desc.value !== "function") {
17
+ continue
18
+ }
19
+ const descValue = desc.value
20
+ delete desc.value
21
+ delete desc.writable
22
+ Object.defineProperty(target.prototype, key, {
23
+ ...desc,
24
+ get() {
25
+ return descValue.bind(this)
26
+ }
27
+ })
28
+ }
29
+ }
30
+ }
@@ -31,7 +31,7 @@ class DisplayerDecorator {
31
31
  return result
32
32
  }
33
33
  }
34
- implement(ctor: abstract new (...args: any[]) => object, input: Displayers.In) {
34
+ implement(ctor: typeof PrivateCtorExemplar, input: Displayers.In) {
35
35
  this._system.set(ctor.prototype, input)
36
36
  const decorator = this
37
37
  Object.defineProperties(ctor.prototype, {
@@ -123,25 +123,29 @@ class DisplayerDecorator {
123
123
  }
124
124
 
125
125
  get decorator() {
126
- return Object.assign(
127
- <
128
- Target extends abstract new (...args: any[]) => object,
129
- Impl extends Displayers.In<InstanceType<Target>>
130
- >(
131
- input: Impl
132
- ) => {
133
- return (ctor: Target) => {
134
- this.implement(ctor, input as any)
135
- return ctor
136
- }
137
- },
138
- {
139
- get: (target: object): Displayers.Out => {
140
- return this.get(target)
141
- }
126
+ return <Target extends AnyCtor<any>, Impl extends Displayers.In<InstanceTypeOf<Target>>>(
127
+ input: Impl
128
+ ) => {
129
+ return (ctor: Target) => {
130
+ this.implement(ctor, input as any)
142
131
  }
143
- )
132
+ }
144
133
  }
145
134
  }
135
+
136
+ export type PrivateCtor<T extends object> = typeof PrivateCtorExemplar & {
137
+ prototype: T
138
+ }
139
+
140
+ export type PublicCtor<T extends object> = abstract new (...args: any[]) => T
141
+
142
+ export type AnyCtor<T extends object> = PrivateCtor<T> | PublicCtor<T>
143
+
144
+ export type InstanceTypeOf<T extends AnyCtor<any>> =
145
+ T extends PrivateCtor<infer U> ? U : T extends PublicCtor<infer U> ? U : never
146
+ abstract class PrivateCtorExemplar {
147
+ protected constructor(...args: any[]) {}
148
+ }
149
+
146
150
  export const Displayers = new DisplayerDecorator()
147
151
  export const displayers = Displayers.decorator
@@ -1,5 +1,6 @@
1
1
  import { seq } from "doddle"
2
2
  import { ProxyOperationError } from "../error"
3
+ import { ResourceEntity } from "../graph"
3
4
  import { Origin } from "../graph/origin-node"
4
5
  import type { LiveRefable } from "../reference"
5
6
  import { ForwardRef } from "../reference"
@@ -8,7 +9,7 @@ export type FutureExports<Exps extends LiveRefable> = FutureExports.FutureExport
8
9
  export namespace FutureExports {
9
10
  export type FutureExports<Exps extends LiveRefable> = _ExportsByKey<Exps>
10
11
  type _ExportsByKey<Exports extends LiveRefable = LiveRefable> = {
11
- [E in Exports as `${E["kind"]["name"]}/${E["node"]["key"]["name"]}`]: ForwardRef<E>
12
+ [E in Exports as `${E["kind"]["name"]}/${E["name"]}`]: ForwardRef<E>
12
13
  }
13
14
  export interface Props<
14
15
  Actual extends object = object,
@@ -79,6 +80,7 @@ export namespace FutureExports {
79
80
  origin: this._props.origin,
80
81
  namespace: this._props.origin.meta.tryGet("namespace"),
81
82
  resolver: this.seq
83
+ .as<ResourceEntity>()
82
84
  .find(exp => exp.node.key.equals(refKey))
83
85
  .map(x => {
84
86
  if (x == null) {
@@ -8,7 +8,6 @@ import { Relation } from "./dependencies"
8
8
  export interface BaseEntity<Node extends BaseNode<Node>> {
9
9
  readonly node: Node
10
10
 
11
- readonly shortFqn: string
12
11
  readonly kind: Kind.Identifier
13
12
  readonly name: string
14
13
  }
@@ -19,7 +19,7 @@ import { Relations } from "./relations"
19
19
  }
20
20
  const resourceName = chalk.blueBright(resource.name)
21
21
  const mainPart = `${kindName}/${resourceName}`
22
- let originPart = `${displayers.get(resource.origin).prefix!()}`
22
+ let originPart = `${Displayers.get(resource.origin).prefix!()}`
23
23
  let text = ""
24
24
 
25
25
  text += mainPart
package/src/ports/set.ts CHANGED
@@ -54,6 +54,10 @@ export class PortSet<Names extends string = never> {
54
54
  return this._apply(map => map.filter((_, key) => name.includes(key as InNames))) as any
55
55
  }
56
56
 
57
+ get names() {
58
+ return this._map.keySeq().toArray() as Names[]
59
+ }
60
+
57
61
  get(name: Names): PortSetEntry {
58
62
  if (!this._map.has(name)) {
59
63
  throw new PortError(`Port ${name} not found`)
@@ -1,4 +1,5 @@
1
1
  import { Map } from "immutable"
2
+ import { Ip4 } from "../../_ip"
2
3
  import { PortSet } from "../set"
3
4
  import type {
4
5
  InputPortSetEntry,
@@ -13,7 +14,9 @@ function portSetEntry(name: string, value: InputPortSetEntry): PortSetEntry {
13
14
  return {
14
15
  name,
15
16
  port: value.port,
16
- protocol: value.protocol.toUpperCase() as Protocol
17
+ protocol: value.protocol.toUpperCase() as Protocol,
18
+ hostIp: value.hostIp ? new Ip4(value.hostIp) : undefined,
19
+ hostPort: value.hostPort
17
20
  }
18
21
  }
19
22
 
@@ -37,7 +40,5 @@ export function portRecordInput(
37
40
  return record.values
38
41
  }
39
42
  const inputMap = Map(record)
40
- return inputMap
41
- .map((v, k) => parsePortInput(k, v))
42
- .map((value, key) => portSetEntry(key, value))
43
+ return inputMap.map((v, k) => parsePortInput(k, v))
43
44
  }
@@ -1,3 +1,5 @@
1
+ import { Ip4, Ip4_String } from "../_ip"
2
+
1
3
  export interface PortSpecObj {
2
4
  port: Port
3
5
  protocol: Protocol
@@ -18,21 +20,19 @@ export interface PortSetEntry {
18
20
  name: string
19
21
  port: number
20
22
  protocol: Protocol
23
+ hostIp?: Ip4
24
+ hostPort?: number
21
25
  }
22
26
 
23
27
  export interface InputPortSetEntry {
24
28
  port: Port
25
29
  protocol: InputProtocol
30
+ hostIp?: Ip4_String
31
+ hostPort?: Port
26
32
  }
27
33
 
28
34
  export type InputPortSetSpec = InputPortSetEntry | InputPort | InputPortProto
29
35
 
30
- export interface InputPortMapEntry {
31
- source: Port
32
- target: Port
33
- protocol: InputProtocol
34
- }
35
-
36
36
  export type InputPortSetRecord<Names extends string = string> = {
37
37
  [K in Names]: InputPortSetSpec
38
38
  }
@@ -1,3 +1,3 @@
1
1
  export { RefKey } from "../ref-key"
2
2
  export { ForwardRef } from "./forward-ref"
3
- export { Kinded, LiveRefable } from "./refable"
3
+ export { Kinded, LiveRefable, Refable } from "./refable"
@@ -1,11 +1,12 @@
1
1
  import type { Kind } from "../api-kind"
2
- import type { RefKey } from "../ref-key"
3
2
 
4
- export type Kinded = { kind: Kind.Kind }
5
- export type Refable<Kind extends string, Name extends string> = {
6
- node: {
7
- key: RefKey<Kind, Name>
8
- }
3
+ export type Kinded<K extends Kind.IdentParent = Kind.IdentParent> = { kind: K }
4
+
5
+ export type Refable<
6
+ Kind extends Kind.IdentParent = Kind.IdentParent,
7
+ Name extends string = string
8
+ > = Kinded<Kind> & {
9
+ name: Name
9
10
  }
10
11
  export type LiveRefable<Object extends Kinded = Kinded, Name extends string = string> = Object &
11
- Refable<Object["kind"]["name"], Name>
12
+ Refable<Object["kind"], Name>