@flexsiteio/cli 1.0.1

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 (50) hide show
  1. package/.github/workflows/publish.yml +28 -0
  2. package/.nvmrc +1 -0
  3. package/README.md +166 -0
  4. package/db_727aa8c7-dev_xYhn06gTRFNmPbW3uOVKlQ.sql.gz +0 -0
  5. package/db_faef57dd-dev_3wnRGEk6KwkI_wgvygWf4g.sql.gz +0 -0
  6. package/dist/bin/flexsite.d.ts +7 -0
  7. package/dist/bin/flexsite.d.ts.map +1 -0
  8. package/dist/bin/flexsite.js +31 -0
  9. package/dist/bin/flexsite.js.map +1 -0
  10. package/dist/commands/auth.d.ts +6 -0
  11. package/dist/commands/auth.d.ts.map +1 -0
  12. package/dist/commands/auth.js +325 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/config.d.ts +6 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +56 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/db.d.ts +6 -0
  19. package/dist/commands/db.d.ts.map +1 -0
  20. package/dist/commands/db.js +274 -0
  21. package/dist/commands/db.js.map +1 -0
  22. package/dist/commands/files.d.ts +6 -0
  23. package/dist/commands/files.d.ts.map +1 -0
  24. package/dist/commands/files.js +272 -0
  25. package/dist/commands/files.js.map +1 -0
  26. package/dist/commands/sync.d.ts +7 -0
  27. package/dist/commands/sync.d.ts.map +1 -0
  28. package/dist/commands/sync.js +202 -0
  29. package/dist/commands/sync.js.map +1 -0
  30. package/dist/index.d.ts +11 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +27 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/lib/api.d.ts +47 -0
  35. package/dist/lib/api.d.ts.map +1 -0
  36. package/dist/lib/api.js +203 -0
  37. package/dist/lib/api.js.map +1 -0
  38. package/dist/lib/config.d.ts +54 -0
  39. package/dist/lib/config.d.ts.map +1 -0
  40. package/dist/lib/config.js +150 -0
  41. package/dist/lib/config.js.map +1 -0
  42. package/dist/lib/detector.d.ts +26 -0
  43. package/dist/lib/detector.d.ts.map +1 -0
  44. package/dist/lib/detector.js +305 -0
  45. package/dist/lib/detector.js.map +1 -0
  46. package/dist/types.d.ts +58 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +6 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +50 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration management for FlexSite CLI.
4
+ * Stores tokens and preferences in ~/.flexsite/config.json
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getConfig = getConfig;
11
+ exports.saveToken = saveToken;
12
+ exports.getToken = getToken;
13
+ exports.removeToken = removeToken;
14
+ exports.getAllTokens = getAllTokens;
15
+ exports.setDefaultOrganization = setDefaultOrganization;
16
+ exports.setDefaultProject = setDefaultProject;
17
+ exports.setDefaultEnvironment = setDefaultEnvironment;
18
+ exports.getDefaults = getDefaults;
19
+ exports.clearConfig = clearConfig;
20
+ exports.clearDefaults = clearDefaults;
21
+ exports.getConfigPath = getConfigPath;
22
+ const conf_1 = __importDefault(require("conf"));
23
+ const CONFIG_VERSION = 1;
24
+ // Initialize configuration store
25
+ const store = new conf_1.default({
26
+ projectName: 'flexsite',
27
+ projectVersion: '1.0.0',
28
+ defaults: {
29
+ version: CONFIG_VERSION,
30
+ tokens: {},
31
+ defaults: {}
32
+ }
33
+ });
34
+ /**
35
+ * Get the entire configuration
36
+ */
37
+ function getConfig() {
38
+ return store.store;
39
+ }
40
+ /**
41
+ * Save a token for an organization
42
+ */
43
+ function saveToken(orgPrefix, tokenConfig) {
44
+ const tokens = store.get('tokens', {});
45
+ tokens[orgPrefix] = tokenConfig;
46
+ store.set('tokens', tokens);
47
+ // Set as default organization if it's the first token
48
+ if (Object.keys(tokens).length === 1) {
49
+ store.set('defaults.organizationId', tokenConfig.organizationId);
50
+ }
51
+ }
52
+ /**
53
+ * Get token for an organization (by prefix or full ID)
54
+ */
55
+ function getToken(orgId) {
56
+ const tokens = store.get('tokens', {});
57
+ let searchId = orgId;
58
+ if (!searchId) {
59
+ // Use default organization
60
+ const defaultOrgId = store.get('defaults.organizationId');
61
+ if (!defaultOrgId) {
62
+ // Return first available token
63
+ const firstKey = Object.keys(tokens)[0];
64
+ return firstKey ? tokens[firstKey] : null;
65
+ }
66
+ searchId = defaultOrgId;
67
+ }
68
+ // Try to find by prefix or full ID
69
+ const orgPrefix = searchId.substring(0, 8);
70
+ if (tokens[orgPrefix]) {
71
+ return tokens[orgPrefix];
72
+ }
73
+ // Search by full organization ID
74
+ for (const [, config] of Object.entries(tokens)) {
75
+ if (config.organizationId === searchId) {
76
+ return config;
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+ /**
82
+ * Remove a token
83
+ */
84
+ function removeToken(orgId) {
85
+ const tokens = store.get('tokens', {});
86
+ const orgPrefix = orgId.substring(0, 8);
87
+ if (tokens[orgPrefix]) {
88
+ delete tokens[orgPrefix];
89
+ store.set('tokens', tokens);
90
+ return true;
91
+ }
92
+ // Search by full organization ID
93
+ for (const [prefix, config] of Object.entries(tokens)) {
94
+ if (config.organizationId === orgId) {
95
+ delete tokens[prefix];
96
+ store.set('tokens', tokens);
97
+ return true;
98
+ }
99
+ }
100
+ return false;
101
+ }
102
+ /**
103
+ * Get all stored tokens
104
+ */
105
+ function getAllTokens() {
106
+ return store.get('tokens', {});
107
+ }
108
+ /**
109
+ * Set default organization
110
+ */
111
+ function setDefaultOrganization(orgId) {
112
+ store.set('defaults.organizationId', orgId);
113
+ }
114
+ /**
115
+ * Set default project
116
+ */
117
+ function setDefaultProject(projectId) {
118
+ store.set('defaults.projectId', projectId);
119
+ }
120
+ /**
121
+ * Set default environment
122
+ */
123
+ function setDefaultEnvironment(envId) {
124
+ store.set('defaults.environmentId', envId);
125
+ }
126
+ /**
127
+ * Get defaults
128
+ */
129
+ function getDefaults() {
130
+ return store.get('defaults', {});
131
+ }
132
+ /**
133
+ * Clear all configuration
134
+ */
135
+ function clearConfig() {
136
+ store.clear();
137
+ }
138
+ /**
139
+ * Clear only defaults (keep tokens)
140
+ */
141
+ function clearDefaults() {
142
+ store.set('defaults', {});
143
+ }
144
+ /**
145
+ * Get the config file path
146
+ */
147
+ function getConfigPath() {
148
+ return store.path;
149
+ }
150
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Local environment detection and import utilities.
3
+ * Detects Lando and DDEV environments and provides import functionality.
4
+ */
5
+ import type { LocalEnvType } from '../types.js';
6
+ /**
7
+ * Detect if running in a Lando or DDEV environment
8
+ */
9
+ export declare function detectLocalEnvironment(): LocalEnvType;
10
+ /**
11
+ * Import a database backup using Lando or DDEV
12
+ */
13
+ export declare function importDatabase(filePath: string, env: LocalEnvType): Promise<void>;
14
+ /**
15
+ * Import/extract a files backup
16
+ */
17
+ export declare function importFiles(filePath: string, env: LocalEnvType): Promise<void>;
18
+ /**
19
+ * Clear cache in the local environment
20
+ */
21
+ export declare function clearCache(env: LocalEnvType): Promise<void>;
22
+ /**
23
+ * Get a login URL for the local environment
24
+ */
25
+ export declare function getLoginUrl(env: LocalEnvType): Promise<string | null>;
26
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,CAuBrD;AA2CD;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEvF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DpF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCjE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwC3E"}
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ /**
3
+ * Local environment detection and import utilities.
4
+ * Detects Lando and DDEV environments and provides import functionality.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.detectLocalEnvironment = detectLocalEnvironment;
11
+ exports.importDatabase = importDatabase;
12
+ exports.importFiles = importFiles;
13
+ exports.clearCache = clearCache;
14
+ exports.getLoginUrl = getLoginUrl;
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const child_process_1 = require("child_process");
18
+ const util_1 = require("util");
19
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
20
+ /**
21
+ * Detect if running in a Lando or DDEV environment
22
+ */
23
+ function detectLocalEnvironment() {
24
+ // Check environment variables first (when running inside container)
25
+ if (process.env.LANDO === 'ON') {
26
+ return 'lando';
27
+ }
28
+ if (process.env.IS_DDEV_PROJECT === 'true') {
29
+ return 'ddev';
30
+ }
31
+ // Check for configuration files (when running on host)
32
+ const cwd = process.cwd();
33
+ if (fs_1.default.existsSync(path_1.default.join(cwd, '.lando.yml')) ||
34
+ fs_1.default.existsSync(path_1.default.join(cwd, '.lando.local.yml'))) {
35
+ return 'lando';
36
+ }
37
+ if (fs_1.default.existsSync(path_1.default.join(cwd, '.ddev', 'config.yaml'))) {
38
+ return 'ddev';
39
+ }
40
+ return null;
41
+ }
42
+ /**
43
+ * Check if a command is available
44
+ */
45
+ async function commandExists(command) {
46
+ try {
47
+ await execAsync(`which ${command}`);
48
+ return true;
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ }
54
+ /**
55
+ * Get the files directory path based on CMS type
56
+ */
57
+ function getFilesDirectory() {
58
+ const cwd = process.cwd();
59
+ // Check for Drupal 10/11 structure (web/sites/default/files)
60
+ if (fs_1.default.existsSync(path_1.default.join(cwd, 'web', 'sites', 'default', 'files'))) {
61
+ return path_1.default.join(cwd, 'web', 'sites', 'default', 'files');
62
+ }
63
+ // Check for Drupal 7 structure (sites/default/files)
64
+ if (fs_1.default.existsSync(path_1.default.join(cwd, 'sites', 'default', 'files'))) {
65
+ return path_1.default.join(cwd, 'sites', 'default', 'files');
66
+ }
67
+ // Check for WordPress structure (wp-content/uploads)
68
+ if (fs_1.default.existsSync(path_1.default.join(cwd, 'wp-content', 'uploads'))) {
69
+ return path_1.default.join(cwd, 'wp-content', 'uploads');
70
+ }
71
+ // Default to web/sites/default/files for modern Drupal
72
+ const defaultDir = path_1.default.join(cwd, 'web', 'sites', 'default', 'files');
73
+ if (!fs_1.default.existsSync(defaultDir)) {
74
+ fs_1.default.mkdirSync(defaultDir, { recursive: true });
75
+ }
76
+ return defaultDir;
77
+ }
78
+ /**
79
+ * Import a database backup using Lando or DDEV
80
+ */
81
+ async function importDatabase(filePath, env) {
82
+ if (!env) {
83
+ throw new Error('No local environment detected');
84
+ }
85
+ const absolutePath = path_1.default.resolve(filePath);
86
+ const cwd = process.cwd();
87
+ if (!fs_1.default.existsSync(absolutePath)) {
88
+ throw new Error(`Database file not found: ${absolutePath}`);
89
+ }
90
+ if (env === 'lando') {
91
+ // Check if lando is available
92
+ if (!(await commandExists('lando'))) {
93
+ throw new Error('Lando command not found. Please install Lando: https://lando.dev/download/');
94
+ }
95
+ // Lando needs a relative path from the project root
96
+ // because it maps the project directory to /app inside the container
97
+ let importPath;
98
+ if (absolutePath.startsWith(cwd)) {
99
+ // File is inside the project directory, use relative path
100
+ importPath = path_1.default.relative(cwd, absolutePath);
101
+ }
102
+ else {
103
+ // File is outside project directory - copy it to project root first
104
+ const fileName = path_1.default.basename(absolutePath);
105
+ const tempPath = path_1.default.join(cwd, fileName);
106
+ fs_1.default.copyFileSync(absolutePath, tempPath);
107
+ importPath = fileName;
108
+ }
109
+ // Use lando db-import with relative path
110
+ try {
111
+ const { stdout, stderr } = await execAsync(`lando db-import "${importPath}"`, {
112
+ cwd: cwd,
113
+ timeout: 300000 // 5 minutes
114
+ });
115
+ if (stderr && !stderr.includes('SUCCESS')) {
116
+ console.warn(`Warning: ${stderr}`);
117
+ }
118
+ }
119
+ catch (error) {
120
+ // Lando db-import may exit with error even on success, check message
121
+ if (error.message && error.message.includes('SUCCESS')) {
122
+ return; // Actually successful
123
+ }
124
+ throw new Error(`Lando import failed: ${error.message || error}`);
125
+ }
126
+ }
127
+ else if (env === 'ddev') {
128
+ // Check if ddev is available
129
+ if (!(await commandExists('ddev'))) {
130
+ throw new Error('DDEV command not found. Please install DDEV: https://ddev.readthedocs.io/en/stable/users/install/');
131
+ }
132
+ // Use ddev import-db
133
+ try {
134
+ const { stdout, stderr } = await execAsync(`ddev import-db --file="${absolutePath}"`, {
135
+ cwd: process.cwd(),
136
+ timeout: 300000 // 5 minutes
137
+ });
138
+ if (stderr && !stderr.includes('SUCCESS') && !stderr.includes('Successfully')) {
139
+ console.warn(`Warning: ${stderr}`);
140
+ }
141
+ }
142
+ catch (error) {
143
+ throw new Error(`DDEV import failed: ${error.message || error}`);
144
+ }
145
+ }
146
+ }
147
+ /**
148
+ * Import/extract a files backup
149
+ */
150
+ async function importFiles(filePath, env) {
151
+ if (!env) {
152
+ throw new Error('No local environment detected');
153
+ }
154
+ const absolutePath = path_1.default.resolve(filePath);
155
+ if (!fs_1.default.existsSync(absolutePath)) {
156
+ throw new Error(`Files archive not found: ${absolutePath}`);
157
+ }
158
+ const filesDir = getFilesDirectory();
159
+ // Ensure files directory exists
160
+ if (!fs_1.default.existsSync(filesDir)) {
161
+ fs_1.default.mkdirSync(filesDir, { recursive: true });
162
+ }
163
+ // Extract the archive
164
+ try {
165
+ // Determine extraction command based on file extension
166
+ let extractCmd;
167
+ if (absolutePath.endsWith('.tar.gz') || absolutePath.endsWith('.tgz')) {
168
+ extractCmd = `tar -xzf "${absolutePath}" -C "${filesDir}" --strip-components=0`;
169
+ }
170
+ else if (absolutePath.endsWith('.zip')) {
171
+ extractCmd = `unzip -o "${absolutePath}" -d "${filesDir}"`;
172
+ }
173
+ else {
174
+ throw new Error('Unsupported archive format. Expected .tar.gz, .tgz, or .zip');
175
+ }
176
+ await execAsync(extractCmd, {
177
+ cwd: process.cwd(),
178
+ timeout: 600000 // 10 minutes for large file archives
179
+ });
180
+ // Fix permissions if needed (common issue with restored files)
181
+ if (env === 'lando') {
182
+ // Lando runs as user 'www-data' in container
183
+ try {
184
+ await execAsync(`lando ssh -c "chmod -R 775 ${filesDir.replace(process.cwd(), '/app')}"`, {
185
+ cwd: process.cwd()
186
+ });
187
+ }
188
+ catch {
189
+ // Permission fix is optional, don't fail if it doesn't work
190
+ }
191
+ }
192
+ else if (env === 'ddev') {
193
+ // DDEV handles permissions automatically in most cases
194
+ try {
195
+ await execAsync(`ddev exec chmod -R 775 /var/www/html/web/sites/default/files`, {
196
+ cwd: process.cwd()
197
+ });
198
+ }
199
+ catch {
200
+ // Permission fix is optional
201
+ }
202
+ }
203
+ }
204
+ catch (error) {
205
+ throw new Error(`Files extraction failed: ${error.message || error}`);
206
+ }
207
+ }
208
+ /**
209
+ * Clear cache in the local environment
210
+ */
211
+ async function clearCache(env) {
212
+ if (!env) {
213
+ throw new Error('No local environment detected');
214
+ }
215
+ try {
216
+ if (env === 'lando') {
217
+ // Try Drupal cache rebuild
218
+ try {
219
+ await execAsync('lando drush cr', { cwd: process.cwd(), timeout: 60000 });
220
+ return;
221
+ }
222
+ catch {
223
+ // Maybe it's WordPress
224
+ try {
225
+ await execAsync('lando wp cache flush', { cwd: process.cwd(), timeout: 60000 });
226
+ return;
227
+ }
228
+ catch {
229
+ // Neither worked
230
+ console.warn('Could not clear cache automatically');
231
+ }
232
+ }
233
+ }
234
+ else if (env === 'ddev') {
235
+ // Try Drupal cache rebuild
236
+ try {
237
+ await execAsync('ddev drush cr', { cwd: process.cwd(), timeout: 60000 });
238
+ return;
239
+ }
240
+ catch {
241
+ // Maybe it's WordPress
242
+ try {
243
+ await execAsync('ddev wp cache flush', { cwd: process.cwd(), timeout: 60000 });
244
+ return;
245
+ }
246
+ catch {
247
+ // Neither worked
248
+ console.warn('Could not clear cache automatically');
249
+ }
250
+ }
251
+ }
252
+ }
253
+ catch (error) {
254
+ console.warn(`Cache clear warning: ${error.message || error}`);
255
+ }
256
+ }
257
+ /**
258
+ * Get a login URL for the local environment
259
+ */
260
+ async function getLoginUrl(env) {
261
+ if (!env) {
262
+ return null;
263
+ }
264
+ try {
265
+ if (env === 'lando') {
266
+ // Try Drupal
267
+ try {
268
+ const { stdout } = await execAsync('lando drush uli', { cwd: process.cwd() });
269
+ return stdout.trim();
270
+ }
271
+ catch {
272
+ // Maybe it's WordPress
273
+ try {
274
+ const { stdout } = await execAsync('lando wp login create 1 --url-only', { cwd: process.cwd() });
275
+ return stdout.trim();
276
+ }
277
+ catch {
278
+ return null;
279
+ }
280
+ }
281
+ }
282
+ else if (env === 'ddev') {
283
+ // Try Drupal
284
+ try {
285
+ const { stdout } = await execAsync('ddev drush uli', { cwd: process.cwd() });
286
+ return stdout.trim();
287
+ }
288
+ catch {
289
+ // Maybe it's WordPress
290
+ try {
291
+ const { stdout } = await execAsync('ddev wp login create 1 --url-only', { cwd: process.cwd() });
292
+ return stdout.trim();
293
+ }
294
+ catch {
295
+ return null;
296
+ }
297
+ }
298
+ }
299
+ }
300
+ catch {
301
+ return null;
302
+ }
303
+ return null;
304
+ }
305
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/lib/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * FlexSite CLI Types
3
+ */
4
+ export interface TokenConfig {
5
+ token: string;
6
+ userId: string;
7
+ organizationId: string;
8
+ organizationName: string;
9
+ expiresAt?: string;
10
+ }
11
+ export interface Config {
12
+ version: number;
13
+ tokens: Record<string, TokenConfig>;
14
+ defaults: {
15
+ organizationId?: string;
16
+ projectId?: string;
17
+ environmentId?: string;
18
+ };
19
+ }
20
+ export interface Project {
21
+ id: string;
22
+ title: string;
23
+ container?: string;
24
+ url?: string;
25
+ flexlab?: boolean;
26
+ }
27
+ export interface Environment {
28
+ id: string;
29
+ title: string;
30
+ url?: string;
31
+ status?: string;
32
+ branch?: string;
33
+ container?: string;
34
+ }
35
+ export interface Backup {
36
+ id: string;
37
+ fileName?: string;
38
+ createdAt?: string;
39
+ sizeBytes?: number;
40
+ type?: string;
41
+ }
42
+ export interface BackupDownload {
43
+ url: string;
44
+ fileName: string;
45
+ createdAt?: string;
46
+ sizeBytes?: number;
47
+ expiresIn: number;
48
+ }
49
+ export interface AuthVerifyResponse {
50
+ authenticated: boolean;
51
+ userId: string;
52
+ organizationId: string;
53
+ organizationName?: string;
54
+ scopes: string[];
55
+ tokenName?: string;
56
+ }
57
+ export type LocalEnvType = 'lando' | 'ddev' | null;
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,QAAQ,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * FlexSite CLI Types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@flexsiteio/cli",
3
+ "version": "1.0.1",
4
+ "description": "FlexSite CLI - Command-line tool for managing FlexSite projects",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "flexsite": "./dist/bin/flexsite.js"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public",
11
+ "registry": "https://registry.npmjs.org/"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "dev": "ts-node src/bin/flexsite.ts",
16
+ "prepublishOnly": "npm run build",
17
+ "test": "jest"
18
+ },
19
+ "keywords": [
20
+ "flexsite",
21
+ "drupal",
22
+ "wordpress",
23
+ "cms",
24
+ "cli",
25
+ "lando",
26
+ "ddev"
27
+ ],
28
+ "author": "FlexSite Team",
29
+ "license": "MIT",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/flexsite/cli.git"
33
+ },
34
+ "engines": {
35
+ "node": ">=22.0.0"
36
+ },
37
+ "dependencies": {
38
+ "axios": "^1.6.0",
39
+ "chalk": "^5.3.0",
40
+ "commander": "^11.1.0",
41
+ "conf": "^12.0.0",
42
+ "inquirer": "^9.2.0",
43
+ "ora": "^7.0.0"
44
+ },
45
+ "devDependencies": {
46
+ "@types/inquirer": "^9.0.7",
47
+ "@types/node": "^20.10.0",
48
+ "typescript": "^5.3.0"
49
+ }
50
+ }