@jam-nodes/playground 0.1.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/commands/credentials.d.ts +6 -0
- package/dist/commands/credentials.d.ts.map +1 -0
- package/dist/commands/credentials.js +205 -0
- package/dist/commands/credentials.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +76 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +6 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +111 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/run.d.ts +6 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +245 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/credentials/env-provider.d.ts +54 -0
- package/dist/credentials/env-provider.d.ts.map +1 -0
- package/dist/credentials/env-provider.js +177 -0
- package/dist/credentials/env-provider.js.map +1 -0
- package/dist/credentials/index.d.ts +2 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +2 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +2 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +49 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +189 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/mock-generator.d.ts +11 -0
- package/dist/utils/mock-generator.d.ts.map +1 -0
- package/dist/utils/mock-generator.js +199 -0
- package/dist/utils/mock-generator.js.map +1 -0
- package/package.json +53 -0
- package/src/commands/credentials.ts +242 -0
- package/src/commands/index.ts +4 -0
- package/src/commands/init.ts +80 -0
- package/src/commands/list.ts +124 -0
- package/src/commands/run.ts +273 -0
- package/src/credentials/env-provider.ts +208 -0
- package/src/credentials/index.ts +10 -0
- package/src/index.ts +32 -0
- package/src/ui/index.ts +9 -0
- package/src/ui/prompts.ts +259 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/mock-generator.ts +227 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
/**
|
|
4
|
+
* Prompt user for credential input
|
|
5
|
+
*/
|
|
6
|
+
export async function promptForCredentials(serviceName, fields) {
|
|
7
|
+
console.log();
|
|
8
|
+
console.log(chalk.yellow(`🔑 Enter credentials for ${serviceName}:`));
|
|
9
|
+
console.log();
|
|
10
|
+
const answers = await inquirer.prompt(fields.map((field) => ({
|
|
11
|
+
type: field.type || 'password',
|
|
12
|
+
name: field.name,
|
|
13
|
+
message: field.message,
|
|
14
|
+
mask: '*',
|
|
15
|
+
})));
|
|
16
|
+
return answers;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Prompt user for how to provide credentials
|
|
20
|
+
*/
|
|
21
|
+
export async function promptCredentialSource(serviceName) {
|
|
22
|
+
const { choice } = await inquirer.prompt([
|
|
23
|
+
{
|
|
24
|
+
type: 'list',
|
|
25
|
+
name: 'choice',
|
|
26
|
+
message: `This node requires ${serviceName} credentials. How would you like to provide them?`,
|
|
27
|
+
choices: [
|
|
28
|
+
{ name: 'Use existing (from .env or saved)', value: 'existing' },
|
|
29
|
+
{ name: 'Enter now (one-time)', value: 'enter' },
|
|
30
|
+
{ name: 'Enter and save for later', value: 'save' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
]);
|
|
34
|
+
return choice;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Prompt user to save credentials
|
|
38
|
+
*/
|
|
39
|
+
export async function promptSaveCredentials() {
|
|
40
|
+
const { save } = await inquirer.prompt([
|
|
41
|
+
{
|
|
42
|
+
type: 'confirm',
|
|
43
|
+
name: 'save',
|
|
44
|
+
message: 'Would you like to save these credentials for future use?',
|
|
45
|
+
default: false,
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
return save;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Generate prompts from a Zod schema
|
|
52
|
+
*/
|
|
53
|
+
export function generatePromptsFromSchema(schema, prefix = '') {
|
|
54
|
+
const prompts = [];
|
|
55
|
+
// Get the schema shape
|
|
56
|
+
const def = schema._def;
|
|
57
|
+
// Handle ZodObject
|
|
58
|
+
if (def.typeName === 'ZodObject' && def.shape) {
|
|
59
|
+
const shape = def.shape();
|
|
60
|
+
for (const [key, fieldSchema] of Object.entries(shape)) {
|
|
61
|
+
const fieldDef = fieldSchema._def;
|
|
62
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
63
|
+
// Check if optional
|
|
64
|
+
const isOptional = fieldDef.typeName === 'ZodOptional' || fieldDef.typeName === 'ZodDefault';
|
|
65
|
+
let innerDef = fieldDef;
|
|
66
|
+
let defaultValue = undefined;
|
|
67
|
+
// Unwrap optional/default
|
|
68
|
+
if (fieldDef.typeName === 'ZodOptional' && fieldDef.innerType) {
|
|
69
|
+
innerDef = fieldDef.innerType._def;
|
|
70
|
+
}
|
|
71
|
+
else if (fieldDef.typeName === 'ZodDefault' && fieldDef.innerType && fieldDef.defaultValue) {
|
|
72
|
+
innerDef = fieldDef.innerType._def;
|
|
73
|
+
defaultValue = fieldDef.defaultValue();
|
|
74
|
+
}
|
|
75
|
+
// Determine prompt type based on Zod type
|
|
76
|
+
let promptType = 'input';
|
|
77
|
+
let choices;
|
|
78
|
+
if (innerDef.typeName === 'ZodNumber') {
|
|
79
|
+
promptType = 'number';
|
|
80
|
+
}
|
|
81
|
+
else if (innerDef.typeName === 'ZodBoolean') {
|
|
82
|
+
promptType = 'confirm';
|
|
83
|
+
}
|
|
84
|
+
else if (innerDef.typeName === 'ZodEnum' && innerDef.values) {
|
|
85
|
+
promptType = 'list';
|
|
86
|
+
choices = innerDef.values.map((v) => ({ name: v, value: v }));
|
|
87
|
+
}
|
|
88
|
+
else if (innerDef.typeName === 'ZodArray') {
|
|
89
|
+
// For arrays, we'll use a comma-separated input
|
|
90
|
+
promptType = 'input';
|
|
91
|
+
}
|
|
92
|
+
else if (innerDef.typeName === 'ZodObject') {
|
|
93
|
+
// Nested objects use editor for JSON input
|
|
94
|
+
promptType = 'editor';
|
|
95
|
+
}
|
|
96
|
+
// Get description from schema if available
|
|
97
|
+
const description = fieldSchema.description || key;
|
|
98
|
+
prompts.push({
|
|
99
|
+
name: fullKey,
|
|
100
|
+
message: `${description}${isOptional ? ' (optional)' : ' *'}`,
|
|
101
|
+
type: promptType,
|
|
102
|
+
default: defaultValue,
|
|
103
|
+
choices,
|
|
104
|
+
required: !isOptional,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return prompts;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Prompt user for node input based on schema
|
|
112
|
+
*/
|
|
113
|
+
export async function promptForNodeInput(schema, existingInput) {
|
|
114
|
+
const prompts = generatePromptsFromSchema(schema);
|
|
115
|
+
// Build inquirer questions
|
|
116
|
+
const questions = prompts.map((p) => {
|
|
117
|
+
const existingValue = existingInput?.[p.name];
|
|
118
|
+
const defaultVal = existingValue !== undefined ? existingValue : p.default;
|
|
119
|
+
const question = {
|
|
120
|
+
type: p.type,
|
|
121
|
+
name: p.name,
|
|
122
|
+
message: p.message,
|
|
123
|
+
default: defaultVal,
|
|
124
|
+
};
|
|
125
|
+
if (p.choices) {
|
|
126
|
+
question.choices = p.choices;
|
|
127
|
+
}
|
|
128
|
+
// For optional fields, allow empty input
|
|
129
|
+
if (!p.required && p.type === 'input') {
|
|
130
|
+
question.filter = (input) => (input === '' ? undefined : input);
|
|
131
|
+
}
|
|
132
|
+
// Handle array inputs (comma-separated)
|
|
133
|
+
if (p.type === 'input' && p.message.toLowerCase().includes('array')) {
|
|
134
|
+
question.filter = (input) => {
|
|
135
|
+
if (!input || input.trim() === '')
|
|
136
|
+
return undefined;
|
|
137
|
+
return input.split(',').map((s) => s.trim());
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return question;
|
|
141
|
+
});
|
|
142
|
+
if (questions.length === 0) {
|
|
143
|
+
return {};
|
|
144
|
+
}
|
|
145
|
+
console.log();
|
|
146
|
+
console.log(chalk.dim('Enter node input:'));
|
|
147
|
+
console.log();
|
|
148
|
+
const answers = await inquirer.prompt(questions);
|
|
149
|
+
// Clean up undefined values
|
|
150
|
+
const cleaned = {};
|
|
151
|
+
for (const [key, value] of Object.entries(answers)) {
|
|
152
|
+
if (value !== undefined && value !== '') {
|
|
153
|
+
cleaned[key] = value;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return cleaned;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Confirm before running a node
|
|
160
|
+
*/
|
|
161
|
+
export async function confirmRun(nodeType) {
|
|
162
|
+
const { confirm } = await inquirer.prompt([
|
|
163
|
+
{
|
|
164
|
+
type: 'confirm',
|
|
165
|
+
name: 'confirm',
|
|
166
|
+
message: `Run ${nodeType}?`,
|
|
167
|
+
default: true,
|
|
168
|
+
},
|
|
169
|
+
]);
|
|
170
|
+
return confirm;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Select a node from a list
|
|
174
|
+
*/
|
|
175
|
+
export async function selectNode(nodes) {
|
|
176
|
+
const { nodeType } = await inquirer.prompt([
|
|
177
|
+
{
|
|
178
|
+
type: 'list',
|
|
179
|
+
name: 'nodeType',
|
|
180
|
+
message: 'Select a node to run:',
|
|
181
|
+
choices: nodes.map((n) => ({
|
|
182
|
+
name: `${n.name} (${n.type}) - ${n.description}`,
|
|
183
|
+
value: n.type,
|
|
184
|
+
})),
|
|
185
|
+
},
|
|
186
|
+
]);
|
|
187
|
+
return nodeType;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Generate mock data from a Zod schema
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateMockFromSchema(schema: z.ZodSchema): unknown;
|
|
6
|
+
/**
|
|
7
|
+
* Generate mock output for a specific node type
|
|
8
|
+
* Provides more realistic mock data for known node types
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateMockOutput(nodeType: string, outputSchema: z.ZodSchema): unknown;
|
|
11
|
+
//# sourceMappingURL=mock-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-generator.d.ts","sourceRoot":"","sources":["../../src/utils/mock-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,OAAO,CAGnE;AA2GD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,CAAC,SAAS,GACxB,OAAO,CAwGT"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate mock data from a Zod schema
|
|
3
|
+
*/
|
|
4
|
+
export function generateMockFromSchema(schema) {
|
|
5
|
+
const def = schema._def;
|
|
6
|
+
return generateFromDef(def);
|
|
7
|
+
}
|
|
8
|
+
function generateFromDef(def) {
|
|
9
|
+
const typeName = def.typeName;
|
|
10
|
+
switch (typeName) {
|
|
11
|
+
case 'ZodString':
|
|
12
|
+
return 'mock_string';
|
|
13
|
+
case 'ZodNumber':
|
|
14
|
+
return 42;
|
|
15
|
+
case 'ZodBoolean':
|
|
16
|
+
return true;
|
|
17
|
+
case 'ZodNull':
|
|
18
|
+
return null;
|
|
19
|
+
case 'ZodUndefined':
|
|
20
|
+
return undefined;
|
|
21
|
+
case 'ZodLiteral':
|
|
22
|
+
return def.value;
|
|
23
|
+
case 'ZodEnum':
|
|
24
|
+
// Return first enum value
|
|
25
|
+
return def.values[0];
|
|
26
|
+
case 'ZodNativeEnum':
|
|
27
|
+
// Return first enum value
|
|
28
|
+
const enumObj = def.values;
|
|
29
|
+
return Object.values(enumObj)[0];
|
|
30
|
+
case 'ZodArray':
|
|
31
|
+
// Generate 1-3 items
|
|
32
|
+
const itemDef = def.type._def;
|
|
33
|
+
return [generateFromDef(itemDef), generateFromDef(itemDef)];
|
|
34
|
+
case 'ZodObject':
|
|
35
|
+
const shape = def.shape();
|
|
36
|
+
const result = {};
|
|
37
|
+
for (const [key, fieldSchema] of Object.entries(shape)) {
|
|
38
|
+
result[key] = generateFromDef(fieldSchema._def);
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
case 'ZodUnion': {
|
|
42
|
+
// Use first union option
|
|
43
|
+
const options = def.options;
|
|
44
|
+
const firstOpt = options?.[0];
|
|
45
|
+
if (firstOpt) {
|
|
46
|
+
return generateFromDef(firstOpt._def);
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
case 'ZodDiscriminatedUnion': {
|
|
51
|
+
// Use first option
|
|
52
|
+
const discOptions = def.options;
|
|
53
|
+
const firstOption = Array.from(discOptions.values())[0];
|
|
54
|
+
if (firstOption) {
|
|
55
|
+
return generateFromDef(firstOption._def);
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
case 'ZodOptional':
|
|
60
|
+
case 'ZodNullable':
|
|
61
|
+
// Generate the inner type
|
|
62
|
+
const innerType = def.innerType;
|
|
63
|
+
return generateFromDef(innerType._def);
|
|
64
|
+
case 'ZodDefault':
|
|
65
|
+
// Use the default value
|
|
66
|
+
return def.defaultValue();
|
|
67
|
+
case 'ZodRecord':
|
|
68
|
+
// Generate a sample record
|
|
69
|
+
const valueDef = def.valueType._def;
|
|
70
|
+
return {
|
|
71
|
+
key1: generateFromDef(valueDef),
|
|
72
|
+
key2: generateFromDef(valueDef),
|
|
73
|
+
};
|
|
74
|
+
case 'ZodTuple':
|
|
75
|
+
const items = def.items;
|
|
76
|
+
return items.map((item) => generateFromDef(item._def));
|
|
77
|
+
case 'ZodPromise':
|
|
78
|
+
// Return the unwrapped type
|
|
79
|
+
const promiseType = def.type;
|
|
80
|
+
return generateFromDef(promiseType._def);
|
|
81
|
+
case 'ZodEffects':
|
|
82
|
+
// Return the inner type
|
|
83
|
+
const effectsSchema = def.schema;
|
|
84
|
+
return generateFromDef(effectsSchema._def);
|
|
85
|
+
case 'ZodUnknown':
|
|
86
|
+
case 'ZodAny':
|
|
87
|
+
return { mock: 'data' };
|
|
88
|
+
default:
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Generate mock output for a specific node type
|
|
94
|
+
* Provides more realistic mock data for known node types
|
|
95
|
+
*/
|
|
96
|
+
export function generateMockOutput(nodeType, outputSchema) {
|
|
97
|
+
// Custom mocks for known node types
|
|
98
|
+
const customMocks = {
|
|
99
|
+
conditional: {
|
|
100
|
+
conditionMet: true,
|
|
101
|
+
selectedBranch: 'true',
|
|
102
|
+
},
|
|
103
|
+
end: {
|
|
104
|
+
terminated: true,
|
|
105
|
+
reason: 'Workflow completed successfully',
|
|
106
|
+
},
|
|
107
|
+
delay: {
|
|
108
|
+
delayed: true,
|
|
109
|
+
delayMs: 1000,
|
|
110
|
+
},
|
|
111
|
+
map: {
|
|
112
|
+
result: [
|
|
113
|
+
{ transformed: 'item1' },
|
|
114
|
+
{ transformed: 'item2' },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
filter: {
|
|
118
|
+
result: [{ passes: true }],
|
|
119
|
+
originalCount: 3,
|
|
120
|
+
filteredCount: 1,
|
|
121
|
+
},
|
|
122
|
+
http_request: {
|
|
123
|
+
status: 200,
|
|
124
|
+
data: { message: 'Mock response' },
|
|
125
|
+
headers: { 'content-type': 'application/json' },
|
|
126
|
+
},
|
|
127
|
+
search_contacts: {
|
|
128
|
+
contacts: [
|
|
129
|
+
{
|
|
130
|
+
id: 'mock_contact_1',
|
|
131
|
+
name: 'John Doe',
|
|
132
|
+
firstName: 'John',
|
|
133
|
+
lastName: 'Doe',
|
|
134
|
+
email: 'john.doe@example.com',
|
|
135
|
+
title: 'CTO',
|
|
136
|
+
company: 'Example Corp',
|
|
137
|
+
linkedinUrl: 'https://linkedin.com/in/johndoe',
|
|
138
|
+
location: 'San Francisco, CA',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 'mock_contact_2',
|
|
142
|
+
name: 'Jane Smith',
|
|
143
|
+
firstName: 'Jane',
|
|
144
|
+
lastName: 'Smith',
|
|
145
|
+
email: 'jane.smith@example.com',
|
|
146
|
+
title: 'VP Engineering',
|
|
147
|
+
company: 'Tech Startup',
|
|
148
|
+
linkedinUrl: 'https://linkedin.com/in/janesmith',
|
|
149
|
+
location: 'New York, NY',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
totalFound: 2,
|
|
153
|
+
},
|
|
154
|
+
reddit_monitor: {
|
|
155
|
+
posts: [
|
|
156
|
+
{
|
|
157
|
+
id: 'mock_post_1',
|
|
158
|
+
title: 'Mock Reddit Post',
|
|
159
|
+
author: 'mock_user',
|
|
160
|
+
subreddit: 'technology',
|
|
161
|
+
score: 150,
|
|
162
|
+
url: 'https://reddit.com/r/technology/mock',
|
|
163
|
+
createdAt: new Date().toISOString(),
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
twitter_monitor: {
|
|
168
|
+
posts: [
|
|
169
|
+
{
|
|
170
|
+
id: 'mock_tweet_1',
|
|
171
|
+
text: 'Mock tweet content',
|
|
172
|
+
author: 'mockuser',
|
|
173
|
+
likes: 50,
|
|
174
|
+
retweets: 10,
|
|
175
|
+
createdAt: new Date().toISOString(),
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
social_keyword_generator: {
|
|
180
|
+
keywords: ['ai', 'machine learning', 'automation', 'workflow'],
|
|
181
|
+
hashtags: ['#AI', '#ML', '#Automation'],
|
|
182
|
+
},
|
|
183
|
+
draft_emails: {
|
|
184
|
+
drafts: [
|
|
185
|
+
{
|
|
186
|
+
to: 'john.doe@example.com',
|
|
187
|
+
subject: 'Mock Email Subject',
|
|
188
|
+
body: 'This is a mock email body for testing purposes.',
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
if (customMocks[nodeType]) {
|
|
194
|
+
return customMocks[nodeType];
|
|
195
|
+
}
|
|
196
|
+
// Fall back to schema-based generation
|
|
197
|
+
return generateMockFromSchema(outputSchema);
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=mock-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-generator.js","sourceRoot":"","sources":["../../src/utils/mock-generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jam-nodes/playground",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI tool for testing jam-nodes interactively",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"jam-playground": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsx src/index.ts",
|
|
13
|
+
"clean": "rm -rf dist",
|
|
14
|
+
"typecheck": "tsc --noEmit",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@jam-nodes/core": "*",
|
|
19
|
+
"@jam-nodes/nodes": "*",
|
|
20
|
+
"chalk": "^5.3.0",
|
|
21
|
+
"commander": "^12.1.0",
|
|
22
|
+
"conf": "^13.0.1",
|
|
23
|
+
"dotenv": "^16.4.5",
|
|
24
|
+
"inquirer": "^9.3.7",
|
|
25
|
+
"ora": "^8.1.1",
|
|
26
|
+
"zod": "^3.23.8"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/inquirer": "^9.0.7",
|
|
30
|
+
"@types/node": "^20.14.0",
|
|
31
|
+
"tsx": "^4.21.0",
|
|
32
|
+
"typescript": "^5.5.0"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"zod": "^3.0.0 || ^4.0.0"
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=18"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"jam-nodes",
|
|
42
|
+
"playground",
|
|
43
|
+
"cli",
|
|
44
|
+
"workflow",
|
|
45
|
+
"testing"
|
|
46
|
+
],
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/wespreadjam/jam-nodes.git",
|
|
50
|
+
"directory": "packages/playground"
|
|
51
|
+
},
|
|
52
|
+
"license": "MIT"
|
|
53
|
+
}
|