@productbrain/cli 0.1.0-beta.6435 → 0.1.0-beta.6442
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/__tests__/entry-formatter.test.js +28 -0
- package/dist/__tests__/entry-formatter.test.js.map +1 -1
- package/dist/formatters/entry.d.ts +5 -32
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +13 -15
- package/dist/formatters/entry.js.map +1 -1
- package/dist/lib/ownerLine.d.ts +62 -0
- package/dist/lib/ownerLine.d.ts.map +1 -0
- package/dist/lib/ownerLine.js +42 -0
- package/dist/lib/ownerLine.js.map +1 -0
- package/package.json +1 -1
|
@@ -79,4 +79,32 @@ describe('formatEntry — History legacy qualifier', () => {
|
|
|
79
79
|
expect(output).not.toContain('[legacy');
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
|
+
// WP-753 O5b fix round 1 (item 2): a regression test that the imported kernel formatter (ONE
|
|
83
|
+
// judged core, shared with MCP and the browser Rail) still renders the six canonical CLI
|
|
84
|
+
// sentences (ids: true, the CLI default — a terminal user pastes them into a repair command).
|
|
85
|
+
// Wording ruling revised in fix round 3 (item 7) — see kernel/organisationalAuthority/
|
|
86
|
+
// ownerLine.test.ts for the same strings pinned at the source.
|
|
87
|
+
describe('formatEntry — Owner line (WP-753 O5b, kernel-sourced formatOwnerLine)', () => {
|
|
88
|
+
it('renders all six owner kinds with the CLI-canonical strings', () => {
|
|
89
|
+
const cases = [
|
|
90
|
+
[{ kind: 'one', team: { name: 'Product Team' }, role: { name: 'Team Lead' } }, 'Owner: Team Lead in Product Team'],
|
|
91
|
+
[{ kind: 'default', team: { name: 'Product Team' } }, 'Owner: Team Lead, Product Team (default — nobody assigned)'],
|
|
92
|
+
[{ kind: 'unavailable' }, 'Owner: none — no Team Lead available'],
|
|
93
|
+
[{ kind: 'many', count: 3, truncated: false }, 'Owner: conflicting — 3 owners recorded'],
|
|
94
|
+
[{ kind: 'dangling', teamId: 't1', roleId: 'r1' }, "Owner: couldn't be resolved — the owning team or role is archived (team t1, role r1)"],
|
|
95
|
+
[{ kind: 'overflow', teamId: 't1' }, "Owner: couldn't be resolved — this team is too large to check (team t1)"],
|
|
96
|
+
];
|
|
97
|
+
for (const [owner, expected] of cases) {
|
|
98
|
+
expect(formatEntry(baseEntry({ owner }))).toContain(expected);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('dangling with both names available leads with the names, ids still appended (CLI keeps ids)', () => {
|
|
102
|
+
const output = formatEntry(baseEntry({ owner: { kind: 'dangling', teamId: 't1', roleId: 'r1', team: { name: 'Dead Team' }, role: { name: 'Dead Role' } } }));
|
|
103
|
+
expect(output).toContain("Owner: couldn't be resolved — Dead Role in Dead Team is archived (team t1, role r1)");
|
|
104
|
+
});
|
|
105
|
+
it('dangling with only the role surviving leads with the role alone (WP-753 O5b fix round 3, addendum b)', () => {
|
|
106
|
+
const output = formatEntry(baseEntry({ owner: { kind: 'dangling', teamId: 't1', roleId: 'r1', role: { name: 'Dead Role' } } }));
|
|
107
|
+
expect(output).toContain("Owner: couldn't be resolved — role Dead Role is archived (team t1, role r1)");
|
|
108
|
+
});
|
|
109
|
+
});
|
|
82
110
|
//# sourceMappingURL=entry-formatter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-formatter.test.js","sourceRoot":"","sources":["../../src/__tests__/entry-formatter.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entry-formatter.test.js","sourceRoot":"","sources":["../../src/__tests__/entry-formatter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type OwnerLine } from '../lib/ownerLine.js';
|
|
1
2
|
export interface EntryRelation {
|
|
2
3
|
direction: string;
|
|
3
4
|
type: string;
|
|
@@ -82,39 +83,11 @@ export interface EntryFromApi {
|
|
|
82
83
|
/**
|
|
83
84
|
* WP-745 slice 3 PR A: who owns this record, from `entryAuthorityOwnerships` —
|
|
84
85
|
* absent for objective | key_result | tension (data.ownerRoleId) and question
|
|
85
|
-
* (questionRoutingFacets), which own their owner elsewhere.
|
|
86
|
-
*
|
|
86
|
+
* (questionRoutingFacets), which own their owner elsewhere. `OwnerLine` (WP-753 O5b fix
|
|
87
|
+
* round 1, item 2) is kernel's ONE structural type for this, shared by MCP and the browser
|
|
88
|
+
* Rail — no local copy of the discriminated union here anymore.
|
|
87
89
|
*/
|
|
88
|
-
owner?:
|
|
89
|
-
kind: 'one';
|
|
90
|
-
team: {
|
|
91
|
-
id: string;
|
|
92
|
-
name: string;
|
|
93
|
-
};
|
|
94
|
-
role: {
|
|
95
|
-
id: string;
|
|
96
|
-
name: string;
|
|
97
|
-
};
|
|
98
|
-
} | {
|
|
99
|
-
kind: 'default';
|
|
100
|
-
team: {
|
|
101
|
-
id: string;
|
|
102
|
-
name: string;
|
|
103
|
-
};
|
|
104
|
-
} | {
|
|
105
|
-
kind: 'unavailable';
|
|
106
|
-
} | {
|
|
107
|
-
kind: 'many';
|
|
108
|
-
count: number;
|
|
109
|
-
truncated: boolean;
|
|
110
|
-
} | {
|
|
111
|
-
kind: 'dangling';
|
|
112
|
-
teamId: string;
|
|
113
|
-
roleId: string;
|
|
114
|
-
} | {
|
|
115
|
-
kind: 'overflow';
|
|
116
|
-
teamId: string;
|
|
117
|
-
};
|
|
90
|
+
owner?: OwnerLine;
|
|
118
91
|
}
|
|
119
92
|
/** Format full entry for terminal output — data fields, relations (with type labels), last 10 history events. */
|
|
120
93
|
export declare function formatEntry(entry: EntryFromApi): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/formatters/entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/formatters/entry.ts"],"names":[],"mappings":"AAMA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/F,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACxC,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC/C,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC;IACvD,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IAClD;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA4BD,iHAAiH;AACjH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAgIvD"}
|
package/dist/formatters/entry.js
CHANGED
|
@@ -4,25 +4,23 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { stripControlChars, sanitizeSingleLineField } from '../lib/strip.js';
|
|
6
6
|
import { provenanceMark } from './orient.js';
|
|
7
|
+
import { formatOwnerLine as kernelFormatOwnerLine } from '../lib/ownerLine.js'; // WP-753 O5b fix round 2 (item 1): GENERATED copy of kernel/organisationalAuthority/ownerLine.ts — a runtime `kernel/...` import is forbidden for this connector (packages/mcp-server/tsconfig.json:14-22)
|
|
7
8
|
// Review round 2: a team/role name is user-editable, so an embedded newline must never inject
|
|
8
9
|
// an extra, unprefixed terminal line (spoofing e.g. a second "Status:" line) — the OUTER
|
|
9
10
|
// stripControlChars call on the composed line preserves newlines by design (legitimate for
|
|
10
|
-
// multiline text elsewhere), so each name is
|
|
11
|
+
// multiline text elsewhere), so each name is sanitized to one line here, BEFORE handing the
|
|
12
|
+
// owner to kernel's formatOwnerLine (WP-753 O5b fix round 1, item 2) — kernel is pure and does
|
|
13
|
+
// no surface-specific sanitization; CLI/MCP keep ids (ids: true, the default) for repair commands.
|
|
11
14
|
function formatOwnerLine(owner) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
case 'dangling':
|
|
22
|
-
return `Owner: unresolved (team ${owner.teamId}, role ${owner.roleId})`;
|
|
23
|
-
case 'overflow':
|
|
24
|
-
return `Owner: unresolved — routed team ${owner.teamId} has too many membership rows to safely scan; repair its membership structure`;
|
|
25
|
-
}
|
|
15
|
+
const sanitized = owner.kind === 'one'
|
|
16
|
+
? { ...owner, team: { name: sanitizeSingleLineField(owner.team.name) }, role: { name: sanitizeSingleLineField(owner.role.name) } }
|
|
17
|
+
: owner.kind === 'default'
|
|
18
|
+
? { ...owner, team: { name: sanitizeSingleLineField(owner.team.name) } }
|
|
19
|
+
: owner.kind === 'dangling'
|
|
20
|
+
// WP-753 O5b fix round 3 (item 6): team/role nested to match the `one`/`default` kinds.
|
|
21
|
+
? { ...owner, ...(owner.team ? { team: { name: sanitizeSingleLineField(owner.team.name) } } : {}), ...(owner.role ? { role: { name: sanitizeSingleLineField(owner.role.name) } } : {}) }
|
|
22
|
+
: owner;
|
|
23
|
+
return kernelFormatOwnerLine(sanitized);
|
|
26
24
|
}
|
|
27
25
|
function sanitizeData(data) {
|
|
28
26
|
if (!data || typeof data !== 'object')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/formatters/entry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/formatters/entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-753 O5b fix round 1 (item 2): the ONE judged core for "how do we say who owns this
|
|
3
|
+
* entry" — the CLI (packages/cli/src/formatters/entry.ts), MCP
|
|
4
|
+
* (packages/mcp-server/src/tools/knowledge-helpers.ts), and the browser Rail
|
|
5
|
+
* (EntryRailPreview.svelte) each held a hand-copied switch over the same six states; the
|
|
6
|
+
* Svelte copy alone drifted with a silent `default:` arm that would print "Owner: unresolved"
|
|
7
|
+
* for a seventh state instead of failing to compile. Pure, no I/O — kernel never imports
|
|
8
|
+
* convex, so this is a structural six-kind union that convex's `EntryOwnerRead`
|
|
9
|
+
* (convex/governance/entryOwnershipRead.ts) satisfies exactly, not a copy of it.
|
|
10
|
+
*
|
|
11
|
+
* Surface-specific bits are NOT here, by design — the caller applies them: per-field name
|
|
12
|
+
* sanitization (CLI/MCP's `sanitizeSingleLineField`), the bold `**Owner:**` label (MCP), and
|
|
13
|
+
* whether raw ids are shown at all (browser Rail: never — Rail-Design-Thesis.md:278 forbids
|
|
14
|
+
* Convex `_id`s as Noise; CLI/MCP: yes, a terminal user pastes them into a repair command).
|
|
15
|
+
*/
|
|
16
|
+
export type OwnerLine = {
|
|
17
|
+
kind: 'one';
|
|
18
|
+
team: {
|
|
19
|
+
name: string;
|
|
20
|
+
};
|
|
21
|
+
role: {
|
|
22
|
+
name: string;
|
|
23
|
+
};
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'default';
|
|
26
|
+
team: {
|
|
27
|
+
name: string;
|
|
28
|
+
};
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'unavailable';
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'many';
|
|
33
|
+
count: number;
|
|
34
|
+
truncated: boolean;
|
|
35
|
+
} | {
|
|
36
|
+
kind: 'dangling';
|
|
37
|
+
teamId: string;
|
|
38
|
+
roleId: string;
|
|
39
|
+
team?: {
|
|
40
|
+
name: string;
|
|
41
|
+
};
|
|
42
|
+
role?: {
|
|
43
|
+
name: string;
|
|
44
|
+
};
|
|
45
|
+
} | {
|
|
46
|
+
kind: 'overflow';
|
|
47
|
+
teamId: string;
|
|
48
|
+
};
|
|
49
|
+
export interface FormatOwnerLineOptions {
|
|
50
|
+
/** CLI/MCP keep the raw id for repair commands (default true). The browser Rail passes
|
|
51
|
+
* `false` — Convex ids are Noise there, never Signal. */
|
|
52
|
+
ids?: boolean;
|
|
53
|
+
/** The leading label — plain `'Owner:'` (CLI, browser) or MCP's bold `'**Owner:**'`. */
|
|
54
|
+
label?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Exhaustive over the six kinds above. The `default:` arm below is not a silent catch-all —
|
|
57
|
+
* it assigns the narrowed remainder to a `never`-typed const, so a seventh kind fails to
|
|
58
|
+
* compile HERE regardless of which tsconfig's strictness flags apply at the call site
|
|
59
|
+
* (kernel's own tsconfig is red pre-existing, unrelated to this PR, so exhaustiveness cannot
|
|
60
|
+
* be left to ride on `noImplicitReturns` alone; WP-753 O5b fix round 3, addendum a). */
|
|
61
|
+
export declare function formatOwnerLine(owner: OwnerLine, options?: FormatOwnerLineOptions): string;
|
|
62
|
+
//# sourceMappingURL=ownerLine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerLine.d.ts","sourceRoot":"","sources":["../../src/lib/ownerLine.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAKnD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACtG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,sBAAsB;IACtC;8DAC0D;IAC1D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;yFAIyF;AACzF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAgC9F"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// GENERATED by scripts/generate-mcp-embedded-copies.mjs from kernel/organisationalAuthority/ownerLine.ts.
|
|
2
|
+
// DO NOT EDIT. Run `npm run mcp:embedded-copies` to regenerate.
|
|
3
|
+
// Local runtime copy for the isolated connector build.
|
|
4
|
+
/** Exhaustive over the six kinds above. The `default:` arm below is not a silent catch-all —
|
|
5
|
+
* it assigns the narrowed remainder to a `never`-typed const, so a seventh kind fails to
|
|
6
|
+
* compile HERE regardless of which tsconfig's strictness flags apply at the call site
|
|
7
|
+
* (kernel's own tsconfig is red pre-existing, unrelated to this PR, so exhaustiveness cannot
|
|
8
|
+
* be left to ride on `noImplicitReturns` alone; WP-753 O5b fix round 3, addendum a). */
|
|
9
|
+
export function formatOwnerLine(owner, options = {}) {
|
|
10
|
+
const ids = options.ids ?? true;
|
|
11
|
+
const label = options.label ?? 'Owner:';
|
|
12
|
+
switch (owner.kind) {
|
|
13
|
+
case 'one': return `${label} ${owner.role.name} in ${owner.team.name}`;
|
|
14
|
+
case 'default': return `${label} Team Lead, ${owner.team.name} (default — nobody assigned)`;
|
|
15
|
+
case 'unavailable': return `${label} none — no Team Lead available`;
|
|
16
|
+
case 'many': return `${label} conflicting — ${owner.count}${owner.truncated ? '+' : ''} owners recorded`;
|
|
17
|
+
case 'dangling': {
|
|
18
|
+
// WP-753 O5b fix round 3, addendum b: lead with whichever name(s) survived —
|
|
19
|
+
// requiring BOTH team and role names dropped a fetched role name whenever only
|
|
20
|
+
// the team was gone (or vice versa), silently downgrading to the generic sentence.
|
|
21
|
+
const named = owner.team && owner.role
|
|
22
|
+
? `${owner.role.name} in ${owner.team.name} is archived`
|
|
23
|
+
: owner.role
|
|
24
|
+
? `role ${owner.role.name} is archived`
|
|
25
|
+
: owner.team
|
|
26
|
+
? `team ${owner.team.name} is archived`
|
|
27
|
+
: 'the owning team or role is archived';
|
|
28
|
+
// WP-753 O5b fix round 4 (item 4): one voice for the two unresolved states —
|
|
29
|
+
// "couldn't be resolved", matching `overflow` below, not the earlier "unresolved".
|
|
30
|
+
return ids ? `${label} couldn't be resolved — ${named} (team ${owner.teamId}, role ${owner.roleId})` : `${label} couldn't be resolved — ${named}`;
|
|
31
|
+
}
|
|
32
|
+
case 'overflow': {
|
|
33
|
+
const reason = "couldn't be resolved — this team is too large to check";
|
|
34
|
+
return ids ? `${label} ${reason} (team ${owner.teamId})` : `${label} ${reason}`;
|
|
35
|
+
}
|
|
36
|
+
default: {
|
|
37
|
+
const _exhaustive = owner;
|
|
38
|
+
return _exhaustive;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ownerLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownerLine.js","sourceRoot":"","sources":["../../src/lib/ownerLine.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,gEAAgE;AAChE,uDAAuD;AAqCvD;;;;yFAIyF;AACzF,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAE,UAAkC,EAAE;IACrF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;IACxC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvE,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,KAAK,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,8BAA8B,CAAC;QAC5F,KAAK,aAAa,CAAC,CAAC,OAAO,GAAG,KAAK,gCAAgC,CAAC;QACpE,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,KAAK,kBAAkB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC;QACzG,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,6EAA6E;YAC7E,+EAA+E;YAC/E,mFAAmF;YACnF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;gBACrC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc;gBACxD,CAAC,CAAC,KAAK,CAAC,IAAI;oBACX,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc;oBACvC,CAAC,CAAC,KAAK,CAAC,IAAI;wBACX,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc;wBACvC,CAAC,CAAC,qCAAqC,CAAC;YAC3C,6EAA6E;YAC7E,mFAAmF;YACnF,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,2BAA2B,KAAK,UAAU,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,2BAA2B,KAAK,EAAE,CAAC;QACnJ,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,wDAAwD,CAAC;YACxE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACT,MAAM,WAAW,GAAU,KAAK,CAAC;YACjC,OAAO,WAAW,CAAC;QACpB,CAAC;IACF,CAAC;AACF,CAAC"}
|