@meadow-studio/platform 0.0.0-stage → 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/MeadowPlatform.podspec +17 -0
- package/Package.swift +23 -0
- package/README.md +147 -2
- package/android/build.gradle +42 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/app/meadow/platform/MeadowAppRatingPlugin.java +38 -0
- package/dist/cli/commands.d.ts +74 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +1062 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/config.d.ts +123 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +428 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/meadow.d.ts +8 -0
- package/dist/cli/meadow.d.ts.map +1 -0
- package/dist/cli/meadow.js +463 -0
- package/dist/cli/meadow.js.map +1 -0
- package/dist/cli/recipes.d.ts +10 -0
- package/dist/cli/recipes.d.ts.map +1 -0
- package/dist/cli/recipes.js +575 -0
- package/dist/cli/recipes.js.map +1 -0
- package/dist/cli/sync.d.ts +14 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +310 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/cli/templates.d.ts +27 -0
- package/dist/cli/templates.d.ts.map +1 -0
- package/dist/cli/templates.js +1246 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/cli/website.d.ts +5 -0
- package/dist/cli/website.d.ts.map +1 -0
- package/dist/cli/website.js +262 -0
- package/dist/cli/website.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/notifications.d.ts +119 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +320 -0
- package/dist/notifications.js.map +1 -0
- package/dist/platform.d.ts +163 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +623 -0
- package/dist/platform.js.map +1 -0
- package/dist/purchases.d.ts +88 -0
- package/dist/purchases.d.ts.map +1 -0
- package/dist/purchases.js +296 -0
- package/dist/purchases.js.map +1 -0
- package/dist/ui/app-build.component.d.ts +18 -0
- package/dist/ui/app-build.component.d.ts.map +1 -0
- package/dist/ui/app-build.component.js +56 -0
- package/dist/ui/app-build.component.js.map +1 -0
- package/dist/ui/app-build.model.d.ts +11 -0
- package/dist/ui/app-build.model.d.ts.map +1 -0
- package/dist/ui/app-build.model.js +18 -0
- package/dist/ui/app-build.model.js.map +1 -0
- package/dist/ui/app-links.component.d.ts +14 -0
- package/dist/ui/app-links.component.d.ts.map +1 -0
- package/dist/ui/app-links.component.js +77 -0
- package/dist/ui/app-links.component.js.map +1 -0
- package/dist/ui/app-links.model.d.ts +18 -0
- package/dist/ui/app-links.model.d.ts.map +1 -0
- package/dist/ui/app-links.model.js +17 -0
- package/dist/ui/app-links.model.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/docs/CLI.md +376 -0
- package/docs/PLATFORM_GUIDE.md +422 -0
- package/docs/POC_FINDINGS.md +218 -0
- package/docs/PROJECT_BRIEF.md +501 -0
- package/docs/RELEASING.md +49 -0
- package/docs/V0.1_PATH.md +310 -0
- package/ios/Sources/MeadowPlatformPlugin/MeadowAppRatingPlugin.swift +39 -0
- package/package.json +89 -4
- package/schema/meadow-config.schema.json +250 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, realpathSync } from 'node:fs';
|
|
3
|
+
import { basename, dirname, resolve } from 'node:path';
|
|
4
|
+
import { createInterface } from 'node:readline/promises';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { addCapability, configureIntegration, createProject, doctor, initCleanRepository, initProject, inspectExistingProject, isCleanGitRepository, releaseCheck, setApplicationVersion, SYSTEM_COMMAND_RUNNER, } from './commands.js';
|
|
7
|
+
import { createProjectConfig, validateProjectConfig, } from './config.js';
|
|
8
|
+
import { syncProject } from './sync.js';
|
|
9
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
10
|
+
const [command, ...rest] = argv;
|
|
11
|
+
try {
|
|
12
|
+
switch (command) {
|
|
13
|
+
case 'new':
|
|
14
|
+
await runNew(rest);
|
|
15
|
+
return 0;
|
|
16
|
+
case 'init':
|
|
17
|
+
return runInit(rest);
|
|
18
|
+
case 'sync':
|
|
19
|
+
return runSync(rest);
|
|
20
|
+
case 'configure':
|
|
21
|
+
runConfigure(rest);
|
|
22
|
+
return 0;
|
|
23
|
+
case 'add':
|
|
24
|
+
runAdd(rest);
|
|
25
|
+
return 0;
|
|
26
|
+
case 'doctor':
|
|
27
|
+
return runDoctor(rest);
|
|
28
|
+
case 'version':
|
|
29
|
+
runVersion(rest);
|
|
30
|
+
return 0;
|
|
31
|
+
case 'release-check':
|
|
32
|
+
return runReleaseCheck(rest);
|
|
33
|
+
case 'help':
|
|
34
|
+
case '--help':
|
|
35
|
+
case '-h':
|
|
36
|
+
case undefined:
|
|
37
|
+
process.stdout.write(helpText());
|
|
38
|
+
return 0;
|
|
39
|
+
case '--version':
|
|
40
|
+
case '-v':
|
|
41
|
+
process.stdout.write(`${platformVersion()}\n`);
|
|
42
|
+
return 0;
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(`Unknown command: ${command}\n\n${helpText()}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
process.stderr.write(`Meadow CLI failed: ${errorMessage(error)}\n`);
|
|
49
|
+
return 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export function parseArguments(args) {
|
|
53
|
+
const positionals = [];
|
|
54
|
+
const options = {};
|
|
55
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
56
|
+
const value = args[index];
|
|
57
|
+
if (!value.startsWith('--')) {
|
|
58
|
+
positionals.push(value);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const [rawKey, inlineValue] = value.slice(2).split('=', 2);
|
|
62
|
+
if (!rawKey)
|
|
63
|
+
throw new Error(`Invalid option: ${value}`);
|
|
64
|
+
if (rawKey.startsWith('no-')) {
|
|
65
|
+
options[rawKey] = true;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (inlineValue !== undefined) {
|
|
69
|
+
options[rawKey] = inlineValue;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const next = args[index + 1];
|
|
73
|
+
if (next !== undefined && !next.startsWith('--')) {
|
|
74
|
+
options[rawKey] = next;
|
|
75
|
+
index += 1;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
options[rawKey] = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { positionals, options };
|
|
82
|
+
}
|
|
83
|
+
async function runNew(args) {
|
|
84
|
+
const parsed = parseArguments(args);
|
|
85
|
+
if (parsed.positionals.length !== 1)
|
|
86
|
+
throw new Error('Usage: meadow new <name> [options]');
|
|
87
|
+
const requestedName = parsed.positionals[0];
|
|
88
|
+
const automatic = parsed.options.yes === true;
|
|
89
|
+
const configuredAnswers = {
|
|
90
|
+
...configuredNewAnswers(parsed.options.config),
|
|
91
|
+
...(stringOption(parsed.options, 'website-base-domain')
|
|
92
|
+
? { websiteBaseDomain: stringOption(parsed.options, 'website-base-domain') }
|
|
93
|
+
: {}),
|
|
94
|
+
};
|
|
95
|
+
const answers = automatic
|
|
96
|
+
? { name: requestedName, ...configuredAnswers }
|
|
97
|
+
: await promptForProject({ name: requestedName, ...configuredAnswers });
|
|
98
|
+
const config = createProjectConfig(answers);
|
|
99
|
+
const wantsGithub = parsed.options.github === true;
|
|
100
|
+
if (wantsGithub && parsed.options['no-git'] === true) {
|
|
101
|
+
throw new Error('--github cannot be combined with --no-git.');
|
|
102
|
+
}
|
|
103
|
+
process.stdout.write(`Creating ${config.app.name} in ${config.app.slug}/...\n`);
|
|
104
|
+
const target = createProject({
|
|
105
|
+
directory: stringOption(parsed.options, 'directory') ?? process.cwd(),
|
|
106
|
+
answers,
|
|
107
|
+
platformVersion: platformVersion(),
|
|
108
|
+
platformSpec: stringOption(parsed.options, 'platform-spec'),
|
|
109
|
+
install: parsed.options['no-install'] !== true,
|
|
110
|
+
git: parsed.options['no-git'] !== true,
|
|
111
|
+
visualBaselines: parsed.options['no-install'] !== true &&
|
|
112
|
+
parsed.options['skip-visual-baselines'] !== true,
|
|
113
|
+
...(wantsGithub
|
|
114
|
+
? {
|
|
115
|
+
github: {
|
|
116
|
+
owner: stringOption(parsed.options, 'github-owner'),
|
|
117
|
+
visibility: visibility(parsed.options.visibility),
|
|
118
|
+
},
|
|
119
|
+
}
|
|
120
|
+
: {}),
|
|
121
|
+
}, SYSTEM_COMMAND_RUNNER);
|
|
122
|
+
process.stdout.write(`\nCreated ${config.app.name} at ${target}, with its website in ${target}/website.\n`);
|
|
123
|
+
if (parsed.options['no-install'] === true) {
|
|
124
|
+
process.stdout.write('Next: npm install, npm run native:init, npm run check.\n');
|
|
125
|
+
}
|
|
126
|
+
else if (parsed.options['skip-visual-baselines'] === true) {
|
|
127
|
+
process.stdout.write('The app and native projects are ready. Generate reviewed visual baselines before opening a PR.\n');
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
process.stdout.write('The app, native projects, tests, and visual baselines are ready.\n');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function runInit(args) {
|
|
134
|
+
const parsed = parseArguments(args);
|
|
135
|
+
if (parsed.positionals.length)
|
|
136
|
+
throw new Error('Usage: meadow init [options]');
|
|
137
|
+
const directory = stringOption(parsed.options, 'directory') ?? process.cwd();
|
|
138
|
+
const configuredAnswers = {
|
|
139
|
+
...configuredNewAnswers(parsed.options.config),
|
|
140
|
+
...(stringOption(parsed.options, 'website-base-domain')
|
|
141
|
+
? { websiteBaseDomain: stringOption(parsed.options, 'website-base-domain') }
|
|
142
|
+
: {}),
|
|
143
|
+
};
|
|
144
|
+
if (isCleanGitRepository(directory)) {
|
|
145
|
+
const name = titleCase(basename(resolve(directory)));
|
|
146
|
+
const seed = { name, ...configuredAnswers };
|
|
147
|
+
const answers = parsed.options.yes === true ? seed : await promptForProject(seed);
|
|
148
|
+
const dryRun = parsed.options['dry-run'] === true;
|
|
149
|
+
const result = initCleanRepository({
|
|
150
|
+
directory,
|
|
151
|
+
answers,
|
|
152
|
+
platformVersion: platformVersion(),
|
|
153
|
+
platformSpec: stringOption(parsed.options, 'platform-spec'),
|
|
154
|
+
install: parsed.options['no-install'] !== true,
|
|
155
|
+
visualBaselines: parsed.options['no-install'] !== true && parsed.options['skip-visual-baselines'] !== true,
|
|
156
|
+
dryRun,
|
|
157
|
+
}, SYSTEM_COMMAND_RUNNER);
|
|
158
|
+
process.stdout.write(dryRun ? 'Planned clean-repository app:\n' : 'Created Meadow app in the existing Git repository:\n');
|
|
159
|
+
for (const action of result.actions)
|
|
160
|
+
process.stdout.write(`${action.kind === 'run' ? '>' : '+'} ${action.target}\n`);
|
|
161
|
+
if (dryRun)
|
|
162
|
+
return 0;
|
|
163
|
+
process.stdout.write('\nMeadow doctor:\n');
|
|
164
|
+
printDiagnostics(result.diagnostics, false);
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
167
|
+
const inspection = inspectExistingProject(directory);
|
|
168
|
+
const seed = { ...inspection.answers, ...configuredAnswers };
|
|
169
|
+
const answers = parsed.options.yes === true || inspection.alreadyInitialized
|
|
170
|
+
? seed
|
|
171
|
+
: await promptForInit(seed);
|
|
172
|
+
process.stdout.write(`Detected ${answers.name} (${answers.id}) with Angular ${inspection.angularVersion} and Capacitor ${inspection.capacitorVersion} in ${inspection.directory}.\n`);
|
|
173
|
+
for (const warning of inspection.warnings)
|
|
174
|
+
process.stdout.write(`! ${warning}\n`);
|
|
175
|
+
const dryRun = parsed.options['dry-run'] === true;
|
|
176
|
+
const result = initProject({
|
|
177
|
+
directory: inspection.directory,
|
|
178
|
+
answers,
|
|
179
|
+
platformVersion: platformVersion(),
|
|
180
|
+
platformSpec: stringOption(parsed.options, 'platform-spec'),
|
|
181
|
+
install: parsed.options['no-install'] !== true,
|
|
182
|
+
dryRun,
|
|
183
|
+
}, SYSTEM_COMMAND_RUNNER);
|
|
184
|
+
process.stdout.write(dryRun ? '\nPlanned changes:\n' : '\nApplied Meadow adoption plan:\n');
|
|
185
|
+
const actionIcon = { create: '+', update: '~', preserve: '=', run: '>' };
|
|
186
|
+
for (const action of result.actions) {
|
|
187
|
+
process.stdout.write(`${actionIcon[action.kind]} ${action.target}: ${action.detail}\n`);
|
|
188
|
+
}
|
|
189
|
+
if (dryRun) {
|
|
190
|
+
process.stdout.write('\nDry run complete; no files were changed.\n');
|
|
191
|
+
return 0;
|
|
192
|
+
}
|
|
193
|
+
process.stdout.write('\nMeadow doctor:\n');
|
|
194
|
+
printDiagnostics(result.diagnostics, false);
|
|
195
|
+
const failures = result.diagnostics.filter((diagnostic) => diagnostic.level === 'failure').length;
|
|
196
|
+
if (failures) {
|
|
197
|
+
process.stdout.write(`\nInitialization is installed. Meadow doctor found ${failures} existing-project follow-up${failures === 1 ? '' : 's'} to resolve.\n`);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
process.stdout.write('\nThe existing project is initialized for Meadow Platform.\n');
|
|
201
|
+
}
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
function runSync(args) {
|
|
205
|
+
const parsed = parseArguments(args);
|
|
206
|
+
if (parsed.positionals.length)
|
|
207
|
+
throw new Error('Usage: meadow sync [--check]');
|
|
208
|
+
const check = parsed.options.check === true;
|
|
209
|
+
const directory = stringOption(parsed.options, 'directory') ?? process.cwd();
|
|
210
|
+
const result = syncProject(directory, check);
|
|
211
|
+
const icons = { create: '+', update: '~', current: '=', conflict: '!' };
|
|
212
|
+
for (const action of result.actions) {
|
|
213
|
+
if (action.status !== 'current' || check) {
|
|
214
|
+
process.stdout.write(`${icons[action.status]} ${action.path}: ${action.message}\n`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (result.valid) {
|
|
218
|
+
if (!check &&
|
|
219
|
+
parsed.options['no-install'] !== true &&
|
|
220
|
+
result.actions.some((action) => action.path === 'package.json' && action.status !== 'current')) {
|
|
221
|
+
process.stdout.write('Installing synchronized dependencies...\n');
|
|
222
|
+
SYSTEM_COMMAND_RUNNER.run('npm', ['install'], directory);
|
|
223
|
+
}
|
|
224
|
+
process.stdout.write(check ? 'Meadow-generated files are synchronized.\n' : 'Synchronized from meadow.config.json.\n');
|
|
225
|
+
return 0;
|
|
226
|
+
}
|
|
227
|
+
process.stderr.write(check
|
|
228
|
+
? 'Meadow-generated files have drifted. Run meadow sync and review the changes.\n'
|
|
229
|
+
: 'Meadow sync stopped because an app-owned file conflicts with a generated path.\n');
|
|
230
|
+
return 1;
|
|
231
|
+
}
|
|
232
|
+
async function promptForInit(seed) {
|
|
233
|
+
const io = createInterface({ input: process.stdin, output: process.stdout });
|
|
234
|
+
try {
|
|
235
|
+
const websiteBaseDomain = seed.websiteUrl
|
|
236
|
+
? seed.websiteBaseDomain
|
|
237
|
+
: await ask(io, 'Website base domain (optional, e.g. meadow-development.app)', seed.websiteBaseDomain ?? '');
|
|
238
|
+
const revenuecat = seed.revenuecat === true
|
|
239
|
+
? true
|
|
240
|
+
: await askBoolean(io, 'Add RevenueCat to this app?', false);
|
|
241
|
+
const monetizationMode = revenuecat
|
|
242
|
+
? seed.revenuecat === true && seed.monetizationMode && seed.monetizationMode !== 'none'
|
|
243
|
+
? seed.monetizationMode
|
|
244
|
+
: await askChoice(io, 'Monetization mode', ['subscription-and-lifetime', 'subscription', 'lifetime'], 'subscription-and-lifetime')
|
|
245
|
+
: 'none';
|
|
246
|
+
const supabase = seed.supabase === true
|
|
247
|
+
? true
|
|
248
|
+
: await askBoolean(io, 'Add Supabase Auth, data, and storage?', false);
|
|
249
|
+
return { ...seed, websiteBaseDomain, revenuecat, monetizationMode, supabase };
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
io.close();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function runConfigure(args) {
|
|
256
|
+
const parsed = parseArguments(args);
|
|
257
|
+
if (parsed.positionals.length !== 1) {
|
|
258
|
+
throw new Error('Usage: meadow configure <firebase|revenuecat|supabase|assets|signing|store|github>');
|
|
259
|
+
}
|
|
260
|
+
const messages = configureIntegration(parsed.positionals[0], {
|
|
261
|
+
directory: stringOption(parsed.options, 'directory') ?? process.cwd(),
|
|
262
|
+
values: parsed.options,
|
|
263
|
+
});
|
|
264
|
+
for (const message of messages)
|
|
265
|
+
process.stdout.write(`${message}\n`);
|
|
266
|
+
}
|
|
267
|
+
function runAdd(args) {
|
|
268
|
+
const parsed = parseArguments(args);
|
|
269
|
+
if (parsed.positionals.length !== 1) {
|
|
270
|
+
throw new Error('Usage: meadow add <local-data|notifications>');
|
|
271
|
+
}
|
|
272
|
+
const messages = addCapability(parsed.positionals[0], { directory: stringOption(parsed.options, 'directory') ?? process.cwd() }, SYSTEM_COMMAND_RUNNER);
|
|
273
|
+
for (const message of messages)
|
|
274
|
+
process.stdout.write(`${message}\n`);
|
|
275
|
+
}
|
|
276
|
+
function runDoctor(args) {
|
|
277
|
+
const parsed = parseArguments(args);
|
|
278
|
+
if (parsed.positionals.length)
|
|
279
|
+
throw new Error('Usage: meadow doctor [--json]');
|
|
280
|
+
const diagnostics = doctor(stringOption(parsed.options, 'directory') ?? process.cwd());
|
|
281
|
+
printDiagnostics(diagnostics, parsed.options.json === true);
|
|
282
|
+
return diagnostics.some((item) => item.level === 'failure') ? 1 : 0;
|
|
283
|
+
}
|
|
284
|
+
function runVersion(args) {
|
|
285
|
+
const parsed = parseArguments(args);
|
|
286
|
+
if (parsed.positionals.length < 1 || parsed.positionals.length > 2) {
|
|
287
|
+
throw new Error('Usage: meadow version <major|minor|patch|x.y.z> [development|test|production]');
|
|
288
|
+
}
|
|
289
|
+
const config = setApplicationVersion(parsed.positionals[0], parsed.positionals[1], stringOption(parsed.options, 'directory') ?? process.cwd());
|
|
290
|
+
process.stdout.write(`Set application version to ${config.release.version} (${config.release.build}), channel ${config.release.channel}.\n`);
|
|
291
|
+
}
|
|
292
|
+
function runReleaseCheck(args) {
|
|
293
|
+
const parsed = parseArguments(args);
|
|
294
|
+
const platform = parsed.positionals[0] ?? 'all';
|
|
295
|
+
if (!['ios', 'android', 'all'].includes(platform) || parsed.positionals.length > 1) {
|
|
296
|
+
throw new Error('Usage: meadow release-check <ios|android|all> [--json]');
|
|
297
|
+
}
|
|
298
|
+
const diagnostics = releaseCheck(platform, stringOption(parsed.options, 'directory') ?? process.cwd());
|
|
299
|
+
printDiagnostics(diagnostics, parsed.options.json === true);
|
|
300
|
+
return diagnostics.some((item) => item.level === 'failure') ? 1 : 0;
|
|
301
|
+
}
|
|
302
|
+
async function promptForProject(seed) {
|
|
303
|
+
const io = createInterface({ input: process.stdin, output: process.stdout });
|
|
304
|
+
try {
|
|
305
|
+
const defaultName = titleCase(seed.name);
|
|
306
|
+
const name = await ask(io, 'Display name', seed.name.includes('-') ? defaultName : seed.name);
|
|
307
|
+
const defaults = createProjectConfig({ ...seed, name });
|
|
308
|
+
const description = await ask(io, 'Short description', seed.description ?? '');
|
|
309
|
+
const id = await ask(io, 'Bundle/application ID', seed.id ?? seed.androidId ?? defaults.app.identifiers.android);
|
|
310
|
+
const supportEmail = await ask(io, 'Support email (optional)', seed.supportEmail ?? '');
|
|
311
|
+
const privacyUrl = await ask(io, 'Privacy URL (optional)', seed.privacyUrl ?? '');
|
|
312
|
+
const termsUrl = await ask(io, 'Terms URL (optional)', seed.termsUrl ?? '');
|
|
313
|
+
const websiteBaseDomain = seed.websiteUrl
|
|
314
|
+
? seed.websiteBaseDomain
|
|
315
|
+
: await ask(io, 'Website base domain (optional, e.g. meadow-development.app)', seed.websiteBaseDomain ?? '');
|
|
316
|
+
const orientation = await askChoice(io, 'Orientation', ['any', 'portrait', 'landscape'], seed.orientation ?? 'any');
|
|
317
|
+
const devices = await askChoice(io, 'Devices', ['both', 'phone', 'tablet'], 'both');
|
|
318
|
+
const platformDefault = seed.platforms?.length === 1 ? seed.platforms[0] : 'both';
|
|
319
|
+
const platforms = await askChoice(io, 'Platforms', ['both', 'ios', 'android'], platformDefault);
|
|
320
|
+
const revenuecat = await askBoolean(io, 'Include RevenueCat?', seed.revenuecat ?? false);
|
|
321
|
+
const monetizationMode = revenuecat
|
|
322
|
+
? await askChoice(io, 'Monetization mode', ['subscription-and-lifetime', 'subscription', 'lifetime'], seed.monetizationMode ?? 'subscription-and-lifetime')
|
|
323
|
+
: 'none';
|
|
324
|
+
const supabase = await askBoolean(io, 'Include Supabase Auth, data, and storage?', seed.supabase ?? false);
|
|
325
|
+
return {
|
|
326
|
+
name,
|
|
327
|
+
id,
|
|
328
|
+
description,
|
|
329
|
+
supportEmail,
|
|
330
|
+
privacyUrl,
|
|
331
|
+
termsUrl,
|
|
332
|
+
websiteBaseDomain,
|
|
333
|
+
orientation,
|
|
334
|
+
devices: devices === 'both' ? ['phone', 'tablet'] : [devices],
|
|
335
|
+
platforms: platforms === 'both' ? ['ios', 'android'] : [platforms],
|
|
336
|
+
revenuecat,
|
|
337
|
+
monetizationMode,
|
|
338
|
+
supabase,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
io.close();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function configuredNewAnswers(value) {
|
|
346
|
+
if (value === undefined)
|
|
347
|
+
return {};
|
|
348
|
+
if (typeof value !== 'string')
|
|
349
|
+
throw new Error('--config requires a JSON file path.');
|
|
350
|
+
const parsed = JSON.parse(readFileSync(resolve(value), 'utf8'));
|
|
351
|
+
if (isRecord(parsed) && parsed.version === 2) {
|
|
352
|
+
const config = validateProjectConfig(parsed);
|
|
353
|
+
return {
|
|
354
|
+
name: config.app.name,
|
|
355
|
+
slug: config.app.slug,
|
|
356
|
+
iosId: config.app.identifiers.ios,
|
|
357
|
+
androidId: config.app.identifiers.android,
|
|
358
|
+
description: config.app.description,
|
|
359
|
+
supportEmail: config.links.supportEmail,
|
|
360
|
+
supportUrl: config.links.supportUrl,
|
|
361
|
+
privacyUrl: config.links.privacyUrl,
|
|
362
|
+
termsUrl: config.links.termsUrl,
|
|
363
|
+
websiteUrl: config.links.websiteUrl,
|
|
364
|
+
platforms: config.app.platforms,
|
|
365
|
+
orientation: config.app.orientation,
|
|
366
|
+
devices: config.app.devices,
|
|
367
|
+
revenuecat: config.services.revenuecat.enabled,
|
|
368
|
+
monetizationMode: config.services.revenuecat.mode,
|
|
369
|
+
supabase: config.services.supabase.enabled,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (!isRecord(parsed))
|
|
373
|
+
throw new Error('--config must contain a JSON object.');
|
|
374
|
+
return parsed;
|
|
375
|
+
}
|
|
376
|
+
async function ask(io, label, defaultValue) {
|
|
377
|
+
const answer = (await io.question(`${label}${defaultValue ? ` [${defaultValue}]` : ''}: `)).trim();
|
|
378
|
+
return answer || defaultValue;
|
|
379
|
+
}
|
|
380
|
+
async function askBoolean(io, label, defaultValue) {
|
|
381
|
+
const suffix = defaultValue ? 'Y/n' : 'y/N';
|
|
382
|
+
const answer = (await io.question(`${label} [${suffix}]: `)).trim().toLowerCase();
|
|
383
|
+
if (!answer)
|
|
384
|
+
return defaultValue;
|
|
385
|
+
if (['y', 'yes'].includes(answer))
|
|
386
|
+
return true;
|
|
387
|
+
if (['n', 'no'].includes(answer))
|
|
388
|
+
return false;
|
|
389
|
+
throw new Error(`${label} must be answered yes or no.`);
|
|
390
|
+
}
|
|
391
|
+
async function askChoice(io, label, choices, defaultValue) {
|
|
392
|
+
const answer = await ask(io, `${label} (${choices.join('/')})`, defaultValue);
|
|
393
|
+
if (!choices.includes(answer))
|
|
394
|
+
throw new Error(`${label} must be one of ${choices.join(', ')}.`);
|
|
395
|
+
return answer;
|
|
396
|
+
}
|
|
397
|
+
function printDiagnostics(diagnostics, json) {
|
|
398
|
+
if (json) {
|
|
399
|
+
process.stdout.write(`${JSON.stringify(diagnostics, null, 2)}\n`);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
const icon = { pass: '✓', warning: '!', failure: '✗' };
|
|
403
|
+
for (const diagnostic of diagnostics) {
|
|
404
|
+
process.stdout.write(`${icon[diagnostic.level]} ${diagnostic.message}\n`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
function visibility(value) {
|
|
408
|
+
const normalized = typeof value === 'string' ? value : 'private';
|
|
409
|
+
if (!['private', 'public', 'internal'].includes(normalized)) {
|
|
410
|
+
throw new Error('--visibility must be private, public, or internal.');
|
|
411
|
+
}
|
|
412
|
+
return normalized;
|
|
413
|
+
}
|
|
414
|
+
function stringOption(options, name) {
|
|
415
|
+
const value = options[name];
|
|
416
|
+
if (value === undefined)
|
|
417
|
+
return undefined;
|
|
418
|
+
if (typeof value !== 'string')
|
|
419
|
+
throw new Error(`--${name} requires a value.`);
|
|
420
|
+
return value;
|
|
421
|
+
}
|
|
422
|
+
function platformVersion() {
|
|
423
|
+
const cliDirectory = dirname(fileURLToPath(import.meta.url));
|
|
424
|
+
const path = resolve(cliDirectory, '../../package.json');
|
|
425
|
+
const packageJson = JSON.parse(readFileSync(path, 'utf8'));
|
|
426
|
+
if (typeof packageJson.version !== 'string')
|
|
427
|
+
throw new Error('Could not read Meadow Platform version.');
|
|
428
|
+
return packageJson.version;
|
|
429
|
+
}
|
|
430
|
+
function titleCase(value) {
|
|
431
|
+
return value
|
|
432
|
+
.split(/[-_\s]+/)
|
|
433
|
+
.filter(Boolean)
|
|
434
|
+
.map((part) => `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`)
|
|
435
|
+
.join(' ');
|
|
436
|
+
}
|
|
437
|
+
function helpText() {
|
|
438
|
+
return `Meadow CLI
|
|
439
|
+
|
|
440
|
+
Usage:
|
|
441
|
+
meadow new <name> [--yes] [--config file] [--website-base-domain domain] [--no-install] [--no-git] [--github]
|
|
442
|
+
meadow init [--yes] [--config file] [--website-base-domain domain] [--dry-run] [--no-install] [--skip-visual-baselines]
|
|
443
|
+
meadow sync [--check] [--no-install]
|
|
444
|
+
meadow add <local-data|notifications>
|
|
445
|
+
meadow configure <firebase|revenuecat|supabase|assets|signing|store|github> [options]
|
|
446
|
+
meadow doctor [--json]
|
|
447
|
+
meadow version <major|minor|patch|x.y.z> [development|test|production]
|
|
448
|
+
meadow release-check <ios|android|all> [--json]
|
|
449
|
+
|
|
450
|
+
Run meadow configure <target> --help is not required; missing values are reported by name.
|
|
451
|
+
`;
|
|
452
|
+
}
|
|
453
|
+
function isRecord(value) {
|
|
454
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
455
|
+
}
|
|
456
|
+
function errorMessage(error) {
|
|
457
|
+
return error instanceof Error ? error.message : String(error);
|
|
458
|
+
}
|
|
459
|
+
if (process.argv[1] &&
|
|
460
|
+
realpathSync.native(resolve(process.argv[1])) === realpathSync.native(fileURLToPath(import.meta.url))) {
|
|
461
|
+
process.exitCode = await run();
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=meadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meadow.js","sourceRoot":"","sources":["../../src/cli/meadow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CommandRunner } from './commands.js';
|
|
2
|
+
export declare const LOCAL_DATA_PACKAGE_VERSION: "8.1.1";
|
|
3
|
+
export declare const JEEP_SQLITE_PACKAGE_VERSION: "2.8.0";
|
|
4
|
+
export declare const SQL_JS_PACKAGE_VERSION: "1.11.0";
|
|
5
|
+
export declare const LOCAL_DATA_DATABASE_VERSION = 1;
|
|
6
|
+
export declare const LOCAL_NOTIFICATIONS_PACKAGE_VERSION: "8.3.1";
|
|
7
|
+
export declare function addNotifications(directory: string, runner: CommandRunner): string[];
|
|
8
|
+
export declare function addLocalData(directory: string, runner: CommandRunner): string[];
|
|
9
|
+
export declare function localDataFiles(slug: string): ReadonlyMap<string, string>;
|
|
10
|
+
//# sourceMappingURL=recipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipes.d.ts","sourceRoot":"","sources":["../../src/cli/recipes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,eAAO,MAAM,0BAA0B,SAAsB,CAAC;AAC9D,eAAO,MAAM,2BAA2B,SAAuB,CAAC;AAGhE,eAAO,MAAM,sBAAsB,UAAkB,CAAC;AACtD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,mCAAmC,SAA+B,CAAC;AAKhF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAkEnF;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAqE/E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CASxE"}
|