lapikit 0.0.0-insiders.a5a9884 → 0.0.0-insiders.ad37481

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.
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import presets from './presets';
5
+
6
+ export async function initConfiguration(options) {
7
+ console.log('initConfiguration called with:', options);
8
+ const { typescript, pathConfig } = options;
9
+ const ext = typescript ? 'ts' : 'js';
10
+ const targetDir = path.resolve(process.cwd(), pathConfig);
11
+ const targetFile = path.join(targetDir, `lapikit.${ext}`);
12
+
13
+ await fs.mkdir(targetDir, { recursive: true });
14
+
15
+ try {
16
+ console.log(`Trying to access ${targetFile}`);
17
+ await fs.access(targetFile);
18
+ console.log(`File ${targetFile} already exists.`);
19
+ } catch {
20
+ console.log(`Creating file: ${targetFile}`);
21
+ let content = presets();
22
+
23
+ await fs.writeFile(targetFile, content);
24
+ console.log(`File created : ${targetFile}`);
25
+ }
26
+ }
package/bin/index.js ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import { initConfiguration } from './configuration.js';
3
+ import { ansi, terminal } from './helper.js';
4
+ import { legacyConfiguration } from './legacy.js';
5
+ import { initPrompts } from './prompts.js';
6
+
7
+ async function run() {
8
+ console.log(' _ _ _ _ _ ');
9
+ console.log(' | | (_) | (_) | ');
10
+ console.log(' | | __ _ _ __ _| | ___| |_ ');
11
+ console.log(" | | / _` | '_ \\| | |/ / | __|");
12
+ console.log(' | |___| (_| | |_) | | <| | |_ ');
13
+ console.log(' |______\\__,_| .__/|_|_|\\_\\_|\\__|');
14
+ console.log(' | | ');
15
+ console.log(' |_| \n');
16
+
17
+ terminal('none', `${ansi.bold.blue('Lapikit')} - Component Library for Svelte\n\n`);
18
+
19
+ const promptsConfig = await initPrompts();
20
+
21
+ if (promptsConfig.env === 'current') {
22
+ await legacyConfiguration(promptsConfig);
23
+ }
24
+
25
+ if (promptsConfig.env === 'experimental') {
26
+ terminal('warn', `Experimental mode is not yet implemented.`);
27
+ await initConfiguration(promptsConfig);
28
+ }
29
+ }
30
+
31
+ run()
32
+ .then(() => {
33
+ console.log('Website: https://lapikit.dev');
34
+ console.log('Github: https://github.com/nycolaide/lapikit');
35
+ console.log('Support the developement: https://buymeacoffee.com/nycolaide');
36
+ process.exit(0);
37
+ })
38
+ .catch((error) => {
39
+ console.error(`\n${red('✖')} ${error}\n`);
40
+ process.exit(1);
41
+ });
package/bin/legacy.js ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { preset } from './modules/preset.js';
5
+ import { ansi, terminal, envTypescript } from './helper.js';
6
+ import { adapterCSSConfig, adapterViteConfig } from './modules/adapter.js';
7
+
8
+ export async function legacyConfiguration(options) {
9
+ const typescriptEnabled = envTypescript();
10
+ const configPath = path.resolve(process.cwd(), 'lapikit.config.js');
11
+
12
+ try {
13
+ await fs.writeFile(configPath, preset.trim() + '\n', 'utf8');
14
+ terminal('success', `has create lapikit.config.js on your project.`);
15
+ } catch (error) {
16
+ terminal('error', `failed to create configuration file:\n\n ${error}`);
17
+ terminal(
18
+ 'warn',
19
+ `you can create lapikit.config.js manually, please visite https://lapikit.dev/docs/getting-started for more information`
20
+ );
21
+ }
22
+
23
+ await adapterViteConfig(typescriptEnabled);
24
+ await adapterCSSConfig(options);
25
+
26
+ terminal(
27
+ 'info',
28
+ `${ansi.bold.blue('Thank to use lapikit, discover all posibility with lapikit on https://lapikit.dev')}\n\n`
29
+ );
30
+
31
+ console.log('Website: https://lapikit.dev');
32
+ console.log('Github: https://github.com/nycolaide/lapikit');
33
+ console.log('Support the developement: https://buymeacoffee.com/nycolaide');
34
+ }
@@ -1,6 +1,6 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
- import { getCssPathFromArgs, terminal } from '../helper.js';
3
+ import { terminal } from '../helper.js';
4
4
 
5
5
  const importLapikitVite = `import { lapikit } from 'lapikit/vite';`;
6
6
  const importLapikitCss = `@import 'lapikit/css';`;
@@ -33,8 +33,8 @@ export async function adapterViteConfig(typescript) {
33
33
  }
34
34
  }
35
35
 
36
- export async function adapterCSSConfig() {
37
- const cssPath = getCssPathFromArgs();
36
+ export async function adapterCSSConfig(options) {
37
+ const cssPath = options?.pathCSS || 'src/app.css';
38
38
  const resolvedPath = path.resolve(process.cwd(), cssPath);
39
39
  try {
40
40
  await fs.access(resolvedPath);
@@ -111,7 +111,7 @@ export async function setupSvelteKitIntegration(pluginPath, isTypescript) {
111
111
 
112
112
  // Imports
113
113
  const createLapikitImport = `\n\timport { createLapikit } from 'lapikit';`;
114
- const configImport = `import config from '${configImportPath}';`;
114
+ const configImport = `\timport config from '${configImportPath}';`;
115
115
 
116
116
  const scriptLang = isTypescript ? ' lang="ts"' : '';
117
117
  const effectCode = `\n\t$effect.pre(() => {\n\t\tcreateLapikit(config);\n\t});`;
@@ -147,3 +147,77 @@ export async function setupSvelteKitIntegration(pluginPath, isTypescript) {
147
147
  await fs.writeFile(targetFile, fileContent, 'utf8');
148
148
  terminal('success', `Config added ${targetFileName}.`);
149
149
  }
150
+
151
+ const [, , command] = process.argv;
152
+ const typescriptEnabled = envTypescript();
153
+ const args = process.argv.slice(2);
154
+ const previewMode = args.includes('--preview');
155
+
156
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
157
+ terminal(
158
+ 'info',
159
+ `usage: ${ansi.color.yellow('npx lapikit init {cssPath} [--plugin-path {pluginPath}] [--preview]')}\n\n ${ansi.variant.bold('options:')}\n
160
+ - {cssPath}: (${ansi.color.cyan('src/app.css')}) customize path on your origin css file.
161
+ - --plugin-path, -p: (${ansi.color.cyan('src/plugin')}) customize path for the plugin directory.
162
+ - --preview: active preview mode (plugin + SvelteKit integration)\n\n`
163
+ );
164
+ process.exit(0);
165
+ } else if (command === 'init') {
166
+ console.log(' _ _ _ _ _ ');
167
+ console.log(' | | (_) | (_) | ');
168
+ console.log(' | | __ _ _ __ _| | ___| |_ ');
169
+ console.log(" | | / _` | '_ \\| | |/ / | __|");
170
+ console.log(' | |___| (_| | |_) | | <| | |_ ');
171
+ console.log(' |______\\__,_| .__/|_|_|\\_\\_|\\__|');
172
+ console.log(' | | ');
173
+ console.log(' |_| \n');
174
+
175
+ terminal('none', `${ansi.bold.blue('LAPIKIT')} - Component Library for Svelte\n\n`);
176
+
177
+ if (previewMode) {
178
+ // Mode preview
179
+ const pluginPath = getLapikitPathFromArgs();
180
+ const pathValidation = validatePluginPath(pluginPath);
181
+ if (!pathValidation.valid) {
182
+ terminal('error', `Invalid path: ${pathValidation.error}`);
183
+ process.exit(1);
184
+ }
185
+ try {
186
+ await createPluginStructure(pluginPath, typescriptEnabled);
187
+ } catch (error) {
188
+ terminal('error', `Create plugin structure not working : ${error.message}`);
189
+ }
190
+ try {
191
+ await setupSvelteKitIntegration(pluginPath, typescriptEnabled);
192
+ } catch (error) {
193
+ terminal('error', `SvelteKit integration setup failed: ${error.message}`);
194
+ }
195
+ } else {
196
+ // Mode classic
197
+ const configPath = path.resolve(process.cwd(), 'lapikit.config.js');
198
+ try {
199
+ await fs.writeFile(configPath, preset.trim() + '\n', 'utf8');
200
+ terminal('success', `has create lapikit.config.js on your project.`);
201
+ } catch (error) {
202
+ terminal('error', `failed to create configuration file:\n\n ${error}`);
203
+ terminal(
204
+ 'warn',
205
+ `you can create lapikit.config.js manually, please visite https://lapikit.dev/docs/getting-started for more information`
206
+ );
207
+ }
208
+ await adapterCSSConfig();
209
+ }
210
+
211
+ await adapterViteConfig(typescriptEnabled);
212
+
213
+ terminal(
214
+ 'info',
215
+ `${ansi.bold.blue('Thank to use lapikit, discover all posibility with lapikit on https://lapikit.dev')}\n\n`
216
+ );
217
+
218
+ console.log('Website: https://lapikit.dev');
219
+ console.log('Github: https://github.com/nycolaide/lapikit');
220
+ console.log('Support the developement: https://buymeacoffee.com/nycolaide');
221
+ } else {
222
+ terminal('error', `Command not recognized. Try 'npx lapikit -h'`);
223
+ }
package/bin/presets.js ADDED
@@ -0,0 +1,15 @@
1
+ function presets() {
2
+ let content = '';
3
+
4
+ content += `/**
5
+ * Lapikit
6
+ * Library documentation: https://lapikit.dev
7
+ */\n\n`;
8
+ content += `// Styles\n`;
9
+ content += `import 'lapikit/css'\n`;
10
+ content += `// https://lapikit.dev/docs/getting-started\n`;
11
+
12
+ return content;
13
+ }
14
+
15
+ export default presets;
package/bin/prompts.js ADDED
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env node
2
+ import prompts from 'prompts';
3
+
4
+ export async function initPrompts() {
5
+ const { confirm } = await prompts({
6
+ type: 'toggle',
7
+ name: 'confirm',
8
+ message: 'Start install Lapikit on your app?',
9
+ initial: true,
10
+ active: 'Yes',
11
+ inactive: 'No'
12
+ });
13
+
14
+ if (!confirm) {
15
+ console.log('❌ Installation canceled. See you soon.');
16
+ process.exit(0);
17
+ }
18
+ // temps with legacy and new process install
19
+ const { type } = await prompts({
20
+ type: 'select',
21
+ name: 'type',
22
+ message: 'Select installation type:',
23
+ choices: [
24
+ { title: 'Classic install with lapikit.config.js', value: 'current' },
25
+ {
26
+ title: 'Preview install with new plugin/lapikit.(js|ts) <experimental>',
27
+ value: 'experimental'
28
+ }
29
+ ]
30
+ });
31
+
32
+ if (type === 'current') {
33
+ // Classic install
34
+ const settings = await prompts([
35
+ {
36
+ type: 'text',
37
+ name: 'pathCSS',
38
+ message: 'Where would you like to import the lapikit CSS files?',
39
+ initial: 'src/app.css',
40
+ validate: (value) =>
41
+ value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
42
+ }
43
+ ]);
44
+
45
+ return {
46
+ ...settings,
47
+ env: 'current'
48
+ };
49
+ } else if (type === 'experimental') {
50
+ // Preview install
51
+ let settings = await prompts([
52
+ {
53
+ type: 'text',
54
+ name: 'pathConfig',
55
+ message: 'Where would you like to install the lapikit configuration files?',
56
+ initial: 'src/plugins',
57
+ validate: (value) =>
58
+ value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
59
+ },
60
+ {
61
+ type: 'toggle',
62
+ name: 'typescript',
63
+ message: 'Use TypeScript?',
64
+ initial: true,
65
+ active: 'Yes',
66
+ inactive: 'No'
67
+ },
68
+ {
69
+ type: 'select',
70
+ name: 'formatCSS',
71
+ message: 'What is your CSS format used on your app?',
72
+ choices: [
73
+ { title: 'Common ( CSS / SASS / SCSS / LESS / other libs )', value: 'global' },
74
+ {
75
+ title: 'TailwindCSS (v4)',
76
+ value: 'tailwind-v4'
77
+ },
78
+ {
79
+ title: 'UnoCSS',
80
+ value: 'unocss'
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ type: (prev) => (prev !== 'global' ? 'text' : null),
86
+ name: 'pathCSS',
87
+ message: 'Where would you like to import the lapikit CSS files?',
88
+ initial: 'src/app.css',
89
+ validate: (value) =>
90
+ value.startsWith('src/') ? true : 'Please provide a valid path starting with src/'
91
+ }
92
+ ]);
93
+
94
+ console.log('response config', settings);
95
+
96
+ return {
97
+ ...settings,
98
+ env: 'experimental'
99
+ };
100
+ }
101
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lapikit",
3
- "version": "0.0.0-insiders.a5a9884",
3
+ "version": "0.0.0-insiders.ad37481",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -36,7 +36,7 @@
36
36
  "**/*.css"
37
37
  ],
38
38
  "bin": {
39
- "lapikit": "bin/lapikit.js"
39
+ "lapikit": "bin/index.js"
40
40
  },
41
41
  "svelte": "./dist/index.js",
42
42
  "types": "./dist/index.d.ts",
@@ -90,5 +90,8 @@
90
90
  },
91
91
  "keywords": [
92
92
  "svelte"
93
- ]
93
+ ],
94
+ "dependencies": {
95
+ "prompts": "^2.4.2"
96
+ }
94
97
  }