assistant-ui 0.0.78 → 0.0.80
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 +16 -3
- package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts +3 -0
- package/dist/codemods/v0-12/primitive-if-to-aui-if.d.ts.map +1 -0
- package/dist/codemods/v0-12/primitive-if-to-aui-if.js +308 -0
- package/dist/codemods/v0-12/primitive-if-to-aui-if.js.map +1 -0
- package/dist/commands/create.d.ts +54 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +160 -29
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +103 -76
- package/dist/commands/init.js.map +1 -1
- package/dist/lib/create-from-example.d.ts.map +1 -1
- package/dist/lib/create-from-example.js +9 -3
- package/dist/lib/create-from-example.js.map +1 -1
- package/dist/lib/upgrade.d.ts.map +1 -1
- package/dist/lib/upgrade.js +1 -0
- package/dist/lib/upgrade.js.map +1 -1
- package/package.json +4 -4
- package/src/codemods/v0-12/__tests__/assistant-api-to-aui.test.ts +10 -10
- package/src/codemods/v0-12/__tests__/primitive-if-to-aui-if.test.ts +839 -0
- package/src/codemods/v0-12/primitive-if-to-aui-if.ts +355 -0
- package/src/commands/create.ts +219 -37
- package/src/commands/init.ts +130 -88
- package/src/lib/create-from-example.ts +9 -3
- package/src/lib/upgrade.ts +1 -0
package/README.md
CHANGED
|
@@ -4,14 +4,18 @@ The `assistant-ui` CLI for adding components and dependencies to your project.
|
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
7
|
-
Use the `init` command to initialize
|
|
7
|
+
Use the `init` command to initialize assistant-ui in an existing project.
|
|
8
8
|
|
|
9
9
|
The `init` command installs dependencies, adds components, and configures your project for assistant-ui.
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
npx assistant-ui@latest init
|
|
13
|
+
npx assistant-ui@latest init --yes # non-interactive / CI / agent mode
|
|
13
14
|
```
|
|
14
15
|
|
|
16
|
+
If no existing project is found (no `package.json`), `init` forwards to `create`.
|
|
17
|
+
Passing `--preset` to `init` also forwards to `create` for compatibility.
|
|
18
|
+
|
|
15
19
|
## create
|
|
16
20
|
|
|
17
21
|
Use the `create` command to scaffold a new Next.js project with assistant-ui.
|
|
@@ -28,14 +32,23 @@ You can choose from multiple templates:
|
|
|
28
32
|
# Default template with Vercel AI SDK
|
|
29
33
|
npx assistant-ui@latest create my-app
|
|
30
34
|
|
|
35
|
+
# Minimal starter
|
|
36
|
+
npx assistant-ui@latest create my-app -t minimal
|
|
37
|
+
|
|
31
38
|
# With Assistant Cloud for persistence
|
|
32
39
|
npx assistant-ui@latest create my-app -t cloud
|
|
33
40
|
|
|
34
|
-
# With
|
|
41
|
+
# With Assistant Cloud + Clerk auth
|
|
42
|
+
npx assistant-ui@latest create my-app -t cloud-clerk
|
|
43
|
+
|
|
44
|
+
# With LangGraph starter template
|
|
35
45
|
npx assistant-ui@latest create my-app -t langgraph
|
|
36
46
|
|
|
37
|
-
# With MCP
|
|
47
|
+
# With MCP starter template
|
|
38
48
|
npx assistant-ui@latest create my-app -t mcp
|
|
49
|
+
|
|
50
|
+
# With playground preset configuration
|
|
51
|
+
npx assistant-ui@latest create my-app --preset "https://www.assistant-ui.com/playground/init?preset=chatgpt"
|
|
39
52
|
```
|
|
40
53
|
|
|
41
54
|
## add
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-if-to-aui-if.d.ts","sourceRoot":"","sources":["../../../src/codemods/v0-12/primitive-if-to-aui-if.ts"],"names":[],"mappings":"AAmKA,QAAA,MAAM,yBAAyB,6HA6L9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { createTransformer } from "../utils/createTransformer.js";
|
|
2
|
+
// Map ThreadPrimitive.If props to condition expressions
|
|
3
|
+
const threadPropMap = {
|
|
4
|
+
empty: (v) => ({
|
|
5
|
+
expression: "s.thread.isEmpty",
|
|
6
|
+
negated: v === false,
|
|
7
|
+
}),
|
|
8
|
+
running: (v) => ({
|
|
9
|
+
expression: "s.thread.isRunning",
|
|
10
|
+
negated: v === false,
|
|
11
|
+
}),
|
|
12
|
+
disabled: (v) => ({
|
|
13
|
+
expression: "s.thread.isDisabled",
|
|
14
|
+
negated: v === false,
|
|
15
|
+
}),
|
|
16
|
+
};
|
|
17
|
+
// Map MessagePrimitive.If props to condition expressions
|
|
18
|
+
const messagePropMap = {
|
|
19
|
+
user: () => ({ expression: 's.message.role === "user"', negated: false }),
|
|
20
|
+
assistant: () => ({
|
|
21
|
+
expression: 's.message.role === "assistant"',
|
|
22
|
+
negated: false,
|
|
23
|
+
}),
|
|
24
|
+
system: () => ({
|
|
25
|
+
expression: 's.message.role === "system"',
|
|
26
|
+
negated: false,
|
|
27
|
+
}),
|
|
28
|
+
hasBranches: () => ({
|
|
29
|
+
expression: "s.message.branchCount >= 2",
|
|
30
|
+
negated: false,
|
|
31
|
+
}),
|
|
32
|
+
copied: (v) => ({
|
|
33
|
+
expression: "s.message.isCopied",
|
|
34
|
+
negated: v === false,
|
|
35
|
+
}),
|
|
36
|
+
last: (v) => ({
|
|
37
|
+
expression: "s.message.isLast",
|
|
38
|
+
negated: v === false,
|
|
39
|
+
}),
|
|
40
|
+
lastOrHover: () => ({
|
|
41
|
+
expression: "s.message.isHovering || s.message.isLast",
|
|
42
|
+
negated: false,
|
|
43
|
+
}),
|
|
44
|
+
speaking: (v) => ({
|
|
45
|
+
expression: "s.message.speech != null",
|
|
46
|
+
negated: v === false,
|
|
47
|
+
}),
|
|
48
|
+
hasAttachments: (v) => v === true
|
|
49
|
+
? {
|
|
50
|
+
expression: 's.message.role === "user" && !!s.message.attachments?.length',
|
|
51
|
+
negated: false,
|
|
52
|
+
}
|
|
53
|
+
: {
|
|
54
|
+
expression: 's.message.role !== "user" || !s.message.attachments?.length',
|
|
55
|
+
negated: false,
|
|
56
|
+
},
|
|
57
|
+
hasContent: (v) => ({
|
|
58
|
+
expression: "s.message.parts.length > 0",
|
|
59
|
+
negated: v === false,
|
|
60
|
+
}),
|
|
61
|
+
submittedFeedback: (v) => {
|
|
62
|
+
if (v === null) {
|
|
63
|
+
return {
|
|
64
|
+
expression: "(s.message.metadata.submittedFeedback?.type ?? null) === null",
|
|
65
|
+
negated: false,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
expression: `s.message.metadata.submittedFeedback?.type === "${v}"`,
|
|
70
|
+
negated: false,
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
// Map ComposerPrimitive.If props to condition expressions
|
|
75
|
+
const composerPropMap = {
|
|
76
|
+
editing: (v) => ({
|
|
77
|
+
expression: "s.composer.isEditing",
|
|
78
|
+
negated: v === false,
|
|
79
|
+
}),
|
|
80
|
+
dictation: (v) => ({
|
|
81
|
+
expression: "s.composer.dictation != null",
|
|
82
|
+
negated: v === false,
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
const primitiveMap = {
|
|
86
|
+
ThreadPrimitive: threadPropMap,
|
|
87
|
+
MessagePrimitive: messagePropMap,
|
|
88
|
+
ComposerPrimitive: composerPropMap,
|
|
89
|
+
};
|
|
90
|
+
// Map of XPrimitive.Component → fixed condition (no props needed)
|
|
91
|
+
const fixedConditionMap = {
|
|
92
|
+
ThreadPrimitive: {
|
|
93
|
+
Empty: "s.thread.isEmpty",
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Extract the value of a JSX attribute.
|
|
98
|
+
* - Boolean prop (no value): `<X.If user>` → `true`
|
|
99
|
+
* - `{true}` / `{false}`: → `true` / `false`
|
|
100
|
+
* - `{"positive"}`: → `"positive"`
|
|
101
|
+
* - `{null}`: → `null`
|
|
102
|
+
*/
|
|
103
|
+
const getAttrValue = (j, attr) => {
|
|
104
|
+
// Boolean attribute (no value), e.g. `<X.If user>`
|
|
105
|
+
if (attr.value === null || attr.value === undefined) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
// JSX expression container: `{true}`, `{false}`, `{"positive"}`, `{null}`
|
|
109
|
+
if (j.JSXExpressionContainer.check(attr.value)) {
|
|
110
|
+
const expr = attr.value.expression;
|
|
111
|
+
if (j.BooleanLiteral.check(expr))
|
|
112
|
+
return expr.value;
|
|
113
|
+
if (j.Literal.check(expr)) {
|
|
114
|
+
if (expr.value === null)
|
|
115
|
+
return null;
|
|
116
|
+
return expr.value;
|
|
117
|
+
}
|
|
118
|
+
if (j.NullLiteral.check(expr))
|
|
119
|
+
return null;
|
|
120
|
+
if (j.Identifier.check(expr) && expr.name === "undefined")
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
// String literal
|
|
124
|
+
if (j.StringLiteral.check(attr.value) || j.Literal.check(attr.value)) {
|
|
125
|
+
return attr.value.value;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
};
|
|
129
|
+
const buildConditionString = (fragments) => {
|
|
130
|
+
const parts = fragments.map((f) => f.negated ? `!${f.expression}` : f.expression);
|
|
131
|
+
if (parts.length === 1)
|
|
132
|
+
return parts[0];
|
|
133
|
+
return parts.join(" && ");
|
|
134
|
+
};
|
|
135
|
+
const migratePrimitiveIfToAuiIf = createTransformer(({ j, root, markAsChanged }) => {
|
|
136
|
+
let needsAuiIfImport = false;
|
|
137
|
+
// Track which primitive namespaces are imported
|
|
138
|
+
const importedPrimitives = new Set();
|
|
139
|
+
root.find(j.ImportDeclaration).forEach((path) => {
|
|
140
|
+
const source = path.value.source.value;
|
|
141
|
+
if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
|
|
142
|
+
path.value.specifiers?.forEach((specifier) => {
|
|
143
|
+
if (j.ImportSpecifier.check(specifier)) {
|
|
144
|
+
const name = String(specifier.local?.name ?? specifier.imported.name);
|
|
145
|
+
if (primitiveMap[name] || fixedConditionMap[name]) {
|
|
146
|
+
importedPrimitives.add(name);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
if (importedPrimitives.size === 0)
|
|
153
|
+
return;
|
|
154
|
+
// Process fixed-condition components: <ThreadPrimitive.Empty> → <AuiIf condition={...}>
|
|
155
|
+
root.find(j.JSXOpeningElement).forEach((path) => {
|
|
156
|
+
const name = path.value.name;
|
|
157
|
+
if (!j.JSXMemberExpression.check(name))
|
|
158
|
+
return;
|
|
159
|
+
if (!j.JSXIdentifier.check(name.object))
|
|
160
|
+
return;
|
|
161
|
+
if (!j.JSXIdentifier.check(name.property))
|
|
162
|
+
return;
|
|
163
|
+
const primitiveName = name.object.name;
|
|
164
|
+
const propertyName = name.property.name;
|
|
165
|
+
const fixedMap = fixedConditionMap[primitiveName];
|
|
166
|
+
if (!fixedMap)
|
|
167
|
+
return;
|
|
168
|
+
const conditionBody = fixedMap[propertyName];
|
|
169
|
+
if (!conditionBody)
|
|
170
|
+
return;
|
|
171
|
+
if (!importedPrimitives.has(primitiveName))
|
|
172
|
+
return;
|
|
173
|
+
// Only transform if there are no props (other than children, which are implicit)
|
|
174
|
+
const attrs = path.value.attributes || [];
|
|
175
|
+
if (attrs.length > 0)
|
|
176
|
+
return;
|
|
177
|
+
const arrowFnAst = j(`(s) => ${conditionBody}`)
|
|
178
|
+
.find(j.ArrowFunctionExpression)
|
|
179
|
+
.paths()[0].value;
|
|
180
|
+
path.value.name = j.jsxIdentifier("AuiIf");
|
|
181
|
+
path.value.attributes = [
|
|
182
|
+
j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst)),
|
|
183
|
+
];
|
|
184
|
+
needsAuiIfImport = true;
|
|
185
|
+
markAsChanged();
|
|
186
|
+
});
|
|
187
|
+
// Update closing elements for fixed-condition components
|
|
188
|
+
root.find(j.JSXClosingElement).forEach((path) => {
|
|
189
|
+
const name = path.value.name;
|
|
190
|
+
if (!j.JSXMemberExpression.check(name))
|
|
191
|
+
return;
|
|
192
|
+
if (!j.JSXIdentifier.check(name.object))
|
|
193
|
+
return;
|
|
194
|
+
if (!j.JSXIdentifier.check(name.property))
|
|
195
|
+
return;
|
|
196
|
+
const primitiveName = name.object.name;
|
|
197
|
+
const propertyName = name.property.name;
|
|
198
|
+
const fixedMap = fixedConditionMap[primitiveName];
|
|
199
|
+
if (!fixedMap || !fixedMap[propertyName])
|
|
200
|
+
return;
|
|
201
|
+
if (!importedPrimitives.has(primitiveName))
|
|
202
|
+
return;
|
|
203
|
+
path.value.name = j.jsxIdentifier("AuiIf");
|
|
204
|
+
markAsChanged();
|
|
205
|
+
});
|
|
206
|
+
// Process JSX elements: <ThreadPrimitive.If ...> → <AuiIf condition={...}>
|
|
207
|
+
root.find(j.JSXOpeningElement).forEach((path) => {
|
|
208
|
+
const name = path.value.name;
|
|
209
|
+
// Check for `<XPrimitive.If ...>`
|
|
210
|
+
if (!j.JSXMemberExpression.check(name))
|
|
211
|
+
return;
|
|
212
|
+
if (!j.JSXIdentifier.check(name.object))
|
|
213
|
+
return;
|
|
214
|
+
if (!j.JSXIdentifier.check(name.property))
|
|
215
|
+
return;
|
|
216
|
+
if (name.property.name !== "If")
|
|
217
|
+
return;
|
|
218
|
+
const primitiveName = name.object.name;
|
|
219
|
+
const propMap = primitiveMap[primitiveName];
|
|
220
|
+
if (!propMap)
|
|
221
|
+
return;
|
|
222
|
+
if (!importedPrimitives.has(primitiveName))
|
|
223
|
+
return;
|
|
224
|
+
// Extract props
|
|
225
|
+
const attrs = path.value.attributes || [];
|
|
226
|
+
const fragments = [];
|
|
227
|
+
let hasUnknownProp = false;
|
|
228
|
+
for (const attr of attrs) {
|
|
229
|
+
if (!j.JSXAttribute.check(attr)) {
|
|
230
|
+
// JSX spread attributes — can't migrate
|
|
231
|
+
hasUnknownProp = true;
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const propName = typeof attr.name.name === "string" ? attr.name.name : null;
|
|
235
|
+
if (!propName)
|
|
236
|
+
continue;
|
|
237
|
+
const mapper = propMap[propName];
|
|
238
|
+
if (!mapper) {
|
|
239
|
+
hasUnknownProp = true;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const value = getAttrValue(j, attr);
|
|
243
|
+
const fragment = mapper(value);
|
|
244
|
+
if (fragment) {
|
|
245
|
+
fragments.push(fragment);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// If we couldn't map all props, skip this element
|
|
249
|
+
if (hasUnknownProp || fragments.length === 0)
|
|
250
|
+
return;
|
|
251
|
+
const conditionBody = buildConditionString(fragments);
|
|
252
|
+
// Parse the arrow function as an expression to get a proper AST node
|
|
253
|
+
const arrowFnAst = j(`(s) => ${conditionBody}`)
|
|
254
|
+
.find(j.ArrowFunctionExpression)
|
|
255
|
+
.paths()[0].value;
|
|
256
|
+
// Replace <XPrimitive.If ...> with <AuiIf condition={...}>
|
|
257
|
+
path.value.name = j.jsxIdentifier("AuiIf");
|
|
258
|
+
// Replace all attributes with a single condition prop
|
|
259
|
+
path.value.attributes = [
|
|
260
|
+
j.jsxAttribute(j.jsxIdentifier("condition"), j.jsxExpressionContainer(arrowFnAst)),
|
|
261
|
+
];
|
|
262
|
+
needsAuiIfImport = true;
|
|
263
|
+
markAsChanged();
|
|
264
|
+
});
|
|
265
|
+
// Update closing elements to match
|
|
266
|
+
root.find(j.JSXClosingElement).forEach((path) => {
|
|
267
|
+
const name = path.value.name;
|
|
268
|
+
if (!j.JSXMemberExpression.check(name))
|
|
269
|
+
return;
|
|
270
|
+
if (!j.JSXIdentifier.check(name.object))
|
|
271
|
+
return;
|
|
272
|
+
if (!j.JSXIdentifier.check(name.property))
|
|
273
|
+
return;
|
|
274
|
+
if (name.property.name !== "If")
|
|
275
|
+
return;
|
|
276
|
+
const primitiveName = name.object.name;
|
|
277
|
+
if (!primitiveMap[primitiveName])
|
|
278
|
+
return;
|
|
279
|
+
if (!importedPrimitives.has(primitiveName))
|
|
280
|
+
return;
|
|
281
|
+
path.value.name = j.jsxIdentifier("AuiIf");
|
|
282
|
+
markAsChanged();
|
|
283
|
+
});
|
|
284
|
+
// Add AuiIf import if needed
|
|
285
|
+
if (needsAuiIfImport) {
|
|
286
|
+
let hasAuiIfImport = false;
|
|
287
|
+
let assistantUiImport = null;
|
|
288
|
+
root.find(j.ImportDeclaration).forEach((path) => {
|
|
289
|
+
const source = path.value.source.value;
|
|
290
|
+
if (typeof source === "string" && source.startsWith("@assistant-ui/")) {
|
|
291
|
+
assistantUiImport = path;
|
|
292
|
+
path.value.specifiers?.forEach((specifier) => {
|
|
293
|
+
if (j.ImportSpecifier.check(specifier) &&
|
|
294
|
+
(specifier.imported.name === "AuiIf" ||
|
|
295
|
+
specifier.local?.name === "AuiIf")) {
|
|
296
|
+
hasAuiIfImport = true;
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
if (!hasAuiIfImport && assistantUiImport) {
|
|
302
|
+
assistantUiImport.value.specifiers.push(j.importSpecifier(j.identifier("AuiIf")));
|
|
303
|
+
markAsChanged();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
export default migratePrimitiveIfToAuiIf;
|
|
308
|
+
//# sourceMappingURL=primitive-if-to-aui-if.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-if-to-aui-if.js","sourceRoot":"","sources":["../../../src/codemods/v0-12/primitive-if-to-aui-if.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,57 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
declare const templates: {
|
|
4
|
+
readonly default: {
|
|
5
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter";
|
|
6
|
+
readonly label: "Default";
|
|
7
|
+
readonly hint: "Default template with Vercel AI SDK";
|
|
8
|
+
};
|
|
9
|
+
readonly minimal: {
|
|
10
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-minimal";
|
|
11
|
+
readonly label: "Minimal";
|
|
12
|
+
readonly hint: "Bare-bones starting point";
|
|
13
|
+
};
|
|
14
|
+
readonly cloud: {
|
|
15
|
+
readonly url: "https://github.com/assistant-ui/assistant-cloud-starter";
|
|
16
|
+
readonly label: "Cloud";
|
|
17
|
+
readonly hint: "Cloud-backed persistence starter";
|
|
18
|
+
};
|
|
19
|
+
readonly "cloud-clerk": {
|
|
20
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-cloud-clerk";
|
|
21
|
+
readonly label: "Cloud + Clerk";
|
|
22
|
+
readonly hint: "Cloud-backed starter with Clerk auth";
|
|
23
|
+
};
|
|
24
|
+
readonly langgraph: {
|
|
25
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-langgraph";
|
|
26
|
+
readonly label: "LangGraph";
|
|
27
|
+
readonly hint: "LangGraph starter template";
|
|
28
|
+
};
|
|
29
|
+
readonly mcp: {
|
|
30
|
+
readonly url: "https://github.com/assistant-ui/assistant-ui-starter-mcp";
|
|
31
|
+
readonly label: "MCP";
|
|
32
|
+
readonly hint: "MCP starter template";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
type TemplateName = keyof typeof templates;
|
|
36
|
+
export declare function resolveCreateTemplateName(params: {
|
|
37
|
+
template?: string;
|
|
38
|
+
stdinIsTTY?: boolean;
|
|
39
|
+
select?: typeof p.select;
|
|
40
|
+
isCancel?: typeof p.isCancel;
|
|
41
|
+
}): Promise<TemplateName | null>;
|
|
42
|
+
export declare function buildCreateNextAppArgs(params: {
|
|
43
|
+
projectDirectory?: string;
|
|
44
|
+
useNpm?: boolean;
|
|
45
|
+
usePnpm?: boolean;
|
|
46
|
+
useYarn?: boolean;
|
|
47
|
+
useBun?: boolean;
|
|
48
|
+
skipInstall?: boolean;
|
|
49
|
+
templateUrl: string;
|
|
50
|
+
}): string[];
|
|
51
|
+
export declare function resolveCreateProjectDirectory(params: {
|
|
52
|
+
projectDirectory?: string;
|
|
53
|
+
stdinIsTTY?: boolean;
|
|
54
|
+
}): string | undefined;
|
|
2
55
|
export declare const create: Command;
|
|
56
|
+
export {};
|
|
3
57
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAKpC,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BL,CAAC;AAEX,KAAK,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAa3C,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;CAC9B,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B/B;AAiCD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,EAAE,CAqBX;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAMD,eAAO,MAAM,MAAM,SAkHf,CAAC"}
|