@toon-protocol/views 0.13.1 → 0.14.0
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/app/index.html +13 -13
- package/dist/atoms/forge.d.ts.map +1 -1
- package/dist/atoms/forge.js +1 -1
- package/dist/atoms/forge.js.map +1 -1
- package/dist/parsers/nip34.d.ts +38 -4
- package/dist/parsers/nip34.d.ts.map +1 -1
- package/dist/parsers/nip34.js +63 -6
- package/dist/parsers/nip34.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../src/atoms/forge.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../src/atoms/forge.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,IAAI,EAAwB,MAAM,YAAY,CAAC;AAkG7D,eAAO,MAAM,UAAU,EAAE,IAAI,EAe5B,CAAC"}
|
package/dist/atoms/forge.js
CHANGED
|
@@ -22,7 +22,7 @@ const PRCard = ({ events }) => {
|
|
|
22
22
|
const pr = events.map(parsePR).find((p) => p !== null) ?? null;
|
|
23
23
|
if (!pr)
|
|
24
24
|
return null;
|
|
25
|
-
return (_jsxs("div", { className: "flex flex-col gap-1.5 border-b border-border py-3 first:pt-0 last:border-0 last:pb-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: pr.status === 'open' ? 'default' : 'secondary', className: "uppercase text-[10px]", children: pr.status }), _jsx("span", { className: "font-medium text-sm", children: pr.title || '(untitled patch)' })] }), _jsxs("div", { className: "text-xs text-muted-foreground", children: [pr.commitShas.length, " commit", pr.commitShas.length !== 1 ? 's' : '', " \u2192 ", pr.baseBranch] })] }));
|
|
25
|
+
return (_jsxs("div", { className: "flex flex-col gap-1.5 border-b border-border py-3 first:pt-0 last:border-0 last:pb-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: pr.status === 'open' ? 'default' : 'secondary', className: "uppercase text-[10px]", children: pr.status }), _jsx("span", { className: "font-medium text-sm", children: pr.title || '(untitled patch)' })] }), pr.description ? (_jsx("p", { className: "line-clamp-2 text-sm text-muted-foreground", children: pr.description })) : null, _jsxs("div", { className: "text-xs text-muted-foreground", children: [pr.commitShas.length, " commit", pr.commitShas.length !== 1 ? 's' : '', " \u2192 ", pr.baseBranch] })] }));
|
|
26
26
|
};
|
|
27
27
|
const CommentThread = ({ events, actions }) => {
|
|
28
28
|
const comments = events
|
package/dist/atoms/forge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/atoms/forge.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/atoms/forge.tsx"],"names":[],"mappings":"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"}
|
package/dist/parsers/nip34.d.ts
CHANGED
|
@@ -22,7 +22,20 @@ export interface RepoMetadata {
|
|
|
22
22
|
eventId: string;
|
|
23
23
|
cloneUrls: string[];
|
|
24
24
|
webUrls: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Declared maintainer pubkeys (hex) from the `maintainers` tag (#287). Does
|
|
27
|
+
* NOT include the owner, who is an implicit maintainer. Combine with
|
|
28
|
+
* `ownerPubkey` via {@link repoAuthorizedAuthors} to get the full set of
|
|
29
|
+
* authors whose kind:1630-1633 status events are authoritative.
|
|
30
|
+
*/
|
|
31
|
+
maintainers: string[];
|
|
25
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* The set of authors whose kind:1630-1633 status events are authoritative for
|
|
35
|
+
* a repo (#287): the owner (always) ∪ declared maintainers. Lowercased hex.
|
|
36
|
+
* Feed this to {@link resolvePRStatus} / {@link resolveIssueStatus}.
|
|
37
|
+
*/
|
|
38
|
+
export declare function repoAuthorizedAuthors(repo: RepoMetadata): Set<string>;
|
|
26
39
|
/** Parsed repository refs from a kind:30618 event. */
|
|
27
40
|
export interface RepoRefs {
|
|
28
41
|
repoId: string;
|
|
@@ -53,6 +66,11 @@ export interface PRMetadata {
|
|
|
53
66
|
commitShas: string[];
|
|
54
67
|
baseBranch: string;
|
|
55
68
|
status: 'open' | 'applied' | 'closed' | 'draft';
|
|
69
|
+
/**
|
|
70
|
+
* PR body from the `description` tag (`rig pr create --body`). Kept apart
|
|
71
|
+
* from `content`, which is pure `git format-patch` output for `git am`.
|
|
72
|
+
*/
|
|
73
|
+
description?: string;
|
|
56
74
|
}
|
|
57
75
|
/** Parsed comment metadata from a kind:1622 event. */
|
|
58
76
|
export interface CommentMetadata {
|
|
@@ -68,8 +86,24 @@ export declare function parseIssue(event: NostrEvent): IssueMetadata | null;
|
|
|
68
86
|
export declare function parsePR(event: NostrEvent): PRMetadata | null;
|
|
69
87
|
/** Parse a kind:1622 comment event into CommentMetadata. */
|
|
70
88
|
export declare function parseComment(event: NostrEvent): CommentMetadata | null;
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Resolve the status of a PR from status events (kind:1630-1633), honoring
|
|
91
|
+
* ONLY events signed by an AUTHORIZED author — the repo owner ∪ declared
|
|
92
|
+
* maintainers (#287; see {@link repoAuthorizedAuthors}). The relay is
|
|
93
|
+
* permissionless, so any funded stranger can PUBLISH a kind:163x against a PR;
|
|
94
|
+
* this consumer-side filter ensures such spoofed events NEVER move the
|
|
95
|
+
* displayed state. Among authorized events the latest (by created_at) wins.
|
|
96
|
+
*
|
|
97
|
+
* `authorized` is the lowercased-hex author set. When empty (the 30617 was not
|
|
98
|
+
* resolved) nothing is authoritative and the PR resolves to open — a safe,
|
|
99
|
+
* non-spoofable default.
|
|
100
|
+
*/
|
|
101
|
+
export declare function resolvePRStatus(prEventId: string, statusEvents: NostrEvent[], authorized: Iterable<string>): 'open' | 'applied' | 'closed' | 'draft';
|
|
102
|
+
/**
|
|
103
|
+
* Resolve the status of an issue from close events (kind:1632), honoring ONLY
|
|
104
|
+
* events signed by an AUTHORIZED author (owner ∪ maintainers, #287). An
|
|
105
|
+
* unauthorized close event does NOT close the issue. `authorized` is the
|
|
106
|
+
* lowercased-hex author set (see {@link repoAuthorizedAuthors}).
|
|
107
|
+
*/
|
|
108
|
+
export declare function resolveIssueStatus(issueEventId: string, closeEvents: NostrEvent[], authorized: Iterable<string>): 'open' | 'closed';
|
|
75
109
|
//# sourceMappingURL=nip34.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip34.d.ts","sourceRoot":"","sources":["../../src/parsers/nip34.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,UAAU,EAA6B,MAAM,aAAa,CAAC;AAEzE,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"nip34.d.ts","sourceRoot":"","sources":["../../src/parsers/nip34.ts"],"names":[],"mappings":"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"}
|
package/dist/parsers/nip34.js
CHANGED
|
@@ -12,6 +12,37 @@
|
|
|
12
12
|
* bundle share one parser corpus.
|
|
13
13
|
*/
|
|
14
14
|
import { getTagValue, getTagValues } from '../types.js';
|
|
15
|
+
/**
|
|
16
|
+
* NIP-34 tag naming a repo's declared maintainers on the kind:30617:
|
|
17
|
+
* one multi-valued `["maintainers", "<hex>", …]` tag (mirrors `relays`).
|
|
18
|
+
*/
|
|
19
|
+
const MAINTAINERS_TAG = 'maintainers';
|
|
20
|
+
const HEX64_RE = /^[0-9a-f]{64}$/;
|
|
21
|
+
/** Collect the lowercased-hex maintainer pubkeys from 30617 tags (#287). */
|
|
22
|
+
function parseMaintainerTags(tags) {
|
|
23
|
+
const out = [];
|
|
24
|
+
const seen = new Set();
|
|
25
|
+
for (const tag of tags) {
|
|
26
|
+
if (tag[0] !== MAINTAINERS_TAG)
|
|
27
|
+
continue;
|
|
28
|
+
for (const value of tag.slice(1)) {
|
|
29
|
+
const hex = value.toLowerCase();
|
|
30
|
+
if (HEX64_RE.test(hex) && !seen.has(hex)) {
|
|
31
|
+
seen.add(hex);
|
|
32
|
+
out.push(hex);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The set of authors whose kind:1630-1633 status events are authoritative for
|
|
40
|
+
* a repo (#287): the owner (always) ∪ declared maintainers. Lowercased hex.
|
|
41
|
+
* Feed this to {@link resolvePRStatus} / {@link resolveIssueStatus}.
|
|
42
|
+
*/
|
|
43
|
+
export function repoAuthorizedAuthors(repo) {
|
|
44
|
+
return new Set([repo.ownerPubkey.toLowerCase(), ...repo.maintainers]);
|
|
45
|
+
}
|
|
15
46
|
/** Maximum number of refs to parse from a single kind:30618 event. */
|
|
16
47
|
const MAX_REFS_PER_EVENT = 1000;
|
|
17
48
|
/** Parse a kind:30618 repository refs event into RepoRefs. */
|
|
@@ -57,6 +88,7 @@ export function parseRepoAnnouncement(event) {
|
|
|
57
88
|
eventId: event.id,
|
|
58
89
|
cloneUrls,
|
|
59
90
|
webUrls,
|
|
91
|
+
maintainers: parseMaintainerTags(event.tags),
|
|
60
92
|
};
|
|
61
93
|
}
|
|
62
94
|
/** Parse a kind:1621 issue event into IssueMetadata. */
|
|
@@ -83,6 +115,7 @@ export function parsePR(event) {
|
|
|
83
115
|
const title = getTagValue(event.tags, 'subject') ?? '';
|
|
84
116
|
const commitShas = getTagValues(event.tags, 'commit');
|
|
85
117
|
const baseBranch = getTagValue(event.tags, 'branch') ?? 'main';
|
|
118
|
+
const description = getTagValue(event.tags, 'description');
|
|
86
119
|
return {
|
|
87
120
|
eventId: event.id,
|
|
88
121
|
title,
|
|
@@ -92,6 +125,7 @@ export function parsePR(event) {
|
|
|
92
125
|
commitShas,
|
|
93
126
|
baseBranch,
|
|
94
127
|
status: 'open',
|
|
128
|
+
...(description !== undefined ? { description } : {}),
|
|
95
129
|
};
|
|
96
130
|
}
|
|
97
131
|
/** Parse a kind:1622 comment event into CommentMetadata. */
|
|
@@ -109,17 +143,32 @@ export function parseComment(event) {
|
|
|
109
143
|
parentEventId,
|
|
110
144
|
};
|
|
111
145
|
}
|
|
112
|
-
/**
|
|
113
|
-
|
|
146
|
+
/**
|
|
147
|
+
* Resolve the status of a PR from status events (kind:1630-1633), honoring
|
|
148
|
+
* ONLY events signed by an AUTHORIZED author — the repo owner ∪ declared
|
|
149
|
+
* maintainers (#287; see {@link repoAuthorizedAuthors}). The relay is
|
|
150
|
+
* permissionless, so any funded stranger can PUBLISH a kind:163x against a PR;
|
|
151
|
+
* this consumer-side filter ensures such spoofed events NEVER move the
|
|
152
|
+
* displayed state. Among authorized events the latest (by created_at) wins.
|
|
153
|
+
*
|
|
154
|
+
* `authorized` is the lowercased-hex author set. When empty (the 30617 was not
|
|
155
|
+
* resolved) nothing is authoritative and the PR resolves to open — a safe,
|
|
156
|
+
* non-spoofable default.
|
|
157
|
+
*/
|
|
158
|
+
export function resolvePRStatus(prEventId, statusEvents, authorized) {
|
|
114
159
|
const KIND_STATUS_MAP = {
|
|
115
160
|
1630: 'open',
|
|
116
161
|
1631: 'applied',
|
|
117
162
|
1632: 'closed',
|
|
118
163
|
1633: 'draft',
|
|
119
164
|
};
|
|
165
|
+
const authors = authorized instanceof Set ? authorized : new Set(authorized);
|
|
120
166
|
const relevant = statusEvents.filter((evt) => {
|
|
121
167
|
const eTag = getTagValue(evt.tags, 'e');
|
|
122
|
-
return eTag === prEventId &&
|
|
168
|
+
return (eTag === prEventId &&
|
|
169
|
+
evt.kind >= 1630 &&
|
|
170
|
+
evt.kind <= 1633 &&
|
|
171
|
+
authors.has(evt.pubkey.toLowerCase()));
|
|
123
172
|
});
|
|
124
173
|
if (relevant.length === 0)
|
|
125
174
|
return 'open';
|
|
@@ -131,11 +180,19 @@ export function resolvePRStatus(prEventId, statusEvents) {
|
|
|
131
180
|
}
|
|
132
181
|
return KIND_STATUS_MAP[latest.kind] ?? 'open';
|
|
133
182
|
}
|
|
134
|
-
/**
|
|
135
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Resolve the status of an issue from close events (kind:1632), honoring ONLY
|
|
185
|
+
* events signed by an AUTHORIZED author (owner ∪ maintainers, #287). An
|
|
186
|
+
* unauthorized close event does NOT close the issue. `authorized` is the
|
|
187
|
+
* lowercased-hex author set (see {@link repoAuthorizedAuthors}).
|
|
188
|
+
*/
|
|
189
|
+
export function resolveIssueStatus(issueEventId, closeEvents, authorized) {
|
|
190
|
+
const authors = authorized instanceof Set ? authorized : new Set(authorized);
|
|
136
191
|
const isClosed = closeEvents.some((evt) => {
|
|
137
192
|
const eTag = getTagValue(evt.tags, 'e');
|
|
138
|
-
return eTag === issueEventId &&
|
|
193
|
+
return (eTag === issueEventId &&
|
|
194
|
+
evt.kind === 1632 &&
|
|
195
|
+
authors.has(evt.pubkey.toLowerCase()));
|
|
139
196
|
});
|
|
140
197
|
return isClosed ? 'closed' : 'open';
|
|
141
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip34.js","sourceRoot":"","sources":["../../src/parsers/nip34.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAmB,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nip34.js","sourceRoot":"","sources":["../../src/parsers/nip34.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAmB,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqBzE;;;GAGG;AACH,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAElC,4EAA4E;AAC5E,SAAS,mBAAmB,CAAC,IAAgB;IAC3C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,eAAe;YAAE,SAAS;QACzC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAkB;IACtD,OAAO,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,sEAAsE;AACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAShC,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,IAAI,kBAAkB;gBAAE,MAAM;YAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;IACrD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;IAE5E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAE5C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhD,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,IAAI;QACJ,WAAW;QACX,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,aAAa;QACb,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,SAAS;QACT,OAAO;QACP,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7C,CAAC;AACJ,CAAC;AAuCD,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,MAAM;QACN,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,OAAO,CAAC,KAAiB;IACvC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAE3D,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,UAAU;QACV,UAAU;QACV,MAAM,EAAE,MAAM;QACd,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,SAAS,EAAE,KAAK,CAAC,UAAU;QAC3B,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,YAA0B,EAC1B,UAA4B;IAE5B,MAAM,eAAe,GAA4D;QAC/E,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;KACd,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,CACL,IAAI,KAAK,SAAS;YAClB,GAAG,CAAC,IAAI,IAAI,IAAI;YAChB,GAAG,CAAC,IAAI,IAAI,IAAI;YAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,CAA8B,CAAC;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAA8B,CAAC;QACvD,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;YAAE,MAAM,GAAG,KAAK,CAAC;IAC3D,CAAC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,WAAyB,EACzB,UAA4B;IAE5B,MAAM,OAAO,GAAG,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,CACL,IAAI,KAAK,YAAY;YACrB,GAAG,CAAC,IAAI,KAAK,IAAI;YACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toon-protocol/views",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Shared TOON kind→atom registry, NIP parsers, ViewSpec composition runtime, and MCP-app iframe bundle. Consumed by rig and the toon-mcp apps surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|