cursortoys 0.3.0 → 0.5.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/README.md +83 -6
- package/dist/assertionParser.d.ts.map +1 -1
- package/dist/assertionParser.js +2 -3
- package/dist/assertionParser.js.map +1 -1
- package/dist/assertionValidator.d.ts +1 -0
- package/dist/assertionValidator.d.ts.map +1 -1
- package/dist/assertionValidator.js +7 -57
- package/dist/assertionValidator.js.map +1 -1
- package/dist/banner.d.ts +7 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +60 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli.js +186 -49
- package/dist/cli.js.map +1 -1
- package/dist/commands/http-test.d.ts +1 -0
- package/dist/commands/http-test.d.ts.map +1 -1
- package/dist/commands/http-test.js +244 -88
- package/dist/commands/http-test.js.map +1 -1
- package/dist/commands/skill-add.d.ts.map +1 -1
- package/dist/commands/skill-add.js +14 -23
- package/dist/commands/skill-add.js.map +1 -1
- package/dist/commands/skill-install.d.ts +36 -0
- package/dist/commands/skill-install.d.ts.map +1 -0
- package/dist/commands/skill-install.js +144 -0
- package/dist/commands/skill-install.js.map +1 -0
- package/dist/commands/skills-import.d.ts +20 -0
- package/dist/commands/skills-import.d.ts.map +1 -0
- package/dist/commands/skills-import.js +85 -0
- package/dist/commands/skills-import.js.map +1 -0
- package/dist/llmOutput.d.ts +21 -0
- package/dist/llmOutput.d.ts.map +1 -0
- package/dist/llmOutput.js +109 -0
- package/dist/llmOutput.js.map +1 -0
- package/dist/responseChain.d.ts +25 -0
- package/dist/responseChain.d.ts.map +1 -0
- package/dist/responseChain.js +86 -0
- package/dist/responseChain.js.map +1 -0
- package/dist/responseChainParser.d.ts +22 -0
- package/dist/responseChainParser.d.ts.map +1 -0
- package/dist/responseChainParser.js +94 -0
- package/dist/responseChainParser.js.map +1 -0
- package/dist/responseExpression.d.ts +15 -0
- package/dist/responseExpression.d.ts.map +1 -0
- package/dist/responseExpression.js +59 -0
- package/dist/responseExpression.js.map +1 -0
- package/dist/skillRemoteImporter.d.ts +32 -0
- package/dist/skillRemoteImporter.d.ts.map +1 -0
- package/dist/skillRemoteImporter.js +247 -0
- package/dist/skillRemoteImporter.js.map +1 -0
- package/dist/skillWriter.d.ts +11 -0
- package/dist/skillWriter.d.ts.map +1 -0
- package/dist/skillWriter.js +58 -0
- package/dist/skillWriter.js.map +1 -0
- package/dist/skillsPaths.d.ts +22 -0
- package/dist/skillsPaths.d.ts.map +1 -0
- package/dist/skillsPaths.js +78 -0
- package/dist/skillsPaths.js.map +1 -0
- package/llms.txt +55 -3
- package/package.json +3 -1
- package/resources/skills/cursor-toys-http/SKILL.md +208 -0
- package/resources/skills/cursortoys-cli/SKILL.md +93 -0
package/README.md
CHANGED
|
@@ -91,6 +91,13 @@ Same as in the CursorToys extension:
|
|
|
91
91
|
- **Substitution**: `{{VAR_NAME}}` resolved from `# @var`, then from `.env.{name}` at project root
|
|
92
92
|
- **Delay**: `# @delay(milliseconds)` before executing a block
|
|
93
93
|
- **Assertions**: block comments with `@assert(...)` — when present, all must pass
|
|
94
|
+
- **Chained response** (`@SETTER` / `@GETTER`): capture a value from one response and use it in the next block (or file in the same run)
|
|
95
|
+
|
|
96
|
+
Reserved hook files (directory-level setup/teardown):
|
|
97
|
+
|
|
98
|
+
- `__before__.req` / `__before__.request`: runs **before** other request files in that directory
|
|
99
|
+
- `__after__.req` / `__after__.request`: runs **after** other request files in that directory
|
|
100
|
+
- Hook files are **not** treated as normal tests (they don't get discovered twice).
|
|
94
101
|
|
|
95
102
|
Example:
|
|
96
103
|
|
|
@@ -112,6 +119,39 @@ Content-Type: application/json
|
|
|
112
119
|
{"name": "John Doe"}
|
|
113
120
|
```
|
|
114
121
|
|
|
122
|
+
**Chained response example** (profile → repos using `avatar_url`):
|
|
123
|
+
|
|
124
|
+
```http
|
|
125
|
+
# @var GITHUB_API=https://api.github.com
|
|
126
|
+
# @var GITHUB_USER=octocat
|
|
127
|
+
|
|
128
|
+
## Public user profile
|
|
129
|
+
GET {{GITHUB_API}}/users/{{GITHUB_USER}}
|
|
130
|
+
Accept: application/vnd.github+json
|
|
131
|
+
|
|
132
|
+
/*
|
|
133
|
+
* @assert("Avatar URL is set", "res.body.avatar_url", "contains", "avatars")
|
|
134
|
+
* @SETTER("VALUE", "res.body.avatar_url")
|
|
135
|
+
*/
|
|
136
|
+
|
|
137
|
+
###
|
|
138
|
+
|
|
139
|
+
## Public user repositories
|
|
140
|
+
# @getter VALUE
|
|
141
|
+
GET {{GITHUB_API}}/users/{{GITHUB_USER}}/repos?per_page=5&ref={{VALUE}}
|
|
142
|
+
Accept: application/vnd.github+json
|
|
143
|
+
|
|
144
|
+
/*
|
|
145
|
+
* @getter("VALUE")
|
|
146
|
+
* @assert("repos ok", "res.status", "equals", 200)
|
|
147
|
+
*/
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
- `@SETTER("KEY", "res.body.field")` — after the block's request, stores the value in `KEY` (same map as `# @var`)
|
|
151
|
+
- `# @getter KEY` or `/* @getter("KEY") */` — fails early if `KEY` is not defined
|
|
152
|
+
- Use `{{KEY}}` in URL, headers, body, or assertion expected values
|
|
153
|
+
- Variables persist across blocks in the file and across files in the same `http test` run
|
|
154
|
+
|
|
115
155
|
Project root `.env.dev`:
|
|
116
156
|
|
|
117
157
|
```env
|
|
@@ -134,27 +174,64 @@ cursortoys http test -f .cursor/http/api.req --verbose --var API_KEY=xxx
|
|
|
134
174
|
cursortoys http test --folder integrations
|
|
135
175
|
```
|
|
136
176
|
|
|
137
|
-
### Skill Management
|
|
177
|
+
### Skill Management (`skills`)
|
|
138
178
|
|
|
139
|
-
Create and
|
|
179
|
+
Create, install official skills, and import from GitHub — parity with the CursorToys extension.
|
|
140
180
|
|
|
141
181
|
```bash
|
|
142
|
-
cursortoys
|
|
143
|
-
cursortoys
|
|
144
|
-
cursortoys
|
|
182
|
+
cursortoys skills add my-skill
|
|
183
|
+
cursortoys skills add http-testing -d "Skill for testing HTTP APIs"
|
|
184
|
+
cursortoys skills add api-docs -t project -p /path/to/project
|
|
185
|
+
|
|
186
|
+
# Official bundled skills (see `skills list`)
|
|
187
|
+
cursortoys skills install # default: http (HTTP .req docs)
|
|
188
|
+
cursortoys skills install cli # CLI commands and flags
|
|
189
|
+
cursortoys skills install http -t project -p .
|
|
190
|
+
cursortoys skills install http --force
|
|
191
|
+
|
|
192
|
+
# Import full skill folder from GitHub (/tree/{branch}/{folder})
|
|
193
|
+
cursortoys skills import https://github.com/org/repo/tree/main/path/to/skill-folder -t project -p .
|
|
194
|
+
|
|
195
|
+
cursortoys skills list
|
|
145
196
|
```
|
|
146
197
|
|
|
198
|
+
| Subcommand | Description |
|
|
199
|
+
|------------|-------------|
|
|
200
|
+
| `add <name>` | Create `SKILL.md` from template |
|
|
201
|
+
| `install [name]` | Install bundled skill (`http`, `cli`) |
|
|
202
|
+
| `import <url>` | Import skill folder from GitHub (requires `SKILL.md` at folder root) |
|
|
203
|
+
| `list` | List official bundled skills |
|
|
204
|
+
|
|
205
|
+
Shared options for `add`, `install`, and `import`:
|
|
206
|
+
|
|
147
207
|
| Option | Description |
|
|
148
208
|
|-------|-------------|
|
|
149
|
-
| `-d, --description <text>` | Skill description |
|
|
150
209
|
| `-t, --target <type>` | `personal` or `project` (default: `personal`) |
|
|
151
210
|
| `-p, --project <dir>` | Project directory (required if target is `project`) |
|
|
152
211
|
| `--base-folder <name>` | Base folder name (default: `cursor`) |
|
|
212
|
+
| `-f, --force` | Overwrite existing skill (`install` / `import`) |
|
|
213
|
+
| `-d, --description <text>` | Skill description (`add` only) |
|
|
214
|
+
|
|
215
|
+
**GitHub import URL format:** `https://github.com/{owner}/{repo}/tree/{branch}/{folder}` (HTTPS only). Unauthenticated API rate limit applies (~60 requests/hour).
|
|
216
|
+
|
|
217
|
+
**Deprecated:** `cursortoys skill …` still works but prints a deprecation notice — use `skills`.
|
|
218
|
+
|
|
219
|
+
Bundled skills: **`http`** (`cursor-toys-http`) — HTTP `.req` files, hooks, `@SETTER`/`@GETTER`; **`cli`** (`cursortoys-cli`) — CLI commands, flags, and CI usage.
|
|
153
220
|
|
|
154
221
|
### LLM Instructions
|
|
155
222
|
|
|
156
223
|
```bash
|
|
224
|
+
# Full instructions (llms.txt)
|
|
157
225
|
cursortoys --llm
|
|
226
|
+
|
|
227
|
+
# Filter by topic (case-insensitive)
|
|
228
|
+
cursortoys --llm --grep http
|
|
229
|
+
|
|
230
|
+
# Line numbers only
|
|
231
|
+
cursortoys --llm --grep http --indices
|
|
232
|
+
|
|
233
|
+
# Section index (## / ### headings)
|
|
234
|
+
cursortoys --llm --indices
|
|
158
235
|
```
|
|
159
236
|
|
|
160
237
|
## HTTP Test Output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertionParser.d.ts","sourceRoot":"","sources":["../src/assertionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"assertionParser.d.ts","sourceRoot":"","sources":["../src/assertionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,kBAAkB,CAAC;AAGhE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAiB9D;AAuMD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC/F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
package/dist/assertionParser.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.extractAssertions = extractAssertions;
|
|
4
4
|
exports.validateAssertionSyntax = validateAssertionSyntax;
|
|
5
5
|
exports.removeAssertionBlocks = removeAssertionBlocks;
|
|
6
|
+
const responseChainParser_1 = require("./responseChainParser");
|
|
6
7
|
/**
|
|
7
8
|
* Extracts assertions from HTTP request file content.
|
|
8
9
|
* Looks for comment blocks containing @assert() annotations.
|
|
@@ -227,8 +228,6 @@ function validateAssertionSyntax(content) {
|
|
|
227
228
|
* @returns Content with assertion blocks removed
|
|
228
229
|
*/
|
|
229
230
|
function removeAssertionBlocks(content) {
|
|
230
|
-
|
|
231
|
-
const blockRegex = /\/\*[\s\S]*?@assert[\s\S]*?\*\//g;
|
|
232
|
-
return content.replace(blockRegex, '').trim();
|
|
231
|
+
return (0, responseChainParser_1.removeAnnotationBlocks)(content);
|
|
233
232
|
}
|
|
234
233
|
//# sourceMappingURL=assertionParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertionParser.js","sourceRoot":"","sources":["../src/assertionParser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"assertionParser.js","sourceRoot":"","sources":["../src/assertionParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Assertion, AssertionResult } from './assertionTypes';
|
|
2
2
|
import { HttpRequestResult } from './httpRunner';
|
|
3
|
+
export { buildResponseData, resolveExpression } from './responseExpression';
|
|
3
4
|
/**
|
|
4
5
|
* Validates assertions against HTTP response
|
|
5
6
|
* @param assertions Array of assertions to validate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertionValidator.d.ts","sourceRoot":"","sources":["../src/assertionValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"assertionValidator.d.ts","sourceRoot":"","sources":["../src/assertionValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,SAAS,EAAE,EACvB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,eAAe,EAAE,CAmBnB;AA6KD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAgCzE"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveExpression = exports.buildResponseData = void 0;
|
|
3
4
|
exports.validateAssertions = validateAssertions;
|
|
4
5
|
exports.formatAssertionResults = formatAssertionResults;
|
|
6
|
+
const responseExpression_1 = require("./responseExpression");
|
|
7
|
+
var responseExpression_2 = require("./responseExpression");
|
|
8
|
+
Object.defineProperty(exports, "buildResponseData", { enumerable: true, get: function () { return responseExpression_2.buildResponseData; } });
|
|
9
|
+
Object.defineProperty(exports, "resolveExpression", { enumerable: true, get: function () { return responseExpression_2.resolveExpression; } });
|
|
5
10
|
/**
|
|
6
11
|
* Validates assertions against HTTP response
|
|
7
12
|
* @param assertions Array of assertions to validate
|
|
@@ -10,12 +15,7 @@ exports.formatAssertionResults = formatAssertionResults;
|
|
|
10
15
|
*/
|
|
11
16
|
function validateAssertions(assertions, response, headers) {
|
|
12
17
|
const results = [];
|
|
13
|
-
|
|
14
|
-
const responseData = {
|
|
15
|
-
status: response.statusCode,
|
|
16
|
-
headers: headers || {},
|
|
17
|
-
body: parseResponseBody(response.body),
|
|
18
|
-
};
|
|
18
|
+
const responseData = (0, responseExpression_1.buildResponseData)(response, headers);
|
|
19
19
|
for (const assertion of assertions) {
|
|
20
20
|
try {
|
|
21
21
|
const result = evaluateAssertion(assertion, responseData);
|
|
@@ -31,22 +31,6 @@ function validateAssertions(assertions, response, headers) {
|
|
|
31
31
|
}
|
|
32
32
|
return results;
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Parses response body to JSON if possible, otherwise returns raw string
|
|
36
|
-
* @param body Response body string
|
|
37
|
-
* @returns Parsed JSON object or raw string
|
|
38
|
-
*/
|
|
39
|
-
function parseResponseBody(body) {
|
|
40
|
-
if (!body || body.trim() === '') {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
return JSON.parse(body);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return body;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
34
|
/**
|
|
51
35
|
* Evaluates a single assertion
|
|
52
36
|
* @param assertion The assertion to evaluate
|
|
@@ -55,7 +39,7 @@ function parseResponseBody(body) {
|
|
|
55
39
|
*/
|
|
56
40
|
function evaluateAssertion(assertion, responseData) {
|
|
57
41
|
// Resolve the expression to get actual value
|
|
58
|
-
const actualValue = resolveExpression(assertion.expression, responseData);
|
|
42
|
+
const actualValue = (0, responseExpression_1.resolveExpression)(assertion.expression, responseData);
|
|
59
43
|
// Evaluate based on operator
|
|
60
44
|
const passed = evaluateOperator(assertion.operator, actualValue, assertion.expected);
|
|
61
45
|
return {
|
|
@@ -64,40 +48,6 @@ function evaluateAssertion(assertion, responseData) {
|
|
|
64
48
|
actualValue,
|
|
65
49
|
};
|
|
66
50
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Resolves an expression like "res.status" or "res.body.userId" to its actual value
|
|
69
|
-
* @param expression Expression to resolve
|
|
70
|
-
* @param responseData Response data
|
|
71
|
-
* @returns Resolved value
|
|
72
|
-
*/
|
|
73
|
-
function resolveExpression(expression, responseData) {
|
|
74
|
-
// Split expression by dots, but handle bracket notation too
|
|
75
|
-
// e.g., "res.body.users[0].name" -> ["res", "body", "users[0]", "name"]
|
|
76
|
-
const parts = expression.split('.');
|
|
77
|
-
let current = { res: responseData };
|
|
78
|
-
for (const part of parts) {
|
|
79
|
-
if (current === null || current === undefined) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
// Handle array indexing: "users[0]" -> access users then [0]
|
|
83
|
-
const arrayMatch = part.match(/^([^\[]+)\[(\d+)\]$/);
|
|
84
|
-
if (arrayMatch) {
|
|
85
|
-
const propName = arrayMatch[1];
|
|
86
|
-
const index = parseInt(arrayMatch[2], 10);
|
|
87
|
-
current = current[propName];
|
|
88
|
-
if (Array.isArray(current)) {
|
|
89
|
-
current = current[index];
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
current = current[part];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return current;
|
|
100
|
-
}
|
|
101
51
|
/**
|
|
102
52
|
* Evaluates operator against actual and expected values
|
|
103
53
|
* @param operator Assertion operator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertionValidator.js","sourceRoot":"","sources":["../src/assertionValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assertionValidator.js","sourceRoot":"","sources":["../src/assertionValidator.ts"],"names":[],"mappings":"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"}
|
package/dist/banner.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AA2CF,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CASxD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAI5D"}
|
package/dist/banner.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderBanner = renderBanner;
|
|
7
|
+
exports.shouldUseColor = shouldUseColor;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
function colorize(useColor) {
|
|
10
|
+
if (!useColor) {
|
|
11
|
+
return {
|
|
12
|
+
t: (s) => s,
|
|
13
|
+
o: (s) => s,
|
|
14
|
+
y: (s) => s,
|
|
15
|
+
s: (s) => s,
|
|
16
|
+
title: (s) => s,
|
|
17
|
+
dim: (s) => s,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// Paleta “cubo mágico” (aproximação): vermelho, verde, amarelo, azul.
|
|
21
|
+
return {
|
|
22
|
+
t: (s) => chalk_1.default.redBright(s),
|
|
23
|
+
o: (s) => chalk_1.default.greenBright(s),
|
|
24
|
+
y: (s) => chalk_1.default.yellowBright(s),
|
|
25
|
+
s: (s) => chalk_1.default.blueBright(s),
|
|
26
|
+
title: (s) => chalk_1.default.whiteBright.bold(s),
|
|
27
|
+
dim: (s) => chalk_1.default.gray(s),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function renderToysAscii(useColor) {
|
|
31
|
+
const c = colorize(useColor);
|
|
32
|
+
const T = (s) => c.t(s);
|
|
33
|
+
const O = (s) => c.o(s);
|
|
34
|
+
const Y = (s) => c.y(s);
|
|
35
|
+
const S = (s) => c.s(s);
|
|
36
|
+
// Mantém o mesmo “desenho” por linha, para ficar alinhado.
|
|
37
|
+
return [
|
|
38
|
+
`${T('TTTT')} ${O('OOO')} ${Y('Y Y')} ${S('SSS')}`,
|
|
39
|
+
`${T(' T ')} ${O('O O')} ${Y(' Y Y ')} ${S('S ')}`,
|
|
40
|
+
`${T(' T ')} ${O('O O')} ${Y(' Y ')} ${S('SSS')}`,
|
|
41
|
+
`${T(' T ')} ${O('O O')} ${Y(' Y ')} ${S(' S')}`,
|
|
42
|
+
`${T(' T ')} ${O('OOO')} ${Y(' Y ')} ${S('SSS')}`,
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
function renderBanner(opts) {
|
|
46
|
+
const c = colorize(opts.useColor);
|
|
47
|
+
const lines = [];
|
|
48
|
+
lines.push(c.title('CursorToys'));
|
|
49
|
+
lines.push(...renderToysAscii(opts.useColor));
|
|
50
|
+
lines.push(c.dim(`v${opts.version}`));
|
|
51
|
+
return lines.join('\n');
|
|
52
|
+
}
|
|
53
|
+
function shouldUseColor(streamIsTty) {
|
|
54
|
+
if (!streamIsTty)
|
|
55
|
+
return false;
|
|
56
|
+
if (process.env.NO_COLOR)
|
|
57
|
+
return false;
|
|
58
|
+
return Boolean(chalk_1.default.supportsColor);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
|