zammy 1.2.1 → 1.3.2

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.
Files changed (36) hide show
  1. package/README.md +322 -239
  2. package/assets/zammy.gif +0 -0
  3. package/dist/chunk-LLLEINP6.js +1229 -0
  4. package/dist/index.js +1886 -489
  5. package/dist/plugins.d.ts +168 -0
  6. package/dist/plugins.js +47 -0
  7. package/package.json +20 -2
  8. package/packages/plugins/docker/README.md +141 -0
  9. package/packages/plugins/docker/dist/index.d.ts +4 -0
  10. package/packages/plugins/docker/dist/index.d.ts.map +1 -0
  11. package/packages/plugins/docker/dist/index.js +402 -0
  12. package/packages/plugins/docker/dist/index.js.map +1 -0
  13. package/packages/plugins/docker/package.json +32 -0
  14. package/packages/plugins/docker/zammy-plugin.json +16 -0
  15. package/packages/plugins/faker/README.md +65 -0
  16. package/packages/plugins/faker/dist/index.d.ts +4 -0
  17. package/packages/plugins/faker/dist/index.d.ts.map +1 -0
  18. package/packages/plugins/faker/dist/index.js +349 -0
  19. package/packages/plugins/faker/dist/index.js.map +1 -0
  20. package/packages/plugins/faker/package.json +32 -0
  21. package/packages/plugins/faker/zammy-plugin.json +14 -0
  22. package/packages/plugins/network/README.md +126 -0
  23. package/packages/plugins/network/dist/index.d.ts +4 -0
  24. package/packages/plugins/network/dist/index.d.ts.map +1 -0
  25. package/packages/plugins/network/dist/index.js +405 -0
  26. package/packages/plugins/network/dist/index.js.map +1 -0
  27. package/packages/plugins/network/package.json +32 -0
  28. package/packages/plugins/network/zammy-plugin.json +17 -0
  29. package/packages/plugins/port/README.md +74 -0
  30. package/packages/plugins/port/dist/index.d.ts +4 -0
  31. package/packages/plugins/port/dist/index.d.ts.map +1 -0
  32. package/packages/plugins/port/dist/index.js +331 -0
  33. package/packages/plugins/port/dist/index.js.map +1 -0
  34. package/packages/plugins/port/package.json +32 -0
  35. package/packages/plugins/port/zammy-plugin.json +16 -0
  36. package/packages/plugins/tsconfig.base.json +17 -0
@@ -0,0 +1,402 @@
1
+ // Zammy Plugin: Docker
2
+ // Docker container management with pretty output
3
+ // ============ HELPERS ============
4
+ async function checkDockerInstalled(shell) {
5
+ try {
6
+ const result = await shell.spawn('docker', ['--version']);
7
+ if (result.code !== 0) {
8
+ return { installed: false };
9
+ }
10
+ const match = result.stdout.match(/Docker version ([\d.]+)/);
11
+ const version = match?.[1];
12
+ // Check if Docker daemon is running
13
+ const infoResult = await shell.spawn('docker', ['info']);
14
+ const running = infoResult.code === 0;
15
+ return { installed: true, version, running };
16
+ }
17
+ catch {
18
+ return { installed: false };
19
+ }
20
+ }
21
+ async function getContainers(shell, all = false) {
22
+ const args = [
23
+ 'ps',
24
+ '--format', '{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}\t{{.CreatedAt}}'
25
+ ];
26
+ if (all)
27
+ args.push('-a');
28
+ const result = await shell.spawn('docker', args);
29
+ if (result.code !== 0)
30
+ return [];
31
+ const containers = [];
32
+ const lines = result.stdout.trim().split('\n').filter(Boolean);
33
+ for (const line of lines) {
34
+ const [id, name, image, status, ports, created] = line.split('\t');
35
+ containers.push({
36
+ id: id || '',
37
+ name: name || '',
38
+ image: image || '',
39
+ status: status || '',
40
+ ports: ports || '-',
41
+ created: created || '',
42
+ running: status?.toLowerCase().includes('up') ?? false
43
+ });
44
+ }
45
+ return containers;
46
+ }
47
+ async function getImages(shell) {
48
+ const result = await shell.spawn('docker', [
49
+ 'images',
50
+ '--format', '{{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}\t{{.CreatedAt}}'
51
+ ]);
52
+ if (result.code !== 0)
53
+ return [];
54
+ const images = [];
55
+ const lines = result.stdout.trim().split('\n').filter(Boolean);
56
+ for (const line of lines) {
57
+ const [id, repository, tag, size, created] = line.split('\t');
58
+ images.push({
59
+ id: id || '',
60
+ repository: repository || '',
61
+ tag: tag || '',
62
+ size: size || '',
63
+ created: created || ''
64
+ });
65
+ }
66
+ return images;
67
+ }
68
+ async function getContainerStats(shell) {
69
+ const result = await shell.spawn('docker', [
70
+ 'stats',
71
+ '--no-stream',
72
+ '--format', '{{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}\t{{.BlockIO}}'
73
+ ]);
74
+ if (result.code !== 0)
75
+ return [];
76
+ const stats = [];
77
+ const lines = result.stdout.trim().split('\n').filter(Boolean);
78
+ for (const line of lines) {
79
+ const [id, name, cpu, memory, netIO, blockIO] = line.split('\t');
80
+ stats.push({
81
+ id: id || '',
82
+ name: name || '',
83
+ cpu: cpu || '0%',
84
+ memory: memory || '0B / 0B',
85
+ netIO: netIO || '0B / 0B',
86
+ blockIO: blockIO || '0B / 0B'
87
+ });
88
+ }
89
+ return stats;
90
+ }
91
+ async function getContainerLogs(shell, container, lines = 20) {
92
+ const result = await shell.spawn('docker', ['logs', '--tail', lines.toString(), container]);
93
+ if (result.code !== 0) {
94
+ return { logs: '', error: result.stderr || 'Failed to get logs' };
95
+ }
96
+ // Docker logs can be in stdout or stderr depending on the container
97
+ return { logs: result.stdout || result.stderr };
98
+ }
99
+ async function inspectContainer(shell, container) {
100
+ const result = await shell.spawn('docker', ['inspect', container]);
101
+ if (result.code !== 0) {
102
+ return { info: null, error: result.stderr || 'Container not found' };
103
+ }
104
+ try {
105
+ const data = JSON.parse(result.stdout);
106
+ return { info: data[0] };
107
+ }
108
+ catch {
109
+ return { info: null, error: 'Failed to parse container info' };
110
+ }
111
+ }
112
+ async function pruneDocker(shell, options) {
113
+ try {
114
+ // System prune
115
+ const args = ['system', 'prune', '-f'];
116
+ if (options.all)
117
+ args.push('-a');
118
+ if (options.volumes)
119
+ args.push('--volumes');
120
+ const result = await shell.spawn('docker', args);
121
+ if (result.code !== 0) {
122
+ return { success: false, error: result.stderr };
123
+ }
124
+ // Extract space reclaimed
125
+ const match = result.stdout.match(/Total reclaimed space:\s*([\d.]+\s*\w+)/i);
126
+ const spaceReclaimed = match?.[1] || 'Unknown';
127
+ return { success: true, spaceReclaimed };
128
+ }
129
+ catch (error) {
130
+ return { success: false, error: String(error) };
131
+ }
132
+ }
133
+ function formatAge(dateStr) {
134
+ try {
135
+ const date = new Date(dateStr);
136
+ const now = new Date();
137
+ const diffMs = now.getTime() - date.getTime();
138
+ const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
139
+ if (diffDays === 0)
140
+ return 'Today';
141
+ if (diffDays === 1)
142
+ return '1 day ago';
143
+ if (diffDays < 30)
144
+ return `${diffDays} days ago`;
145
+ if (diffDays < 365)
146
+ return `${Math.floor(diffDays / 30)} months ago`;
147
+ return `${Math.floor(diffDays / 365)} years ago`;
148
+ }
149
+ catch {
150
+ return dateStr;
151
+ }
152
+ }
153
+ // ============ PLUGIN ============
154
+ const plugin = {
155
+ activate(api) {
156
+ const { theme, symbols } = api.ui;
157
+ if (!api.shell) {
158
+ api.log.error('Docker plugin requires shell permission');
159
+ return;
160
+ }
161
+ const shell = api.shell;
162
+ api.registerCommand({
163
+ name: 'docker',
164
+ description: 'Docker container management',
165
+ usage: '/docker <action> [args]\n\n Actions: ps, images, logs, stats, prune, inspect',
166
+ async execute(args) {
167
+ // Check Docker installation first
168
+ const docker = await checkDockerInstalled(shell);
169
+ if (!docker.installed) {
170
+ console.log('');
171
+ console.log(` ${symbols.cross} ${theme.error('Docker is not installed')}`);
172
+ console.log('');
173
+ console.log(` ${theme.dim('Install Docker:')} https://docker.com/get-started`);
174
+ console.log('');
175
+ return;
176
+ }
177
+ if (!docker.running) {
178
+ console.log('');
179
+ console.log(` ${symbols.warning} ${theme.warning('Docker daemon is not running')}`);
180
+ console.log('');
181
+ console.log(` ${theme.dim('Start Docker Desktop or run:')} sudo systemctl start docker`);
182
+ console.log('');
183
+ return;
184
+ }
185
+ const action = args[0]?.toLowerCase();
186
+ if (!action) {
187
+ console.log('');
188
+ console.log(` ${symbols.rocket} ${theme.gradient('DOCKER')} ${theme.dim(`v${docker.version}`)}`);
189
+ console.log('');
190
+ console.log(` ${theme.dim('Usage:')} /docker <action> [args]`);
191
+ console.log('');
192
+ console.log(` ${theme.dim('Actions:')}`);
193
+ console.log(` ${theme.primary('ps')} ${theme.dim('List containers (use -a for all)')}`);
194
+ console.log(` ${theme.primary('images')} ${theme.dim('List images')}`);
195
+ console.log(` ${theme.primary('logs <id>')} ${theme.dim('View container logs')}`);
196
+ console.log(` ${theme.primary('stats')} ${theme.dim('Show resource usage')}`);
197
+ console.log(` ${theme.primary('prune')} ${theme.dim('Clean up unused resources')}`);
198
+ console.log(` ${theme.primary('inspect <id>')} ${theme.dim('Show container details')}`);
199
+ console.log('');
200
+ return;
201
+ }
202
+ console.log('');
203
+ switch (action) {
204
+ case 'ps': {
205
+ const showAll = args.includes('-a') || args.includes('--all');
206
+ const containers = await getContainers(shell, showAll);
207
+ console.log(` ${symbols.rocket} ${theme.gradient(showAll ? 'ALL CONTAINERS' : 'RUNNING CONTAINERS')}`);
208
+ console.log('');
209
+ if (containers.length === 0) {
210
+ console.log(` ${theme.dim(showAll ? 'No containers found' : 'No running containers')}`);
211
+ if (!showAll) {
212
+ console.log(` ${theme.dim('Use')} /docker ps -a ${theme.dim('to show all containers')}`);
213
+ }
214
+ }
215
+ else {
216
+ console.log(` ${theme.dim('ID'.padEnd(14))}${theme.dim('NAME'.padEnd(20))}${theme.dim('IMAGE'.padEnd(25))}${theme.dim('STATUS')}`);
217
+ console.log(` ${theme.dim('─'.repeat(70))}`);
218
+ for (const c of containers) {
219
+ const statusColor = c.running ? theme.success : theme.warning;
220
+ const statusIcon = c.running ? symbols.check : symbols.warning;
221
+ const shortStatus = c.status.split(' ').slice(0, 2).join(' ');
222
+ console.log(` ${theme.primary(c.id.slice(0, 12).padEnd(14))}` +
223
+ `${theme.secondary(c.name.slice(0, 18).padEnd(20))}` +
224
+ `${c.image.slice(0, 23).padEnd(25)}` +
225
+ `${statusIcon} ${statusColor(shortStatus)}`);
226
+ }
227
+ console.log('');
228
+ console.log(` ${theme.dim(`Total: ${containers.length} containers`)}`);
229
+ }
230
+ break;
231
+ }
232
+ case 'images': {
233
+ const images = await getImages(shell);
234
+ console.log(` ${symbols.rocket} ${theme.gradient('DOCKER IMAGES')}`);
235
+ console.log('');
236
+ if (images.length === 0) {
237
+ console.log(` ${theme.dim('No images found')}`);
238
+ }
239
+ else {
240
+ console.log(` ${theme.dim('REPOSITORY'.padEnd(30))}${theme.dim('TAG'.padEnd(15))}${theme.dim('SIZE'.padEnd(12))}${theme.dim('AGE')}`);
241
+ console.log(` ${theme.dim('─'.repeat(65))}`);
242
+ for (const img of images) {
243
+ const repoDisplay = img.repository.length > 28
244
+ ? img.repository.slice(0, 25) + '...'
245
+ : img.repository;
246
+ console.log(` ${theme.primary(repoDisplay.padEnd(30))}` +
247
+ `${theme.secondary(img.tag.slice(0, 13).padEnd(15))}` +
248
+ `${img.size.padEnd(12)}` +
249
+ `${theme.dim(formatAge(img.created))}`);
250
+ }
251
+ console.log('');
252
+ console.log(` ${theme.dim(`Total: ${images.length} images`)}`);
253
+ }
254
+ break;
255
+ }
256
+ case 'logs': {
257
+ const container = args[1];
258
+ if (!container) {
259
+ console.log(` ${symbols.warning} ${theme.warning('Usage:')} /docker logs <container-id>`);
260
+ break;
261
+ }
262
+ const lineCount = parseInt(args[2]) || 20;
263
+ console.log(` ${theme.dim(`Logs for`)} ${theme.primary(container)} ${theme.dim(`(last ${lineCount} lines)`)}`);
264
+ console.log(` ${theme.dim('─'.repeat(50))}`);
265
+ console.log('');
266
+ const { logs, error } = await getContainerLogs(shell, container, lineCount);
267
+ if (error) {
268
+ console.log(` ${symbols.cross} ${theme.error(error)}`);
269
+ break;
270
+ }
271
+ if (!logs.trim()) {
272
+ console.log(` ${theme.dim('No logs available')}`);
273
+ }
274
+ else {
275
+ const logLines = logs.trim().split('\n');
276
+ for (const line of logLines) {
277
+ // Color code log levels
278
+ let coloredLine = line;
279
+ if (line.includes('ERROR') || line.includes('error')) {
280
+ coloredLine = theme.error(line);
281
+ }
282
+ else if (line.includes('WARN') || line.includes('warn')) {
283
+ coloredLine = theme.warning(line);
284
+ }
285
+ else if (line.includes('INFO') || line.includes('info')) {
286
+ coloredLine = theme.dim(line);
287
+ }
288
+ console.log(` ${coloredLine}`);
289
+ }
290
+ }
291
+ break;
292
+ }
293
+ case 'stats': {
294
+ console.log(` ${symbols.rocket} ${theme.gradient('CONTAINER STATS')}`);
295
+ console.log('');
296
+ const stats = await getContainerStats(shell);
297
+ if (stats.length === 0) {
298
+ console.log(` ${theme.dim('No running containers')}`);
299
+ }
300
+ else {
301
+ console.log(` ${theme.dim('NAME'.padEnd(20))}${theme.dim('CPU'.padEnd(10))}${theme.dim('MEMORY'.padEnd(20))}${theme.dim('NET I/O')}`);
302
+ console.log(` ${theme.dim('─'.repeat(60))}`);
303
+ for (const s of stats) {
304
+ const cpuValue = parseFloat(s.cpu);
305
+ const cpuColor = cpuValue > 80 ? theme.error :
306
+ cpuValue > 50 ? theme.warning :
307
+ theme.success;
308
+ console.log(` ${theme.primary(s.name.slice(0, 18).padEnd(20))}` +
309
+ `${cpuColor(s.cpu.padEnd(10))}` +
310
+ `${s.memory.slice(0, 18).padEnd(20)}` +
311
+ `${theme.dim(s.netIO)}`);
312
+ }
313
+ }
314
+ break;
315
+ }
316
+ case 'prune': {
317
+ const pruneAll = args.includes('-a') || args.includes('--all');
318
+ const pruneVolumes = args.includes('--volumes');
319
+ console.log(` ${theme.dim('Cleaning up Docker resources...')}`);
320
+ const result = await pruneDocker(shell, { all: pruneAll, volumes: pruneVolumes });
321
+ if (result.success) {
322
+ console.log(` ${symbols.check} ${theme.success('Cleanup complete')}`);
323
+ console.log('');
324
+ console.log(` ${theme.dim('Space reclaimed:')} ${theme.primary(result.spaceReclaimed || '0B')}`);
325
+ if (!pruneAll) {
326
+ console.log('');
327
+ console.log(` ${theme.dim('Tip: Use')} /docker prune -a ${theme.dim('to remove unused images too')}`);
328
+ }
329
+ }
330
+ else {
331
+ console.log(` ${symbols.cross} ${theme.error(result.error || 'Prune failed')}`);
332
+ }
333
+ break;
334
+ }
335
+ case 'inspect': {
336
+ const container = args[1];
337
+ if (!container) {
338
+ console.log(` ${symbols.warning} ${theme.warning('Usage:')} /docker inspect <container-id>`);
339
+ break;
340
+ }
341
+ const { info, error } = await inspectContainer(shell, container);
342
+ if (error || !info) {
343
+ console.log(` ${symbols.cross} ${theme.error(error || 'Container not found')}`);
344
+ break;
345
+ }
346
+ console.log(` ${symbols.rocket} ${theme.gradient('CONTAINER DETAILS')}`);
347
+ console.log('');
348
+ // Extract useful info
349
+ const name = info['Name']?.replace('/', '') || 'Unknown';
350
+ const id = info['Id']?.slice(0, 12) || 'Unknown';
351
+ const state = info['State'] || {};
352
+ const config = info['Config'] || {};
353
+ const networkSettings = info['NetworkSettings'] || {};
354
+ console.log(` ${theme.dim('Name:')} ${theme.primary(name)}`);
355
+ console.log(` ${theme.dim('ID:')} ${id}`);
356
+ console.log(` ${theme.dim('Image:')} ${config['Image'] || 'Unknown'}`);
357
+ console.log(` ${theme.dim('Status:')} ${state['Status'] ? theme.success(String(state['Status'])) : theme.warning('Unknown')}`);
358
+ console.log(` ${theme.dim('Created:')} ${info['Created'] || 'Unknown'}`);
359
+ if (networkSettings['IPAddress']) {
360
+ console.log(` ${theme.dim('IP:')} ${networkSettings['IPAddress']}`);
361
+ }
362
+ const ports = networkSettings['Ports'] || {};
363
+ if (Object.keys(ports).length > 0) {
364
+ console.log('');
365
+ console.log(` ${theme.dim('Ports:')}`);
366
+ for (const [containerPort, bindings] of Object.entries(ports)) {
367
+ if (bindings && bindings.length > 0) {
368
+ const binding = bindings[0];
369
+ console.log(` ${theme.secondary(containerPort)} ${symbols.arrow} ${binding['HostPort'] || 'none'}`);
370
+ }
371
+ else {
372
+ console.log(` ${theme.secondary(containerPort)} ${symbols.arrow} ${theme.dim('not bound')}`);
373
+ }
374
+ }
375
+ }
376
+ const env = config['Env'] || [];
377
+ if (env.length > 0) {
378
+ console.log('');
379
+ console.log(` ${theme.dim('Environment:')} ${theme.dim(`(${env.length} vars)`)}`);
380
+ // Show first 5 env vars
381
+ for (const e of env.slice(0, 5)) {
382
+ const [key] = e.split('=');
383
+ console.log(` ${theme.dim(key)}`);
384
+ }
385
+ if (env.length > 5) {
386
+ console.log(` ${theme.dim(`... and ${env.length - 5} more`)}`);
387
+ }
388
+ }
389
+ break;
390
+ }
391
+ default:
392
+ console.log(` ${symbols.cross} ${theme.error(`Unknown action: ${action}`)}`);
393
+ console.log(` ${theme.dim('Run /docker to see available actions')}`);
394
+ }
395
+ console.log('');
396
+ }
397
+ });
398
+ api.log.info('Docker plugin activated');
399
+ }
400
+ };
401
+ export default plugin;
402
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "zammy-plugin-docker",
3
+ "version": "1.0.1",
4
+ "description": "Docker container management with pretty output",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": ["dist", "zammy-plugin.json", "README.md"],
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsc --watch"
12
+ },
13
+ "keywords": ["zammy-plugin", "zammy", "cli", "docker", "containers", "devops", "container-management"],
14
+ "author": "Aayush Adhikari",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/aayushadhikari7/zammy-cli.git",
19
+ "directory": "packages/plugins/docker"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/aayushadhikari7/zammy-cli/issues"
23
+ },
24
+ "homepage": "https://github.com/aayushadhikari7/zammy-cli/tree/main/packages/plugins/docker#readme",
25
+ "peerDependencies": {
26
+ "zammy": "^1.0.0"
27
+ },
28
+ "devDependencies": {
29
+ "zammy": "*",
30
+ "typescript": "^5.3.0"
31
+ }
32
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "zammy-plugin-docker",
3
+ "version": "1.0.0",
4
+ "displayName": "Docker",
5
+ "description": "Docker container management with pretty output",
6
+ "author": "Zammy CLI",
7
+ "license": "MIT",
8
+ "main": "./dist/index.js",
9
+ "commands": ["docker"],
10
+ "zammy": {
11
+ "minVersion": "1.2.0"
12
+ },
13
+ "permissions": {
14
+ "shell": true
15
+ }
16
+ }
@@ -0,0 +1,65 @@
1
+ # zammy-plugin-faker
2
+
3
+ Generate fake data for testing and development.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ /plugin install zammy-plugin-faker
9
+ ```
10
+
11
+ ## Commands
12
+
13
+ ### `/fake <type> [options]`
14
+
15
+ Generate various types of fake data.
16
+
17
+ | Type | Description | Example Output |
18
+ |------|-------------|----------------|
19
+ | `email` | Random email address | `john.smith42@gmail.com` |
20
+ | `name` | Random full name | `John Smith` |
21
+ | `phone` | Random phone number | `(555) 123-4567` |
22
+ | `address` | Random street address | `123 Oak St, Portland, OR 97201` |
23
+ | `uuid` | Random UUID | `550e8400-e29b-41d4-a716-446655440000` |
24
+ | `card` | Fake credit card (Luhn-valid) | `4532 1234 5678 9012` |
25
+ | `company` | Random company name | `Tech Solutions` |
26
+ | `date` | Random date | `March 15, 2023` |
27
+ | `lorem [n]` | Lorem ipsum (n sentences) | Lorem ipsum dolor sit amet... |
28
+ | `json <template>` | JSON with placeholders | See below |
29
+
30
+ ## Examples
31
+
32
+ ```bash
33
+ # Generate a random email
34
+ /fake email
35
+
36
+ # Generate 5 sentences of lorem ipsum
37
+ /fake lorem 5
38
+
39
+ # Generate JSON with fake data
40
+ /fake json {"user": "{{name}}", "email": "{{email}}", "id": "{{uuid}}"}
41
+ ```
42
+
43
+ ## JSON Placeholders
44
+
45
+ When using `/fake json`, you can use these placeholders:
46
+
47
+ - `{{name}}` - Full name
48
+ - `{{firstName}}` - First name only
49
+ - `{{lastName}}` - Last name only
50
+ - `{{email}}` - Email address
51
+ - `{{phone}}` - Phone number
52
+ - `{{address}}` - Full address
53
+ - `{{street}}` - Street only
54
+ - `{{city}}` - City only
55
+ - `{{state}}` - State abbreviation
56
+ - `{{zip}}` - ZIP code
57
+ - `{{uuid}}` - UUID
58
+ - `{{company}}` - Company name
59
+ - `{{date}}` - ISO date
60
+ - `{{number}}` - Random number (1-1000)
61
+ - `{{bool}}` - true or false
62
+
63
+ ## License
64
+
65
+ MIT
@@ -0,0 +1,4 @@
1
+ import type { ZammyPlugin } from 'zammy/plugins';
2
+ declare const plugin: ZammyPlugin;
3
+ export default plugin;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,eAAe,CAAC;AAoQ5D,QAAA,MAAM,MAAM,EAAE,WAsJb,CAAC;AAEF,eAAe,MAAM,CAAC"}