@sanity/agent-directives 0.0.5 → 0.0.6
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/README.md +98 -33
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{formatters.d.ts → lib/formatters.d.ts} +1 -1
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/{formatters.js → lib/formatters.js} +1 -1
- package/dist/lib/formatters.js.map +1 -0
- package/dist/{react.d.ts → lib/react.d.ts} +2 -10
- package/dist/lib/react.d.ts.map +1 -0
- package/dist/{react.js → lib/react.js} +4 -4
- package/dist/lib/react.js.map +1 -0
- package/dist/lib/string.d.ts +73 -0
- package/dist/lib/string.d.ts.map +1 -0
- package/dist/lib/string.js +141 -0
- package/dist/lib/string.js.map +1 -0
- package/dist/schemas.d.ts +9 -0
- package/dist/schemas.d.ts.map +1 -1
- package/package.json +8 -7
- package/dist/formatters.d.ts.map +0 -1
- package/dist/formatters.js.map +0 -1
- package/dist/react.d.ts.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/string.d.ts +0 -34
- package/dist/string.d.ts.map +0 -1
- package/dist/string.js +0 -65
- package/dist/string.js.map +0 -1
package/README.md
CHANGED
|
@@ -14,28 +14,42 @@ pnpm add @sanity/agent-directives
|
|
|
14
14
|
// kit.ts
|
|
15
15
|
import { createDirectiveKit } from "@sanity/agent-directives/react";
|
|
16
16
|
|
|
17
|
-
export const { defineDirective } = createDirectiveKit({
|
|
18
|
-
useApplication: useThreadApplication,
|
|
17
|
+
export const { defineDirective } = createDirectiveKit<Application>({
|
|
18
|
+
useApplication: (source) => useThreadApplication(source),
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
// Document.tsx
|
|
22
|
-
export const
|
|
23
|
-
|
|
24
|
-
})
|
|
21
|
+
// directives/Document.tsx
|
|
22
|
+
export const DocumentDirective = defineDirective(
|
|
23
|
+
"document",
|
|
24
|
+
({ id, application }) => {
|
|
25
|
+
return <DocumentCard id={id} application={application} />;
|
|
26
|
+
},
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
// directives/Changes.tsx - no application needed
|
|
30
|
+
export const ChangesDirective = defineDirective(
|
|
31
|
+
"changes",
|
|
32
|
+
({ createdCount, updatedCount }) => (
|
|
33
|
+
<ChangesCard created={createdCount} updated={updatedCount} />
|
|
34
|
+
),
|
|
35
|
+
{ requiresContext: false },
|
|
36
|
+
);
|
|
25
37
|
|
|
26
38
|
// AgentMessage.tsx
|
|
27
39
|
import { remarkAgentDirectives } from "@sanity/agent-directives/react";
|
|
28
40
|
import ReactMarkdown from "react-markdown";
|
|
29
41
|
|
|
42
|
+
const components = {
|
|
43
|
+
Document: DocumentDirective,
|
|
44
|
+
Changes: ChangesDirective,
|
|
45
|
+
// directive names are converted to PascalCase
|
|
46
|
+
};
|
|
47
|
+
|
|
30
48
|
function AgentMessage({ content }: { content: string }) {
|
|
31
49
|
return (
|
|
32
50
|
<ReactMarkdown
|
|
33
51
|
remarkPlugins={[remarkAgentDirectives]}
|
|
34
|
-
components={
|
|
35
|
-
Document: DocumentDirective,
|
|
36
|
-
Release: ReleaseDirective,
|
|
37
|
-
// ...
|
|
38
|
-
}}
|
|
52
|
+
components={components}
|
|
39
53
|
>
|
|
40
54
|
{content}
|
|
41
55
|
</ReactMarkdown>
|
|
@@ -43,29 +57,68 @@ function AgentMessage({ content }: { content: string }) {
|
|
|
43
57
|
}
|
|
44
58
|
```
|
|
45
59
|
|
|
46
|
-
##
|
|
60
|
+
## Server-side Usage
|
|
47
61
|
|
|
48
62
|
```ts
|
|
49
63
|
// kit.ts
|
|
50
|
-
import {
|
|
64
|
+
import {
|
|
65
|
+
createDirectiveKit,
|
|
66
|
+
createRemarkRenderer,
|
|
67
|
+
} from "@sanity/agent-directives/string";
|
|
68
|
+
|
|
69
|
+
interface MyContext {
|
|
70
|
+
accessToken: string;
|
|
71
|
+
applications: Application[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface MyOutput {
|
|
75
|
+
text?: string;
|
|
76
|
+
blocks?: Block[];
|
|
77
|
+
}
|
|
51
78
|
|
|
52
79
|
export const { defineDirective, renderDirective } = createDirectiveKit<
|
|
53
|
-
|
|
54
|
-
|
|
80
|
+
MyContext,
|
|
81
|
+
MyOutput
|
|
55
82
|
>();
|
|
56
83
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"document",
|
|
60
|
-
async ({ id, _context }) => {
|
|
61
|
-
const doc = await fetchDocument(id, _context.accessToken);
|
|
62
|
-
return { blocks: [linkButton(doc.title, url)] };
|
|
63
|
-
},
|
|
84
|
+
export const remarkRenderDirectives = createRemarkRenderer<MyContext, Block>(
|
|
85
|
+
renderDirective,
|
|
64
86
|
);
|
|
87
|
+
|
|
88
|
+
// directives/document.ts
|
|
89
|
+
defineDirective("document", async ({ props, context }) => {
|
|
90
|
+
const doc = await fetchDocument(props.id, context.accessToken);
|
|
91
|
+
return { blocks: [linkButton(doc.title, url)] };
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// directives/changes.ts - simple text output
|
|
95
|
+
defineDirective("changes", ({ props }) => {
|
|
96
|
+
return {
|
|
97
|
+
text: `Created: ${props.createdCount}, Updated: ${props.updatedCount}`,
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// markdown.ts
|
|
102
|
+
import remarkDirective from "remark-directive";
|
|
103
|
+
|
|
104
|
+
async function toMarkdown(content: string, context: MyContext) {
|
|
105
|
+
const collector = { blocks: [] };
|
|
106
|
+
|
|
107
|
+
const processor = unified()
|
|
108
|
+
.use(remarkParse)
|
|
109
|
+
.use(remarkDirective)
|
|
110
|
+
.use(remarkRenderDirectives, context, collector)
|
|
111
|
+
.use(remarkStringify);
|
|
112
|
+
|
|
113
|
+
const file = await processor.process(content);
|
|
114
|
+
return { text: String(file), blocks: collector.blocks };
|
|
115
|
+
}
|
|
65
116
|
```
|
|
66
117
|
|
|
67
118
|
## Formatters
|
|
68
119
|
|
|
120
|
+
For generating directive strings (agent backend):
|
|
121
|
+
|
|
69
122
|
```ts
|
|
70
123
|
import { createDocumentDirective } from "@sanity/agent-directives/formatters";
|
|
71
124
|
|
|
@@ -75,23 +128,35 @@ createDocumentDirective({ id: "doc-123", type: "article" });
|
|
|
75
128
|
|
|
76
129
|
## Adding a New Directive
|
|
77
130
|
|
|
78
|
-
|
|
131
|
+
Edit `src/schemas.ts`:
|
|
79
132
|
|
|
80
133
|
```ts
|
|
134
|
+
// 1. Add schema
|
|
81
135
|
export const MyDirectiveSchema = z.object({
|
|
82
136
|
id: z.string(),
|
|
83
|
-
|
|
137
|
+
title: z.string().optional(),
|
|
84
138
|
});
|
|
85
|
-
```
|
|
86
139
|
|
|
87
|
-
2. Add to
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
140
|
+
// 2. Add to DirectiveSchemas
|
|
141
|
+
export const DirectiveSchemas = {
|
|
142
|
+
// ...existing
|
|
143
|
+
my: MyDirectiveSchema,
|
|
144
|
+
} as const;
|
|
145
|
+
|
|
146
|
+
// 3. Add to DIRECTIVE_NAMES
|
|
147
|
+
export const DIRECTIVE_NAMES = {
|
|
148
|
+
// ...existing
|
|
149
|
+
my: "my",
|
|
150
|
+
} as const;
|
|
151
|
+
|
|
152
|
+
// 4. Add type
|
|
153
|
+
export type MyDirectiveProps = z.infer<typeof MyDirectiveSchema>;
|
|
154
|
+
|
|
155
|
+
// 5. Add to DirectivePropsMap
|
|
156
|
+
export interface DirectivePropsMap {
|
|
157
|
+
// ...existing
|
|
158
|
+
my: MyDirectiveProps;
|
|
94
159
|
}
|
|
95
160
|
```
|
|
96
161
|
|
|
97
|
-
|
|
162
|
+
Then define the render function in your client using `defineDirective('my', ...)`.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createChangesDirective, createDocumentDirective, createReleaseDirective, createResourceDirective, createSetDirective, formatDirective, } from './formatters.js';
|
|
2
|
-
export { type ChangesDirectiveProps, ChangesDirectiveSchema, DIRECTIVE_NAMES, type DirectiveName, type DirectivePropsMap, DirectiveSchemas, type DocumentDirectiveProps, DocumentDirectiveSchema, type ReleaseDirectiveProps, ReleaseDirectiveSchema, type ResourceDirectiveProps, ResourceDirectiveSchema, type SetDirectiveProps, SetDirectiveSchema, } from './schemas.js';
|
|
1
|
+
export { createChangesDirective, createDocumentDirective, createReleaseDirective, createResourceDirective, createSetDirective, formatDirective, } from './lib/formatters.js';
|
|
2
|
+
export { type ChangesDirectiveProps, ChangesDirectiveSchema, type DefineDirectiveOptions, DIRECTIVE_NAMES, type DirectiveName, type DirectivePropsMap, DirectiveSchemas, type DocumentDirectiveProps, DocumentDirectiveSchema, type ReleaseDirectiveProps, ReleaseDirectiveSchema, type ResourceDirectiveProps, ResourceDirectiveSchema, type SetDirectiveProps, SetDirectiveSchema, } from './schemas.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createChangesDirective, createDocumentDirective, createReleaseDirective, createResourceDirective, createSetDirective, formatDirective, } from './formatters.js';
|
|
1
|
+
export { createChangesDirective, createDocumentDirective, createReleaseDirective, createResourceDirective, createSetDirective, formatDirective, } from './lib/formatters.js';
|
|
2
2
|
export { ChangesDirectiveSchema, DIRECTIVE_NAMES, DirectiveSchemas, DocumentDirectiveSchema, ReleaseDirectiveSchema, ResourceDirectiveSchema, SetDirectiveSchema, } from './schemas.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,sBAAsB,EAEtB,eAAe,EAGf,gBAAgB,EAEhB,uBAAuB,EAEvB,sBAAsB,EAEtB,uBAAuB,EAEvB,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ChangesDirectiveProps, type DirectiveName, type DocumentDirectiveProps, type ReleaseDirectiveProps, type ResourceDirectiveProps, type SetDirectiveProps } from '
|
|
1
|
+
import { type ChangesDirectiveProps, type DirectiveName, type DocumentDirectiveProps, type ReleaseDirectiveProps, type ResourceDirectiveProps, type SetDirectiveProps } from '../schemas.js';
|
|
2
2
|
export declare function formatDirective(name: DirectiveName, props: Record<string, unknown>): string;
|
|
3
3
|
export declare function createDocumentDirective(props: DocumentDirectiveProps): string;
|
|
4
4
|
export declare function createReleaseDirective(props: ReleaseDirectiveProps): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAA;AAStB,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAMhB,MAAM,eAAe,CAAA;AAEtB,SAAS,eAAe,CAAC,MAA+B;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,KAA8B;IACjF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentType, ReactNode } from 'react';
|
|
2
2
|
import type { Processor } from 'unified';
|
|
3
3
|
import type { Node } from 'unist';
|
|
4
|
-
import { type DirectiveName, type DirectivePropsMap } from '
|
|
4
|
+
import { type DefineDirectiveOptions, type DirectiveName, type DirectivePropsMap } from '../schemas.js';
|
|
5
5
|
type DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T];
|
|
6
6
|
export interface NodeProps {
|
|
7
7
|
node?: {
|
|
@@ -11,14 +11,7 @@ export interface NodeProps {
|
|
|
11
11
|
export type DirectiveRenderProps<TName extends DirectiveName, TApplication = undefined, TRequiresApplication extends boolean = true> = DirectiveProps<TName> & (TRequiresApplication extends true ? TApplication extends undefined ? {} : {
|
|
12
12
|
application: TApplication;
|
|
13
13
|
} : {});
|
|
14
|
-
export
|
|
15
|
-
/**
|
|
16
|
-
* Whether this directive requires application context.
|
|
17
|
-
* If true (default), the directive will not render if application is unavailable.
|
|
18
|
-
* If false, the directive renders without application injection.
|
|
19
|
-
*/
|
|
20
|
-
requiresApplication?: boolean;
|
|
21
|
-
}
|
|
14
|
+
export type { DefineDirectiveOptions };
|
|
22
15
|
export type DirectiveComponentProps<TName extends DirectiveName> = DirectiveProps<TName> & {
|
|
23
16
|
source?: string;
|
|
24
17
|
} & NodeProps;
|
|
@@ -58,5 +51,4 @@ export interface DirectiveKitOptions<TApplication> {
|
|
|
58
51
|
export declare function createDirectiveKit<TApplication = undefined>(options?: DirectiveKitOptions<TApplication>): {
|
|
59
52
|
defineDirective: <TName extends DirectiveName, TRequiresApplication extends boolean = true>(name: TName, render: (props: DirectiveRenderProps<TName, TApplication, TRequiresApplication>) => ReactNode, directiveOptions?: DefineDirectiveOptions) => ComponentType<DirectiveComponentProps<TName>>;
|
|
60
53
|
};
|
|
61
|
-
export {};
|
|
62
54
|
//# sourceMappingURL=react.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/lib/react.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAA;AAMtB,KAAK,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAEnE,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAChD;AAED,MAAM,MAAM,oBAAoB,CAC9B,KAAK,SAAS,aAAa,EAC3B,YAAY,GAAG,SAAS,EACxB,oBAAoB,SAAS,OAAO,GAAG,IAAI,IACzC,cAAc,CAAC,KAAK,CAAC,GACvB,CAAC,oBAAoB,SAAS,IAAI,GAC9B,YAAY,SAAS,SAAS,GAC5B,EAAE,GACF;IAAE,WAAW,EAAE,YAAY,CAAA;CAAE,GAC/B,EAAE,CAAC,CAAA;AAET,YAAY,EAAE,sBAAsB,EAAE,CAAA;AAEtC,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG;IACzF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,SAAS,CAAA;AAiKb;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,UA9HrC,IAAI,UA0InB;AAMD,MAAM,WAAW,mBAAmB,CAAC,YAAY;IAC/C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAA;CAC1E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,GAAG,SAAS,EACzD,OAAO,GAAE,mBAAmB,CAAC,YAAY,CAAM;sBAK7C,KAAK,SAAS,aAAa,EAC3B,oBAAoB,SAAS,OAAO,eAE9B,KAAK,UACH,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,KAAK,SAAS,qBAC3E,sBAAsB,KACvC,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;EAgCjD"}
|
|
@@ -2,7 +2,7 @@ import { pascalCase } from 'es-toolkit';
|
|
|
2
2
|
import { directiveFromMarkdown, directiveToMarkdown } from 'mdast-util-directive';
|
|
3
3
|
import { directive } from 'micromark-extension-directive';
|
|
4
4
|
import { visit } from 'unist-util-visit';
|
|
5
|
-
import { DirectiveSchemas } from '
|
|
5
|
+
import { DirectiveSchemas, } from '../schemas.js';
|
|
6
6
|
const DIRECTIVE_TYPES = ['textDirective', 'leafDirective', 'containerDirective'];
|
|
7
7
|
const isDirectiveNode = (node) => 'name' in node &&
|
|
8
8
|
typeof node.name === 'string' &&
|
|
@@ -167,11 +167,11 @@ export function remarkAgentDirectives() {
|
|
|
167
167
|
export function createDirectiveKit(options = {}) {
|
|
168
168
|
const { useApplication } = options;
|
|
169
169
|
function defineDirective(name, render, directiveOptions = {}) {
|
|
170
|
-
const
|
|
170
|
+
const requiresContext = directiveOptions.requiresContext ?? directiveOptions.requiresApplication ?? true;
|
|
171
171
|
function Directive(props) {
|
|
172
172
|
const { node, source, ...rest } = props;
|
|
173
173
|
const application = useApplication?.(source);
|
|
174
|
-
if (
|
|
174
|
+
if (requiresContext && useApplication && !application)
|
|
175
175
|
return null;
|
|
176
176
|
const merged = { ...(node?.properties ?? {}), ...rest };
|
|
177
177
|
const schema = DirectiveSchemas[name];
|
|
@@ -182,7 +182,7 @@ export function createDirectiveKit(options = {}) {
|
|
|
182
182
|
}
|
|
183
183
|
const renderProps = {
|
|
184
184
|
...result.data,
|
|
185
|
-
...(
|
|
185
|
+
...(requiresContext && useApplication ? { application } : {}),
|
|
186
186
|
};
|
|
187
187
|
return render(renderProps);
|
|
188
188
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/lib/react.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
import { type DefineDirectiveOptions, type DirectiveName, type DirectivePropsMap } from '../schemas.js';
|
|
3
|
+
export type { DirectiveName };
|
|
4
|
+
type DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T];
|
|
5
|
+
export interface DirectiveNode {
|
|
6
|
+
type: 'textDirective' | 'leafDirective' | 'containerDirective';
|
|
7
|
+
name: string;
|
|
8
|
+
attributes?: Record<string, string | null | undefined>;
|
|
9
|
+
children?: unknown[];
|
|
10
|
+
}
|
|
11
|
+
export interface DirectiveRenderProps<TName extends DirectiveName, TContext> {
|
|
12
|
+
props: DirectiveProps<TName>;
|
|
13
|
+
context: TContext;
|
|
14
|
+
children: string;
|
|
15
|
+
isInline: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type DirectiveRenderFn<TName extends DirectiveName, TContext, TOutput> = (args: DirectiveRenderProps<TName, TContext>) => TOutput | null | Promise<TOutput | null>;
|
|
18
|
+
export type { DefineDirectiveOptions };
|
|
19
|
+
export interface RegisteredDirective<TContext, TOutput> {
|
|
20
|
+
name: DirectiveName;
|
|
21
|
+
render: DirectiveRenderFn<DirectiveName, TContext, TOutput>;
|
|
22
|
+
options: DefineDirectiveOptions;
|
|
23
|
+
}
|
|
24
|
+
type DirectiveRegistry<TContext, TOutput> = Record<string, RegisteredDirective<TContext, TOutput>>;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a directive kit for server-side rendering.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* // kit.ts
|
|
31
|
+
* export const { defineDirective, renderDirective } = createDirectiveKit<
|
|
32
|
+
* SlackContext,
|
|
33
|
+
* SlackOutput
|
|
34
|
+
* >()
|
|
35
|
+
*
|
|
36
|
+
* // document.ts
|
|
37
|
+
* defineDirective('document', async ({ props, context }) => {
|
|
38
|
+
* const doc = await fetchDocument(props.id, context.accessToken)
|
|
39
|
+
* return { blocks: [linkButton(doc.title, url)] }
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function createDirectiveKit<TContext, TOutput>(): {
|
|
44
|
+
defineDirective: <TName extends DirectiveName>(name: TName, render: DirectiveRenderFn<TName, TContext, TOutput>, options?: DefineDirectiveOptions) => RegisteredDirective<TContext, TOutput>;
|
|
45
|
+
renderDirective: (node: DirectiveNode, context: TContext) => Promise<TOutput | null>;
|
|
46
|
+
registry: DirectiveRegistry<TContext, TOutput>;
|
|
47
|
+
};
|
|
48
|
+
export interface DirectiveRenderResult<TBlock = unknown> {
|
|
49
|
+
text?: string;
|
|
50
|
+
blocks?: TBlock[];
|
|
51
|
+
}
|
|
52
|
+
export type DirectiveOutput<TBlock = unknown> = string | DirectiveRenderResult<TBlock> | null;
|
|
53
|
+
export declare function normalizeOutput<TBlock>(output: DirectiveOutput<TBlock>): DirectiveRenderResult<TBlock> | null;
|
|
54
|
+
export interface BlockCollector<TBlock = unknown> {
|
|
55
|
+
blocks: TBlock[];
|
|
56
|
+
}
|
|
57
|
+
type RenderFn<TContext, TOutput> = (node: DirectiveNode, context: TContext) => Promise<TOutput | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a remark plugin that renders directives and collects output blocks.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const remarkRenderDirectives = createRemarkRenderer<SlackContext, SlackBlock>(renderDirective)
|
|
64
|
+
*
|
|
65
|
+
* unified()
|
|
66
|
+
* .use(remarkParse)
|
|
67
|
+
* .use(remarkDirective)
|
|
68
|
+
* .use(remarkRenderDirectives, context, collector)
|
|
69
|
+
* .use(remarkStringify)
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function createRemarkRenderer<TContext, TBlock>(renderDirective: RenderFn<TContext, DirectiveRenderResult<TBlock> | null>): (context: TContext, collector: BlockCollector<TBlock>) => (tree: Root) => Promise<void>;
|
|
73
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/lib/string.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
import { DirectiveSchemas, } from '../schemas.js';
|
|
3
|
+
function extractChildren(node) {
|
|
4
|
+
if (!node.children || !Array.isArray(node.children)) {
|
|
5
|
+
return '';
|
|
6
|
+
}
|
|
7
|
+
function extractText(n) {
|
|
8
|
+
if (!n || typeof n !== 'object')
|
|
9
|
+
return '';
|
|
10
|
+
if ('type' in n && n.type === 'text' && 'value' in n && typeof n.value === 'string') {
|
|
11
|
+
return n.value;
|
|
12
|
+
}
|
|
13
|
+
if ('children' in n && Array.isArray(n.children)) {
|
|
14
|
+
return n.children.map(extractText).join('');
|
|
15
|
+
}
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
return node.children.map(extractText).join('');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates a directive kit for server-side rendering.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* // kit.ts
|
|
26
|
+
* export const { defineDirective, renderDirective } = createDirectiveKit<
|
|
27
|
+
* SlackContext,
|
|
28
|
+
* SlackOutput
|
|
29
|
+
* >()
|
|
30
|
+
*
|
|
31
|
+
* // document.ts
|
|
32
|
+
* defineDirective('document', async ({ props, context }) => {
|
|
33
|
+
* const doc = await fetchDocument(props.id, context.accessToken)
|
|
34
|
+
* return { blocks: [linkButton(doc.title, url)] }
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function createDirectiveKit() {
|
|
39
|
+
const registry = {};
|
|
40
|
+
function defineDirective(name, render, options = {}) {
|
|
41
|
+
const directive = {
|
|
42
|
+
name,
|
|
43
|
+
render: render,
|
|
44
|
+
options,
|
|
45
|
+
};
|
|
46
|
+
registry[name] = directive;
|
|
47
|
+
return directive;
|
|
48
|
+
}
|
|
49
|
+
async function renderDirective(node, context) {
|
|
50
|
+
const directive = registry[node.name];
|
|
51
|
+
if (!directive)
|
|
52
|
+
return null;
|
|
53
|
+
const schema = DirectiveSchemas[node.name];
|
|
54
|
+
if (!schema)
|
|
55
|
+
return null;
|
|
56
|
+
const result = schema.safeParse(node.attributes ?? {});
|
|
57
|
+
if (!result.success) {
|
|
58
|
+
console.error(`Directive "${node.name}" validation error:`, result.error.format());
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return directive.render({
|
|
62
|
+
props: result.data,
|
|
63
|
+
context,
|
|
64
|
+
children: extractChildren(node),
|
|
65
|
+
isInline: node.type === 'textDirective',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return { defineDirective, renderDirective, registry };
|
|
69
|
+
}
|
|
70
|
+
export function normalizeOutput(output) {
|
|
71
|
+
if (output === null)
|
|
72
|
+
return null;
|
|
73
|
+
if (typeof output === 'string')
|
|
74
|
+
return { text: output };
|
|
75
|
+
return output;
|
|
76
|
+
}
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// Remark Plugin
|
|
79
|
+
// ============================================================================
|
|
80
|
+
const DIRECTIVE_TYPES = ['textDirective', 'leafDirective', 'containerDirective'];
|
|
81
|
+
function isDirectiveNode(node) {
|
|
82
|
+
return (typeof node === 'object' &&
|
|
83
|
+
node !== null &&
|
|
84
|
+
'type' in node &&
|
|
85
|
+
typeof node.type === 'string' &&
|
|
86
|
+
DIRECTIVE_TYPES.includes(node.type) &&
|
|
87
|
+
'name' in node &&
|
|
88
|
+
typeof node.name === 'string');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Creates a remark plugin that renders directives and collects output blocks.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* const remarkRenderDirectives = createRemarkRenderer<SlackContext, SlackBlock>(renderDirective)
|
|
96
|
+
*
|
|
97
|
+
* unified()
|
|
98
|
+
* .use(remarkParse)
|
|
99
|
+
* .use(remarkDirective)
|
|
100
|
+
* .use(remarkRenderDirectives, context, collector)
|
|
101
|
+
* .use(remarkStringify)
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export function createRemarkRenderer(renderDirective) {
|
|
105
|
+
return function remarkRenderDirectives(context, collector) {
|
|
106
|
+
return async (tree) => {
|
|
107
|
+
const locations = [];
|
|
108
|
+
visit(tree, DIRECTIVE_TYPES, (node, index, parent) => {
|
|
109
|
+
if (!isDirectiveNode(node))
|
|
110
|
+
return;
|
|
111
|
+
if (!parent || typeof index !== 'number')
|
|
112
|
+
return;
|
|
113
|
+
locations.push({ node, index, parent });
|
|
114
|
+
});
|
|
115
|
+
const replacements = await Promise.all(locations.map(async (loc) => ({
|
|
116
|
+
...loc,
|
|
117
|
+
output: normalizeOutput(await renderDirective(loc.node, context)),
|
|
118
|
+
})));
|
|
119
|
+
for (let i = replacements.length - 1; i >= 0; i--) {
|
|
120
|
+
const { node, index, parent, output } = replacements[i];
|
|
121
|
+
if (output?.blocks) {
|
|
122
|
+
collector.blocks.unshift(...output.blocks);
|
|
123
|
+
}
|
|
124
|
+
if (output?.text) {
|
|
125
|
+
parent.children.splice(index, 1, {
|
|
126
|
+
type: 'paragraph',
|
|
127
|
+
children: [{ type: 'text', value: output.text }],
|
|
128
|
+
});
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (node.type === 'containerDirective' && node.children && node.children.length > 0) {
|
|
132
|
+
const containerNode = node;
|
|
133
|
+
parent.children.splice(index, 1, ...containerNode.children);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
parent.children.splice(index, 1);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/lib/string.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas.d.ts
CHANGED
|
@@ -115,4 +115,13 @@ export interface DirectivePropsMap {
|
|
|
115
115
|
set: SetDirectiveProps;
|
|
116
116
|
changes: ChangesDirectiveProps;
|
|
117
117
|
}
|
|
118
|
+
export interface DefineDirectiveOptions {
|
|
119
|
+
/**
|
|
120
|
+
* Whether this directive requires context/application to render.
|
|
121
|
+
* If true (default), the directive won't render without context.
|
|
122
|
+
*/
|
|
123
|
+
requiresContext?: boolean;
|
|
124
|
+
/** @deprecated Use `requiresContext` instead */
|
|
125
|
+
requiresApplication?: boolean;
|
|
126
|
+
}
|
|
118
127
|
//# sourceMappingURL=schemas.d.ts.map
|
package/dist/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAA;AAEV,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAElF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAClE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,sBAAsB,CAAA;IAChC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,EAAE,sBAAsB,CAAA;IAChC,GAAG,EAAE,iBAAiB,CAAA;IACtB,OAAO,EAAE,qBAAqB,CAAA;CAC/B"}
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;EAIlC,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAA;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnB,CAAA;AAEV,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAElF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC5E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAClE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,sBAAsB,CAAA;IAChC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,EAAE,sBAAsB,CAAA;IAChC,GAAG,EAAE,iBAAiB,CAAA;IACtB,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/agent-directives",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Shared directive system for Sanity Agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
@@ -20,16 +20,16 @@
|
|
|
20
20
|
"types": "./dist/index.d.ts"
|
|
21
21
|
},
|
|
22
22
|
"./formatters": {
|
|
23
|
-
"import": "./dist/formatters.js",
|
|
24
|
-
"types": "./dist/formatters.d.ts"
|
|
23
|
+
"import": "./dist/lib/formatters.js",
|
|
24
|
+
"types": "./dist/lib/formatters.d.ts"
|
|
25
25
|
},
|
|
26
26
|
"./react": {
|
|
27
|
-
"import": "./dist/react.js",
|
|
28
|
-
"types": "./dist/react.d.ts"
|
|
27
|
+
"import": "./dist/lib/react.js",
|
|
28
|
+
"types": "./dist/lib/react.d.ts"
|
|
29
29
|
},
|
|
30
30
|
"./string": {
|
|
31
|
-
"import": "./dist/string.js",
|
|
32
|
-
"types": "./dist/string.d.ts"
|
|
31
|
+
"import": "./dist/lib/string.js",
|
|
32
|
+
"types": "./dist/lib/string.d.ts"
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"main": "./dist/index.js",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"zod": "^3.25.76"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
+
"@types/mdast": "^4.0.4",
|
|
55
56
|
"@testing-library/jest-dom": "^6.6.3",
|
|
56
57
|
"@testing-library/react": "^16.0.0",
|
|
57
58
|
"@types/react": "^19.0.0",
|
package/dist/formatters.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAA;AASrB,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E"}
|
package/dist/formatters.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAMhB,MAAM,cAAc,CAAA;AAErB,SAAS,eAAe,CAAC,MAA+B;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,KAA8B;IACjF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC"}
|
package/dist/react.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAM3F,KAAK,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAEnE,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAChD;AAED,MAAM,MAAM,oBAAoB,CAC9B,KAAK,SAAS,aAAa,EAC3B,YAAY,GAAG,SAAS,EACxB,oBAAoB,SAAS,OAAO,GAAG,IAAI,IACzC,cAAc,CAAC,KAAK,CAAC,GACvB,CAAC,oBAAoB,SAAS,IAAI,GAC9B,YAAY,SAAS,SAAS,GAC5B,EAAE,GACF;IAAE,WAAW,EAAE,YAAY,CAAA;CAAE,GAC/B,EAAE,CAAC,CAAA;AAET,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG;IACzF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,SAAS,CAAA;AAiKb;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,UA9HrC,IAAI,UA0InB;AAMD,MAAM,WAAW,mBAAmB,CAAC,YAAY;IAC/C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAA;CAC1E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,GAAG,SAAS,EACzD,OAAO,GAAE,mBAAmB,CAAC,YAAY,CAAM;sBAK7C,KAAK,SAAS,aAAa,EAC3B,oBAAoB,SAAS,OAAO,eAE9B,KAAK,UACH,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,KAAK,SAAS,qBAC3E,sBAAsB,KACvC,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;EA+BjD"}
|
package/dist/react.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
|
package/dist/string.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { type DirectiveName, type DirectivePropsMap } from './schemas.js';
|
|
2
|
-
export type { DirectiveName };
|
|
3
|
-
type DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T];
|
|
4
|
-
export interface DirectiveNode {
|
|
5
|
-
type: 'textDirective' | 'leafDirective' | 'containerDirective';
|
|
6
|
-
name: string;
|
|
7
|
-
attributes?: Record<string, string | null | undefined>;
|
|
8
|
-
children?: unknown[];
|
|
9
|
-
}
|
|
10
|
-
export interface DirectiveBaseProps {
|
|
11
|
-
children: string;
|
|
12
|
-
isInline: boolean;
|
|
13
|
-
}
|
|
14
|
-
export type DirectiveRenderFn<TName extends DirectiveName, TContext, TOutput> = (props: DirectiveProps<TName> & DirectiveBaseProps & {
|
|
15
|
-
_context: TContext;
|
|
16
|
-
}) => TOutput | null | Promise<TOutput | null>;
|
|
17
|
-
export interface StringDirective<TName extends DirectiveName, TContext, TOutput> {
|
|
18
|
-
name: TName;
|
|
19
|
-
render: DirectiveRenderFn<TName, TContext, TOutput>;
|
|
20
|
-
}
|
|
21
|
-
export type StringDirectiveRegistry<TContext, TOutput> = Record<string, StringDirective<DirectiveName, TContext, TOutput>>;
|
|
22
|
-
export declare function createDirectiveKit<TContext = unknown, TOutput = unknown>(): {
|
|
23
|
-
defineDirective: <TName extends DirectiveName>(name: TName, render: DirectiveRenderFn<TName, TContext, TOutput>) => StringDirective<TName, TContext, TOutput>;
|
|
24
|
-
renderDirective: (node: DirectiveNode, context: TContext) => Promise<TOutput | null>;
|
|
25
|
-
registry: StringDirectiveRegistry<TContext, TOutput>;
|
|
26
|
-
};
|
|
27
|
-
export interface DirectiveRenderResult<TBlock = unknown> {
|
|
28
|
-
text?: string;
|
|
29
|
-
blocks?: TBlock[];
|
|
30
|
-
}
|
|
31
|
-
export type DirectiveOutput<TBlock = unknown> = string | DirectiveRenderResult<TBlock> | null;
|
|
32
|
-
export declare function hasBlocks<TBlock>(output: DirectiveOutput<TBlock>): output is DirectiveRenderResult<TBlock>;
|
|
33
|
-
export declare function normalizeOutput<TBlock>(output: DirectiveOutput<TBlock>): DirectiveRenderResult<TBlock> | null;
|
|
34
|
-
//# sourceMappingURL=string.d.ts.map
|
package/dist/string.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAE3F,YAAY,EAAE,aAAa,EAAE,CAAA;AAE7B,KAAK,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAEnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAA;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;IACtD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,aAAa,EAAE,QAAQ,EAAE,OAAO,IAAI,CAC9E,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,kBAAkB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,KACvE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;AAE7C,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,aAAa,EAAE,QAAQ,EAAE,OAAO;IAC7E,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;CACpD;AAED,MAAM,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAC7D,MAAM,EACN,eAAe,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAClD,CAAA;AAqBD,wBAAgB,kBAAkB,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;sBAG7C,KAAK,SAAS,aAAa,QAC5C,KAAK,UACH,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,KAClD,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;4BAMP,aAAa,WAAW,QAAQ,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;;EAgChG;AAED,MAAM,WAAW,qBAAqB,CAAC,MAAM,GAAG,OAAO;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,OAAO,IAAI,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;AAE7F,wBAAgB,SAAS,CAAC,MAAM,EAC9B,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAC9B,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAEzC;AAED,wBAAgB,eAAe,CAAC,MAAM,EACpC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,GAC9B,qBAAqB,CAAC,MAAM,CAAC,GAAG,IAAI,CAQtC"}
|
package/dist/string.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { DirectiveSchemas } from './schemas.js';
|
|
2
|
-
function extractChildren(node) {
|
|
3
|
-
if (!node.children || !Array.isArray(node.children)) {
|
|
4
|
-
return '';
|
|
5
|
-
}
|
|
6
|
-
function extractText(n) {
|
|
7
|
-
if (!n || typeof n !== 'object')
|
|
8
|
-
return '';
|
|
9
|
-
if ('type' in n && n.type === 'text' && 'value' in n && typeof n.value === 'string') {
|
|
10
|
-
return n.value;
|
|
11
|
-
}
|
|
12
|
-
if ('children' in n && Array.isArray(n.children)) {
|
|
13
|
-
return n.children.map(extractText).join('');
|
|
14
|
-
}
|
|
15
|
-
return '';
|
|
16
|
-
}
|
|
17
|
-
return node.children.map(extractText).join('');
|
|
18
|
-
}
|
|
19
|
-
export function createDirectiveKit() {
|
|
20
|
-
const registry = {};
|
|
21
|
-
function defineDirective(name, render) {
|
|
22
|
-
const directive = { name, render };
|
|
23
|
-
registry[name] = directive;
|
|
24
|
-
return directive;
|
|
25
|
-
}
|
|
26
|
-
async function renderDirective(node, context) {
|
|
27
|
-
const directive = registry[node.name];
|
|
28
|
-
if (!directive)
|
|
29
|
-
return null;
|
|
30
|
-
const schema = DirectiveSchemas[node.name];
|
|
31
|
-
if (!schema)
|
|
32
|
-
return null;
|
|
33
|
-
const rawProps = {
|
|
34
|
-
...node.attributes,
|
|
35
|
-
children: extractChildren(node),
|
|
36
|
-
isInline: node.type === 'textDirective',
|
|
37
|
-
};
|
|
38
|
-
const result = schema.safeParse(rawProps);
|
|
39
|
-
if (!result.success) {
|
|
40
|
-
console.error(`Directive "${node.name}" validation error:`, result.error.format());
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
const props = {
|
|
44
|
-
...result.data,
|
|
45
|
-
children: rawProps.children,
|
|
46
|
-
isInline: rawProps.isInline,
|
|
47
|
-
_context: context,
|
|
48
|
-
};
|
|
49
|
-
return directive.render(props);
|
|
50
|
-
}
|
|
51
|
-
return { defineDirective, renderDirective, registry };
|
|
52
|
-
}
|
|
53
|
-
export function hasBlocks(output) {
|
|
54
|
-
return output !== null && typeof output === 'object' && 'blocks' in output;
|
|
55
|
-
}
|
|
56
|
-
export function normalizeOutput(output) {
|
|
57
|
-
if (output === null) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
if (typeof output === 'string') {
|
|
61
|
-
return { text: output };
|
|
62
|
-
}
|
|
63
|
-
return output;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=string.js.map
|
package/dist/string.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"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"}
|