@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.
- package/dist/_ip/index.d.ts +14 -0
- package/dist/_ip/index.d.ts.map +1 -0
- package/dist/_ip/index.js +23 -0
- package/dist/_ip/index.js.map +1 -0
- package/dist/api-kind/index.d.ts +3 -3
- package/dist/api-kind/index.d.ts.map +1 -1
- package/dist/api-kind/index.js +192 -76
- package/dist/api-kind/index.js.map +1 -1
- package/dist/cmd/cli-command.d.ts +1 -1
- package/dist/cmd/cli-command.d.ts.map +1 -1
- package/dist/cmd/cli-command.js +110 -58
- package/dist/cmd/cli-command.js.map +1 -1
- package/dist/cmd/cli-term.d.ts.map +1 -1
- package/dist/cmd/cli-term.js +77 -25
- package/dist/cmd/cli-term.js.map +1 -1
- package/dist/displayers/bind.d.ts +4 -0
- package/dist/displayers/bind.d.ts.map +1 -0
- package/dist/displayers/bind.js +33 -0
- package/dist/displayers/bind.js.map +1 -0
- package/dist/displayers/displayers.d.ts +12 -7
- package/dist/displayers/displayers.d.ts.map +1 -1
- package/dist/displayers/displayers.js +5 -7
- package/dist/displayers/displayers.js.map +1 -1
- package/dist/forward-exports/delayed-exports.d.ts +1 -1
- package/dist/forward-exports/delayed-exports.d.ts.map +1 -1
- package/dist/forward-exports/delayed-exports.js +1 -0
- package/dist/forward-exports/delayed-exports.js.map +1 -1
- package/dist/graph/base-node.d.ts +0 -1
- package/dist/graph/base-node.d.ts.map +1 -1
- package/dist/graph/base-node.js.map +1 -1
- package/dist/graph/resource-node.js +1 -1
- package/dist/ports/set.d.ts +1 -0
- package/dist/ports/set.d.ts.map +1 -1
- package/dist/ports/set.js +3 -0
- package/dist/ports/set.js.map +1 -1
- package/dist/ports/tools/entry.d.ts.map +1 -1
- package/dist/ports/tools/entry.js +5 -4
- package/dist/ports/tools/entry.js.map +1 -1
- package/dist/ports/types.d.ts +5 -5
- package/dist/ports/types.d.ts.map +1 -1
- package/dist/reference/index.d.ts +1 -1
- package/dist/reference/index.d.ts.map +1 -1
- package/dist/reference/refable.d.ts +5 -8
- package/dist/reference/refable.d.ts.map +1 -1
- package/dist/src.tsbuildinfo +1 -1
- package/dist/units/units.d.ts +1 -1
- package/package.json +4 -3
- package/src/_ip/index.ts +17 -0
- package/src/api-kind/index.ts +15 -12
- package/src/cmd/cli-command.ts +5 -1
- package/src/cmd/cli-term.ts +4 -0
- package/src/displayers/bind.ts +30 -0
- package/src/displayers/displayers.ts +22 -18
- package/src/forward-exports/delayed-exports.ts +3 -1
- package/src/graph/base-node.ts +0 -1
- package/src/graph/resource-node.ts +1 -1
- package/src/ports/set.ts +4 -0
- package/src/ports/tools/entry.ts +5 -4
- package/src/ports/types.ts +6 -6
- package/src/reference/index.ts +1 -1
- package/src/reference/refable.ts +8 -7
package/src/cmd/cli-term.ts
CHANGED
|
@@ -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:
|
|
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
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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["
|
|
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) {
|
package/src/graph/base-node.ts
CHANGED
|
@@ -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 = `${
|
|
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`)
|
package/src/ports/tools/entry.ts
CHANGED
|
@@ -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
|
}
|
package/src/ports/types.ts
CHANGED
|
@@ -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
|
}
|
package/src/reference/index.ts
CHANGED
package/src/reference/refable.ts
CHANGED
|
@@ -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:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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"]
|
|
12
|
+
Refable<Object["kind"], Name>
|