devkits-lorem 1.0.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.
Files changed (4) hide show
  1. package/README.md +116 -0
  2. package/index.js +156 -0
  3. package/package.json +48 -0
  4. package/test.js +79 -0
package/README.md ADDED
@@ -0,0 +1,116 @@
1
+ # devkits-lorem
2
+
3
+ > Generate Lorem Ipsum placeholder text
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g devkits-lorem
9
+ ```
10
+
11
+ Or use without installation:
12
+
13
+ ```bash
14
+ npx devkits-lorem [args]
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ # Generate 1 paragraph (default)
21
+ dk-lorem
22
+
23
+ # Generate multiple paragraphs
24
+ dk-lorem -p 3
25
+ dk-lorem --paragraphs 5
26
+
27
+ # Generate sentences
28
+ dk-lorem -s 5
29
+ dk-lorem --sentences 10
30
+
31
+ # Generate specific word count
32
+ dk-lorem -w 100
33
+ dk-lorem --words 50
34
+ ```
35
+
36
+ ## Why @devkits/lorem?
37
+
38
+ - ✅ Fast - Instant generation
39
+ - ✅ Zero dependencies - Pure Node.js
40
+ - ✅ Offline - Works without internet
41
+ - ✅ Free - Open source (MIT)
42
+ - ✅ CLI - Use in your terminal
43
+ - ✅ Multiple modes - paragraphs, sentences, or words
44
+
45
+ ## Web Version
46
+
47
+ Prefer a GUI? Check out the web version: **https://devkits-tools.surge.sh/tools/lorem-ipsum**
48
+
49
+ - 84 developer tools in one PWA
50
+ - Works offline
51
+ - No signup required
52
+
53
+ ## Pro Features
54
+
55
+ Upgrade to Pro for advanced features:
56
+
57
+ - 📦 Batch Processing
58
+ - 🔗 API Access (1000 req/day free)
59
+ - ☁️ Cloud Sync
60
+ - 🎨 Custom Themes
61
+ - 📊 Advanced Analytics
62
+ - 💬 Priority Support
63
+
64
+ **Price:** $9 one-time payment
65
+ **Upgrade:** https://devkits-tools.surge.sh/pro
66
+ **Discount:** Use code `EARLYBIRD-2026` for 20% off
67
+
68
+ ## See Also
69
+
70
+ Part of the **[DevKits Tools](https://devkits-tools.surge.sh)** collection — 80+ free developer tools:
71
+
72
+ ### Popular Tools
73
+
74
+ | Tool | npm Package | Description |
75
+ |------|-------------|-------------|
76
+ | **[Base64](https://devkits-tools.surge.sh/tools/base64)** | `@devkits/base64` | Encode/decode Base64 |
77
+ | **[JSON Formatter](https://devkits-tools.surge.sh/tools/json-formatter)** | `@devkits/json-formatter` | Format and validate JSON |
78
+ | **[Color Converter](https://devkits-tools.surge.sh/tools/color-converter)** | `@devkits/color-converter` | HEX/RGB/HSL conversion |
79
+ | **[UUID Generator](https://devkits-tools.surge.sh/tools/uuid-generator)** | `@devkits/uuid-generator` | Generate unique UUIDs |
80
+ | **[Hash Generator](https://devkits-tools.surge.sh/tools/hash-generator)** | `@devkits/hash-generator` | MD5, SHA1, SHA256, SHA512 |
81
+ | **[Regex Tester](https://devkits-tools.surge.sh/tools/regex-tester)** | `@devkits/regex-tester` | Test regex patterns |
82
+
83
+ ### Other DevKits Tools
84
+
85
+ - **[HTML Tools](https://devkits-tools.surge.sh/tools/html-entities)** — HTML entity encode/decode
86
+ - **[CSS Tools](https://devkits-tools.surge.sh/tools/css-minifier)** — CSS minify/format
87
+ - **[Cron Parser](https://devkits-tools.surge.sh/tools/cron-parser)** — Parse cron expressions
88
+ - **[Case Convert](https://devkits-tools.surge.sh/tools/text-case)** — camelCase, snake_case, etc.
89
+ - **[Slugify](https://devkits-tools.surge.sh/tools/slug-generator)** — Create URL-friendly slugs
90
+ - **[Password Generator](https://devkits-tools.surge.sh/tools/password-generator)** — Secure passwords
91
+ - **[Text Counter](https://devkits-tools.surge.sh/tools/text-counter)** — Word/char counter
92
+ - **[Timestamp](https://devkits-tools.surge.sh/tools/timestamp)** — Unix timestamp converter
93
+
94
+ ---
95
+
96
+ ### More from DevKits
97
+
98
+ - **[Invoicely](https://invoicely-app.surge.sh)** — Free invoice generator for freelancers
99
+ - **[SnapOG](https://snapog.surge.sh)** — Free OG image generator with 20+ templates
100
+ - **[API Monitor](https://api-monitor-saas.surge.sh)** — Real-time API monitoring
101
+
102
+ ---
103
+
104
+ 👉 **Explore all 80+ developer tools at [DevKits Tools](https://devkits-tools.surge.sh)**
105
+
106
+ ## License
107
+
108
+ MIT © [DevKits Team](https://devkits-tools.surge.sh)
109
+
110
+ ---
111
+
112
+ ## 🚀 API Monitoring for Developers
113
+
114
+ Build better APIs with **API Monitor SaaS** — real-time monitoring, alerting, and analytics.
115
+
116
+ 👉 **Early Access: $1 pre-order (50% off for life)** → https://api-monitor-saas.surge.sh?utm_source=npm&utm_medium=readme&utm_campaign=phase0
package/index.js ADDED
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * @devkits/lorem - Generate Lorem Ipsum placeholder text
5
+ *
6
+ * Usage:
7
+ * dk-lorem # Generate 1 paragraph
8
+ * dk-lorem -p 3 # Generate 3 paragraphs
9
+ * dk-lorem -s 5 # Generate 5 sentences
10
+ * dk-lorem -w 100 # Generate 100 words
11
+ *
12
+ * Web version: https://devkits-tools.surge.sh/tools/lorem-ipsum
13
+ * Pro features: https://devkits-tools.surge.sh/pro
14
+ */
15
+
16
+ const WORDS = [
17
+ 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',
18
+ 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',
19
+ 'magna', 'aliqua', 'ut', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',
20
+ 'exercitation', 'ullamco', 'laboris', 'nisi', 'ut', 'aliquip', 'ex', 'ea',
21
+ 'commodo', 'consequat', 'duis', 'aute', 'irure', 'dolor', 'in', 'reprehenderit',
22
+ 'voluptate', 'velit', 'esse', 'cillum', 'dolore', 'eu', 'fugiat', 'nulla',
23
+ 'pariatur', 'excepteur', 'sint', 'occaecat', 'cupidatat', 'non', 'proident',
24
+ 'sunt', 'in', 'culpa', 'qui', 'officia', 'deserunt', 'mollit', 'anim', 'id',
25
+ 'est', 'laborum', 'at', 'vero', 'eos', 'accusamus', 'iusto', 'odio', 'dignissimos',
26
+ 'ducimus', 'blanditiis', 'praesentium', 'voluptatum', 'deleniti', 'atque',
27
+ 'corrupti', 'quos', 'dolores', 'quas', 'molestias', 'excepturi', 'sint',
28
+ 'obcaecati', 'cupiditate', 'provident', 'similique', 'neque', 'porro',
29
+ 'quisquam', 'nihil', 'impedit', 'quo', 'minus', 'quod', 'maxime', 'placeat',
30
+ 'facere', 'possimus', 'omnis', 'voluptas', 'assumenda', 'repellendus',
31
+ ];
32
+
33
+ function randomWord() {
34
+ return WORDS[Math.floor(Math.random() * WORDS.length)];
35
+ }
36
+
37
+ function capitalize(str) {
38
+ return str.charAt(0).toUpperCase() + str.slice(1);
39
+ }
40
+
41
+ function generateSentence() {
42
+ const len = Math.floor(Math.random() * 8) + 5; // 5-12 words
43
+ const words = [];
44
+ for (let i = 0; i < len; i++) {
45
+ words.push(randomWord());
46
+ }
47
+ return capitalize(words.join(' ')) + '.';
48
+ }
49
+
50
+ function generateParagraph(numSentences = 5) {
51
+ const sentences = [];
52
+ for (let i = 0; i < numSentences; i++) {
53
+ sentences.push(generateSentence());
54
+ }
55
+ return sentences.join(' ');
56
+ }
57
+
58
+ function generateLorem(options = {}) {
59
+ const { type = 'paragraphs', count = 1 } = options;
60
+
61
+ switch (type) {
62
+ case 'sentences':
63
+ const sentences = [];
64
+ for (let i = 0; i < count; i++) {
65
+ sentences.push(generateSentence());
66
+ }
67
+ return sentences.join(' ');
68
+
69
+ case 'words':
70
+ const words = [];
71
+ for (let i = 0; i < count; i++) {
72
+ words.push(randomWord());
73
+ }
74
+ return words.join(' ');
75
+
76
+ case 'paragraphs':
77
+ default:
78
+ const paragraphs = [];
79
+ for (let i = 0; i < count; i++) {
80
+ paragraphs.push(generateParagraph());
81
+ }
82
+ return paragraphs.join('\n\n');
83
+ }
84
+ }
85
+
86
+ function showHelp() {
87
+ console.log(`
88
+ @devkits/lorem - Generate Lorem Ipsum placeholder text
89
+
90
+ Usage:
91
+ dk-lorem # 1 paragraph
92
+ dk-lorem -p 3 # 3 paragraphs
93
+ dk-lorem -s 5 # 5 sentences
94
+ dk-lorem -w 100 # 100 words
95
+ dk-lorem -t sentences -c 5 # 5 sentences (alternative)
96
+
97
+ Options:
98
+ -p, --paragraphs <n> Generate N paragraphs (default: 1)
99
+ -s, --sentences <n> Generate N sentences
100
+ -w, --words <n> Generate N words
101
+ -t, --type <type> Type: paragraphs, sentences, words
102
+ -c, --count <n> Count for type (default: 1)
103
+ -h, --help Show this help message
104
+
105
+ Examples:
106
+ dk-lorem # 1 paragraph
107
+ dk-lorem -p 5 # 5 paragraphs
108
+ dk-lorem -s 10 # 10 sentences
109
+ dk-lorem -w 50 # 50 words
110
+
111
+ Web version: https://devkits-tools.surge.sh/tools/lorem-ipsum
112
+ Pro features: https://devkits-tools.surge.sh/pro
113
+ `);
114
+ }
115
+
116
+ // Main entry point
117
+ const args = process.argv.slice(2);
118
+
119
+ if (!args.length || args.includes('-h') || args.includes('--help')) {
120
+ showHelp();
121
+ process.exit(0);
122
+ }
123
+
124
+ // Parse options
125
+ let type = 'paragraphs';
126
+ let count = 1;
127
+
128
+ for (let i = 0; i < args.length; i++) {
129
+ switch (args[i]) {
130
+ case '-p':
131
+ case '--paragraphs':
132
+ type = 'paragraphs';
133
+ count = parseInt(args[++i], 10) || 1;
134
+ break;
135
+ case '-s':
136
+ case '--sentences':
137
+ type = 'sentences';
138
+ count = parseInt(args[++i], 10) || 1;
139
+ break;
140
+ case '-w':
141
+ case '--words':
142
+ type = 'words';
143
+ count = parseInt(args[++i], 10) || 1;
144
+ break;
145
+ case '-t':
146
+ case '--type':
147
+ type = args[++i] || 'paragraphs';
148
+ break;
149
+ case '-c':
150
+ case '--count':
151
+ count = parseInt(args[++i], 10) || 1;
152
+ break;
153
+ }
154
+ }
155
+
156
+ console.log(generateLorem({ type, count }));
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "devkits-lorem",
3
+ "version": "1.0.0",
4
+ "description": "Generate Lorem Ipsum placeholder text",
5
+ "main": "index.js",
6
+ "bin": {
7
+ "dk-lorem": "./index.js",
8
+ "lorem": "./index.js"
9
+ },
10
+ "scripts": {
11
+ "test": "node test.js"
12
+ },
13
+ "keywords": [
14
+ "lorem",
15
+ "ipsum",
16
+ "placeholder",
17
+ "text",
18
+ "generator",
19
+ "devkits",
20
+ "developer-tools",
21
+ "cli",
22
+ "command-line",
23
+ "nodejs",
24
+ "utility",
25
+ "productivity",
26
+ "dev-tools",
27
+ "free-tools"
28
+ ],
29
+ "author": "DevKits Team <devkits-auto@protonmail.com>",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/devkits/tools"
34
+ },
35
+ "homepage": "https://devkits-tools.surge.sh/tools/lorem-ipsum",
36
+ "bugs": {
37
+ "url": "https://github.com/devkits/tools/issues"
38
+ },
39
+ "engines": {
40
+ "node": ">=14.0.0"
41
+ },
42
+ "files": [
43
+ "index.js",
44
+ "README.md",
45
+ "test.js"
46
+ ],
47
+ "dependencies": {}
48
+ }
package/test.js ADDED
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Tests for @devkits/lorem
5
+ */
6
+
7
+ const { execSync } = require('child_process');
8
+
9
+ const tests = [
10
+ {
11
+ name: 'Default generates 1 paragraph',
12
+ cmd: 'node index.js',
13
+ check: (result) => result.split('\n\n').length === 1
14
+ },
15
+ {
16
+ name: 'Generate 3 paragraphs',
17
+ cmd: 'node index.js -p 3',
18
+ check: (result) => result.split('\n\n').length === 3
19
+ },
20
+ {
21
+ name: 'Generate 5 sentences',
22
+ cmd: 'node index.js -s 5',
23
+ check: (result) => result.split('.').filter(s => s.trim()).length === 5
24
+ },
25
+ {
26
+ name: 'Generate 50 words',
27
+ cmd: 'node index.js -w 50',
28
+ check: (result) => result.split(/\s+/).length === 50
29
+ },
30
+ {
31
+ name: 'All words are valid lorem ipsum words',
32
+ cmd: 'node index.js -w 100',
33
+ check: (result) => {
34
+ const validWords = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',
35
+ 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',
36
+ 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',
37
+ 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea',
38
+ 'commodo', 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit',
39
+ 'voluptate', 'velit', 'esse', 'cillum', 'eu', 'fugiat', 'nulla',
40
+ 'pariatur', 'excepteur', 'sint', 'occaecat', 'cupidatat', 'non', 'proident',
41
+ 'sunt', 'culpa', 'qui', 'officia', 'deserunt', 'mollit', 'anim', 'id',
42
+ 'est', 'laborum', 'at', 'vero', 'eos', 'accusamus', 'iusto', 'odio', 'dignissimos',
43
+ 'ducimus', 'blanditiis', 'praesentium', 'voluptatum', 'deleniti', 'atque',
44
+ 'corrupti', 'quos', 'dolores', 'quas', 'molestias', 'excepturi',
45
+ 'obcaecati', 'cupiditate', 'provident', 'similique', 'neque', 'porro',
46
+ 'quisquam', 'nihil', 'impedit', 'quo', 'minus', 'quod', 'maxime', 'placeat',
47
+ 'facere', 'possimus', 'omnis', 'voluptas', 'assumenda', 'repellendus'];
48
+ return result.toLowerCase().split(/\s+/).every(word => {
49
+ const clean = word.replace(/[^a-z]/g, '');
50
+ return validWords.includes(clean);
51
+ });
52
+ }
53
+ },
54
+ ];
55
+
56
+ let passed = 0;
57
+ let failed = 0;
58
+
59
+ console.log('Running @devkits/lorem tests...\n');
60
+
61
+ for (const test of tests) {
62
+ try {
63
+ const result = execSync(test.cmd, { encoding: 'utf8' }).trim();
64
+ if (test.check(result)) {
65
+ console.log(`✅ ${test.name}`);
66
+ passed++;
67
+ } else {
68
+ console.log(`❌ ${test.name}`);
69
+ console.log(` Got: ${result.substring(0, 100)}...`);
70
+ failed++;
71
+ }
72
+ } catch (err) {
73
+ console.log(`❌ ${test.name} - Error: ${err.message}`);
74
+ failed++;
75
+ }
76
+ }
77
+
78
+ console.log(`\n${passed}/${tests.length} tests passed`);
79
+ process.exit(failed > 0 ? 1 : 0);