@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.
Files changed (79) hide show
  1. package/MeadowPlatform.podspec +17 -0
  2. package/Package.swift +23 -0
  3. package/README.md +147 -2
  4. package/android/build.gradle +42 -0
  5. package/android/src/main/AndroidManifest.xml +1 -0
  6. package/android/src/main/java/app/meadow/platform/MeadowAppRatingPlugin.java +38 -0
  7. package/dist/cli/commands.d.ts +74 -0
  8. package/dist/cli/commands.d.ts.map +1 -0
  9. package/dist/cli/commands.js +1062 -0
  10. package/dist/cli/commands.js.map +1 -0
  11. package/dist/cli/config.d.ts +123 -0
  12. package/dist/cli/config.d.ts.map +1 -0
  13. package/dist/cli/config.js +428 -0
  14. package/dist/cli/config.js.map +1 -0
  15. package/dist/cli/meadow.d.ts +8 -0
  16. package/dist/cli/meadow.d.ts.map +1 -0
  17. package/dist/cli/meadow.js +463 -0
  18. package/dist/cli/meadow.js.map +1 -0
  19. package/dist/cli/recipes.d.ts +10 -0
  20. package/dist/cli/recipes.d.ts.map +1 -0
  21. package/dist/cli/recipes.js +575 -0
  22. package/dist/cli/recipes.js.map +1 -0
  23. package/dist/cli/sync.d.ts +14 -0
  24. package/dist/cli/sync.d.ts.map +1 -0
  25. package/dist/cli/sync.js +310 -0
  26. package/dist/cli/sync.js.map +1 -0
  27. package/dist/cli/templates.d.ts +27 -0
  28. package/dist/cli/templates.d.ts.map +1 -0
  29. package/dist/cli/templates.js +1246 -0
  30. package/dist/cli/templates.js.map +1 -0
  31. package/dist/cli/website.d.ts +5 -0
  32. package/dist/cli/website.d.ts.map +1 -0
  33. package/dist/cli/website.js +262 -0
  34. package/dist/cli/website.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/notifications.d.ts +119 -0
  40. package/dist/notifications.d.ts.map +1 -0
  41. package/dist/notifications.js +320 -0
  42. package/dist/notifications.js.map +1 -0
  43. package/dist/platform.d.ts +163 -0
  44. package/dist/platform.d.ts.map +1 -0
  45. package/dist/platform.js +623 -0
  46. package/dist/platform.js.map +1 -0
  47. package/dist/purchases.d.ts +88 -0
  48. package/dist/purchases.d.ts.map +1 -0
  49. package/dist/purchases.js +296 -0
  50. package/dist/purchases.js.map +1 -0
  51. package/dist/ui/app-build.component.d.ts +18 -0
  52. package/dist/ui/app-build.component.d.ts.map +1 -0
  53. package/dist/ui/app-build.component.js +56 -0
  54. package/dist/ui/app-build.component.js.map +1 -0
  55. package/dist/ui/app-build.model.d.ts +11 -0
  56. package/dist/ui/app-build.model.d.ts.map +1 -0
  57. package/dist/ui/app-build.model.js +18 -0
  58. package/dist/ui/app-build.model.js.map +1 -0
  59. package/dist/ui/app-links.component.d.ts +14 -0
  60. package/dist/ui/app-links.component.d.ts.map +1 -0
  61. package/dist/ui/app-links.component.js +77 -0
  62. package/dist/ui/app-links.component.js.map +1 -0
  63. package/dist/ui/app-links.model.d.ts +18 -0
  64. package/dist/ui/app-links.model.d.ts.map +1 -0
  65. package/dist/ui/app-links.model.js +17 -0
  66. package/dist/ui/app-links.model.js.map +1 -0
  67. package/dist/ui/index.d.ts +5 -0
  68. package/dist/ui/index.d.ts.map +1 -0
  69. package/dist/ui/index.js +5 -0
  70. package/dist/ui/index.js.map +1 -0
  71. package/docs/CLI.md +376 -0
  72. package/docs/PLATFORM_GUIDE.md +422 -0
  73. package/docs/POC_FINDINGS.md +218 -0
  74. package/docs/PROJECT_BRIEF.md +501 -0
  75. package/docs/RELEASING.md +49 -0
  76. package/docs/V0.1_PATH.md +310 -0
  77. package/ios/Sources/MeadowPlatformPlugin/MeadowAppRatingPlugin.swift +39 -0
  78. package/package.json +89 -4
  79. package/schema/meadow-config.schema.json +250 -0
@@ -0,0 +1,310 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { readProjectConfig } from './config.js';
4
+ import { GENERATED_HEADER, managedProjectFiles, TOOLCHAIN } from './templates.js';
5
+ import { MEADOW_WEBSITE_MARKER, websiteConfig } from './website.js';
6
+ export function syncProject(directory = process.cwd(), check = false) {
7
+ const root = resolve(directory);
8
+ const config = readProjectConfig(root);
9
+ const actions = [];
10
+ const writes = [];
11
+ planStructuredFile(root, 'meadow.config.json', `${JSON.stringify(config, null, 2)}\n`, 'Normalize the typed Meadow configuration.', actions, writes);
12
+ const packageJson = readJsonObject(resolve(root, 'package.json'));
13
+ planStructuredFile(root, 'package.json', `${JSON.stringify(synchronizedPackageJson(packageJson, config, existsSync(resolve(root, MEADOW_WEBSITE_MARKER))), null, 2)}\n`, 'Synchronize release metadata, capability dependencies, platforms, and Meadow scripts.', actions, writes);
14
+ for (const [relativePath, contents] of managedProjectFiles(config)) {
15
+ planGeneratedFile(root, relativePath, contents, actions, writes);
16
+ }
17
+ if (existsSync(resolve(root, MEADOW_WEBSITE_MARKER))) {
18
+ planStructuredFile(root, 'website/site.config.json', websiteConfig(config), 'Synchronize the companion website identity and URL.', actions, writes);
19
+ }
20
+ planNativeFiles(root, config, actions, writes);
21
+ const conflicts = actions.some((action) => action.status === 'conflict');
22
+ if (!check && !conflicts) {
23
+ for (const write of writes) {
24
+ const path = resolve(root, write.relativePath);
25
+ mkdirSync(dirname(path), { recursive: true });
26
+ writeFileSync(path, write.contents);
27
+ }
28
+ }
29
+ return {
30
+ config,
31
+ actions,
32
+ changed: writes.length > 0,
33
+ valid: !conflicts && (check ? writes.length === 0 : true),
34
+ };
35
+ }
36
+ function synchronizedPackageJson(packageJson, config, meadowWebsite) {
37
+ const dependencies = stringRecord(packageJson.dependencies, 'package.json dependencies');
38
+ const nextDependencies = { ...dependencies };
39
+ nextDependencies['@capacitor/app'] = TOOLCHAIN.capacitorApp;
40
+ if (config.app.platforms.includes('android'))
41
+ nextDependencies['@capacitor/android'] = TOOLCHAIN.capacitor;
42
+ else
43
+ delete nextDependencies['@capacitor/android'];
44
+ if (config.app.platforms.includes('ios'))
45
+ nextDependencies['@capacitor/ios'] = TOOLCHAIN.capacitor;
46
+ else
47
+ delete nextDependencies['@capacitor/ios'];
48
+ synchronizeDependency(nextDependencies, '@capacitor-firebase/analytics', config.services.firebase.enabled, TOOLCHAIN.capacitorFirebase);
49
+ synchronizeDependency(nextDependencies, '@capacitor-firebase/crashlytics', config.services.firebase.enabled, TOOLCHAIN.capacitorFirebase);
50
+ synchronizeDependency(nextDependencies, 'firebase', config.services.firebase.enabled, TOOLCHAIN.firebase);
51
+ synchronizeDependency(nextDependencies, '@revenuecat/purchases-capacitor', config.services.revenuecat.enabled, TOOLCHAIN.revenuecat);
52
+ synchronizeDependency(nextDependencies, '@supabase/supabase-js', config.services.supabase.enabled, TOOLCHAIN.supabase);
53
+ synchronizeDependency(nextDependencies, '@capacitor-community/sqlite', config.services.localData.enabled, TOOLCHAIN.localData);
54
+ synchronizeDependency(nextDependencies, 'jeep-sqlite', config.services.localData.enabled, TOOLCHAIN.jeepSqlite);
55
+ synchronizeDependency(nextDependencies, 'sql.js', config.services.localData.enabled, TOOLCHAIN.sqlJs);
56
+ synchronizeDependency(nextDependencies, '@capacitor/local-notifications', config.services.notifications.enabled, TOOLCHAIN.localNotifications);
57
+ const scripts = stringRecord(packageJson.scripts, 'package.json scripts');
58
+ const nextScripts = {
59
+ ...scripts,
60
+ 'services:config': 'node scripts/generate-meadow-service-config.mjs',
61
+ prestart: 'npm run services:config',
62
+ 'prestart:visual': 'npm run services:config',
63
+ 'prebuild:web': 'npm run services:config',
64
+ 'prebuild:device': 'npm run services:config',
65
+ sync: 'meadow sync',
66
+ 'sync:check': 'meadow sync --check',
67
+ 'native:init': config.app.platforms.map((platform) => `cap add ${platform}`).join(' && '),
68
+ };
69
+ if (meadowWebsite) {
70
+ nextScripts['website:start'] = 'npm start --prefix website';
71
+ nextScripts['website:build'] = 'npm run build --prefix website';
72
+ nextScripts['website:check'] = 'npm run build --prefix website';
73
+ }
74
+ if (config.app.platforms.includes('android')) {
75
+ nextScripts['build:android:ci'] =
76
+ 'npm run build:device && cap sync android && cd android && ./gradlew assembleDebug --no-daemon --console=plain';
77
+ }
78
+ else {
79
+ delete nextScripts['build:android:ci'];
80
+ }
81
+ if (config.app.platforms.includes('ios'))
82
+ nextScripts['build:ios:ci'] = 'sh scripts/build-ios-ci.sh';
83
+ else
84
+ delete nextScripts['build:ios:ci'];
85
+ return {
86
+ ...packageJson,
87
+ version: config.release.version,
88
+ scripts: nextScripts,
89
+ dependencies: nextDependencies,
90
+ };
91
+ }
92
+ function synchronizeDependency(dependencies, name, enabled, version) {
93
+ if (enabled)
94
+ dependencies[name] = version;
95
+ else
96
+ delete dependencies[name];
97
+ }
98
+ function planNativeFiles(root, config, actions, writes) {
99
+ const androidProjectGradle = 'android/build.gradle';
100
+ if (existsSync(resolve(root, androidProjectGradle)) && config.app.platforms.includes('android')) {
101
+ const current = readFileSync(resolve(root, androidProjectGradle), 'utf8');
102
+ let next = ensureGradleClasspath(current, 'com.google.gms:google-services', TOOLCHAIN.googleServicesGradle, config.services.firebase.enabled && config.services.firebase.configured);
103
+ next = synchronizeGradleClasspath(next, 'com.google.firebase:firebase-crashlytics-gradle', TOOLCHAIN.firebaseCrashlyticsGradle, config.services.firebase.enabled && config.services.firebase.configured);
104
+ planStructuredFile(root, androidProjectGradle, next, 'Synchronize Android Firebase build plugins.', actions, writes);
105
+ }
106
+ const androidGradle = 'android/app/build.gradle';
107
+ if (existsSync(resolve(root, androidGradle)) && config.app.platforms.includes('android')) {
108
+ const current = readFileSync(resolve(root, androidGradle), 'utf8');
109
+ let next = current
110
+ .replace(/namespace\s+["'][^"']+["']/, `namespace "${config.app.identifiers.android}"`)
111
+ .replace(/applicationId\s+["'][^"']+["']/, `applicationId "${config.app.identifiers.android}"`)
112
+ .replace(/versionCode\s+\d+/, `versionCode ${config.release.build}`)
113
+ .replace(/versionName\s+["'][^"']+["']/, `versionName "${config.release.version}"`);
114
+ next = ensureGradlePlugin(next, 'com.google.gms.google-services', config.services.firebase.enabled && config.services.firebase.configured);
115
+ next = synchronizeGradlePlugin(next, 'com.google.firebase.crashlytics', config.services.firebase.enabled && config.services.firebase.configured);
116
+ planStructuredFile(root, androidGradle, next, 'Synchronize Android identity and release metadata.', actions, writes);
117
+ }
118
+ const androidStrings = 'android/app/src/main/res/values/strings.xml';
119
+ if (existsSync(resolve(root, androidStrings)) && config.app.platforms.includes('android')) {
120
+ const current = readFileSync(resolve(root, androidStrings), 'utf8');
121
+ const appName = escapeXml(config.app.name);
122
+ const next = current
123
+ .replace(/(<string name="app_name">)[^<]*(<\/string>)/, `$1${appName}$2`)
124
+ .replace(/(<string name="title_activity_main">)[^<]*(<\/string>)/, `$1${appName}$2`)
125
+ .replace(/(<string name="package_name">)[^<]*(<\/string>)/, `$1${config.app.identifiers.android}$2`)
126
+ .replace(/(<string name="custom_url_scheme">)[^<]*(<\/string>)/, `$1${config.app.identifiers.android}$2`);
127
+ planStructuredFile(root, androidStrings, next, 'Synchronize Android display name and identifiers.', actions, writes);
128
+ }
129
+ const androidManifest = 'android/app/src/main/AndroidManifest.xml';
130
+ if (existsSync(resolve(root, androidManifest)) && config.app.platforms.includes('android')) {
131
+ const current = readFileSync(resolve(root, androidManifest), 'utf8');
132
+ const withoutOrientation = current.replace(/\s+android:screenOrientation="[^"]*"/, '');
133
+ let next = config.app.orientation === 'any'
134
+ ? withoutOrientation
135
+ : withoutOrientation.replace(/<activity\b/, `<activity android:screenOrientation="${config.app.orientation}"`);
136
+ next = synchronizeAndroidMetadata(next, 'firebase_analytics_collection_enabled', config.services.firebase.enabled);
137
+ next = synchronizeAndroidMetadata(next, 'firebase_crashlytics_collection_enabled', config.services.firebase.enabled);
138
+ planStructuredFile(root, androidManifest, next, 'Synchronize Android orientation.', actions, writes);
139
+ }
140
+ const iosProject = 'ios/App/App.xcodeproj/project.pbxproj';
141
+ if (existsSync(resolve(root, iosProject)) && config.app.platforms.includes('ios')) {
142
+ const current = readFileSync(resolve(root, iosProject), 'utf8');
143
+ let next = current
144
+ .replace(/PRODUCT_BUNDLE_IDENTIFIER = [^;]+;/g, `PRODUCT_BUNDLE_IDENTIFIER = ${config.app.identifiers.ios};`)
145
+ .replace(/CURRENT_PROJECT_VERSION = [^;]+;/g, `CURRENT_PROJECT_VERSION = ${config.release.build};`)
146
+ .replace(/MARKETING_VERSION = [^;]+;/g, `MARKETING_VERSION = ${config.release.version};`);
147
+ next = synchronizeXcodeResource(next, 'GoogleService-Info.plist', config.services.firebase.enabled && config.services.firebase.configured);
148
+ planStructuredFile(root, iosProject, next, 'Synchronize iOS identity and release metadata.', actions, writes);
149
+ }
150
+ const iosInfo = 'ios/App/App/Info.plist';
151
+ if (existsSync(resolve(root, iosInfo)) && config.app.platforms.includes('ios')) {
152
+ const current = readFileSync(resolve(root, iosInfo), 'utf8');
153
+ const orientations = iosOrientations(config.app.orientation);
154
+ let next = current
155
+ .replace(/(<key>CFBundleDisplayName<\/key>\s*<string>)[^<]*(<\/string>)/, `$1${escapeXml(config.app.name)}$2`)
156
+ .replace(/(<key>UISupportedInterfaceOrientations(?:~ipad)?<\/key>\s*)<array>[\s\S]*?<\/array>/g, `$1${orientations}`);
157
+ next = synchronizePlistBoolean(next, 'FIREBASE_ANALYTICS_COLLECTION_ENABLED', config.services.firebase.enabled);
158
+ next = synchronizePlistBoolean(next, 'FirebaseCrashlyticsCollectionEnabled', config.services.firebase.enabled);
159
+ planStructuredFile(root, iosInfo, next, 'Synchronize the iOS display name and orientation.', actions, writes);
160
+ }
161
+ }
162
+ function synchronizeGradleClasspath(source, artifact, version, enabled) {
163
+ const escapedArtifact = escapeRegExp(artifact);
164
+ const line = new RegExp(`^[ \\t]*classpath ["']${escapedArtifact}:[^"']+["'][ \\t]*\\n?`, 'gm');
165
+ const withoutExisting = source.replace(line, '');
166
+ if (!enabled)
167
+ return withoutExisting;
168
+ const declaration = ` classpath '${artifact}:${version}'\n`;
169
+ return withoutExisting.replace(/(dependencies\s*\{\s*\n)/, `$1${declaration}`);
170
+ }
171
+ function ensureGradleClasspath(source, artifact, version, enabled) {
172
+ if (!enabled || source.includes(`${artifact}:`))
173
+ return source;
174
+ const declaration = ` classpath '${artifact}:${version}'\n`;
175
+ return source.replace(/(dependencies\s*\{\s*\n)/, `$1${declaration}`);
176
+ }
177
+ function synchronizeGradlePlugin(source, plugin, enabled) {
178
+ const escapedPlugin = escapeRegExp(plugin);
179
+ const line = new RegExp(`^[ \\t]*apply plugin: ["']${escapedPlugin}["'][ \\t]*\\n?`, 'gm');
180
+ const withoutExisting = source.replace(line, '');
181
+ if (!enabled)
182
+ return withoutExisting;
183
+ const separator = withoutExisting.endsWith('\n') ? '' : '\n';
184
+ return `${withoutExisting}${separator}apply plugin: '${plugin}'\n`;
185
+ }
186
+ function ensureGradlePlugin(source, plugin, enabled) {
187
+ if (!enabled || source.includes(`apply plugin: '${plugin}'`) || source.includes(`apply plugin: "${plugin}"`)) {
188
+ return source;
189
+ }
190
+ const separator = source.endsWith('\n') ? '' : '\n';
191
+ return `${source}${separator}apply plugin: '${plugin}'\n`;
192
+ }
193
+ function synchronizeAndroidMetadata(source, name, enabled) {
194
+ const escapedName = escapeRegExp(name);
195
+ const tag = new RegExp(`\\s*<meta-data\\b[^>]*android:name=["']${escapedName}["'][^>]*/>`, 'g');
196
+ const withoutExisting = source.replace(tag, '');
197
+ if (!enabled)
198
+ return withoutExisting;
199
+ const metadata = `\n <meta-data android:name="${name}" android:value="false" />`;
200
+ return withoutExisting.replace(/\s*<\/application>/, `${metadata}\n </application>`);
201
+ }
202
+ function synchronizePlistBoolean(source, key, enabled) {
203
+ const escapedKey = escapeRegExp(key);
204
+ const entry = new RegExp(`\\s*<key>${escapedKey}<\\/key>\\s*<(?:true|false)\\s*\\/>`, 'g');
205
+ const withoutExisting = source.replace(entry, '');
206
+ if (!enabled)
207
+ return withoutExisting;
208
+ return withoutExisting.replace(/\s*<\/dict>/, `\n\t<key>${key}</key>\n\t<false/>\n</dict>`);
209
+ }
210
+ function synchronizeXcodeResource(source, filename, enabled) {
211
+ const fileReferenceId = '484159010000000000000001';
212
+ const buildFileId = '484159010000000000000002';
213
+ const escapedFilename = escapeRegExp(filename);
214
+ const buildFileLine = new RegExp(`^[ \\t]*${buildFileId} /\\* ${escapedFilename} in Resources \\*/ = \\{[^\\n]+\\};\\n?`, 'gm');
215
+ const fileReferenceLine = new RegExp(`^[ \\t]*${fileReferenceId} /\\* ${escapedFilename} \\*/ = \\{[^\\n]+\\};\\n?`, 'gm');
216
+ const childLine = new RegExp(`^[ \\t]*${fileReferenceId} /\\* ${escapedFilename} \\*/,\\n?`, 'gm');
217
+ const resourceLine = new RegExp(`^[ \\t]*${buildFileId} /\\* ${escapedFilename} in Resources \\*/,\\n?`, 'gm');
218
+ let next = source
219
+ .replace(buildFileLine, '')
220
+ .replace(fileReferenceLine, '')
221
+ .replace(childLine, '')
222
+ .replace(resourceLine, '');
223
+ if (!enabled)
224
+ return next;
225
+ next = next.replace(/\/\* End PBXBuildFile section \*\//, `\t\t${buildFileId} /* ${filename} in Resources */ = {isa = PBXBuildFile; fileRef = ${fileReferenceId} /* ${filename} */; };\n/* End PBXBuildFile section */`);
226
+ next = next.replace(/\/\* End PBXFileReference section \*\//, `\t\t${fileReferenceId} /* ${filename} */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = ${filename}; sourceTree = "<group>"; };\n/* End PBXFileReference section */`);
227
+ next = next.replace(/(\/\* App \*\/ = \{[\s\S]*?children = \(\n)/, `$1\t\t\t\t${fileReferenceId} /* ${filename} */,\n`);
228
+ next = next.replace(/(isa = PBXResourcesBuildPhase;[\s\S]*?files = \(\n)/, `$1\t\t\t\t${buildFileId} /* ${filename} in Resources */,\n`);
229
+ return next;
230
+ }
231
+ function escapeRegExp(value) {
232
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
233
+ }
234
+ function planGeneratedFile(root, relativePath, contents, actions, writes) {
235
+ const path = resolve(root, relativePath);
236
+ if (!existsSync(path)) {
237
+ actions.push({ status: 'create', path: relativePath, message: 'Create generated file.' });
238
+ writes.push({ relativePath, contents });
239
+ return;
240
+ }
241
+ const current = readFileSync(path, 'utf8');
242
+ if (current === contents) {
243
+ actions.push({ status: 'current', path: relativePath, message: 'Matches meadow.config.json.' });
244
+ return;
245
+ }
246
+ if (!current.startsWith(GENERATED_HEADER)) {
247
+ actions.push({
248
+ status: 'conflict',
249
+ path: relativePath,
250
+ message: 'Existing file is not marked as Meadow-generated; move app-owned changes before syncing.',
251
+ });
252
+ return;
253
+ }
254
+ actions.push({ status: 'update', path: relativePath, message: 'Regenerate from meadow.config.json.' });
255
+ writes.push({ relativePath, contents });
256
+ }
257
+ function planStructuredFile(root, relativePath, contents, message, actions, writes) {
258
+ const path = resolve(root, relativePath);
259
+ const current = existsSync(path) ? readFileSync(path, 'utf8') : undefined;
260
+ if (current === contents) {
261
+ actions.push({ status: 'current', path: relativePath, message: 'Matches meadow.config.json.' });
262
+ return;
263
+ }
264
+ actions.push({ status: current === undefined ? 'create' : 'update', path: relativePath, message });
265
+ writes.push({ relativePath, contents });
266
+ }
267
+ function readJsonObject(path) {
268
+ let parsed;
269
+ try {
270
+ parsed = JSON.parse(readFileSync(path, 'utf8'));
271
+ }
272
+ catch (error) {
273
+ throw new Error(`Could not read ${path}: ${error instanceof Error ? error.message : String(error)}`);
274
+ }
275
+ if (!isRecord(parsed))
276
+ throw new Error(`${path} must contain a JSON object.`);
277
+ return parsed;
278
+ }
279
+ function stringRecord(value, label) {
280
+ if (value === undefined)
281
+ return {};
282
+ if (!isRecord(value) || Object.values(value).some((entry) => typeof entry !== 'string')) {
283
+ throw new Error(`${label} must contain names and string values.`);
284
+ }
285
+ return value;
286
+ }
287
+ function escapeXml(value) {
288
+ return value
289
+ .replaceAll('&', '&amp;')
290
+ .replaceAll('<', '&lt;')
291
+ .replaceAll('>', '&gt;')
292
+ .replaceAll('"', '&quot;')
293
+ .replaceAll("'", '&apos;');
294
+ }
295
+ function iosOrientations(orientation) {
296
+ const values = orientation === 'portrait'
297
+ ? ['UIInterfaceOrientationPortrait']
298
+ : orientation === 'landscape'
299
+ ? ['UIInterfaceOrientationLandscapeLeft', 'UIInterfaceOrientationLandscapeRight']
300
+ : [
301
+ 'UIInterfaceOrientationPortrait',
302
+ 'UIInterfaceOrientationLandscapeLeft',
303
+ 'UIInterfaceOrientationLandscapeRight',
304
+ ];
305
+ return `<array>\n${values.map((value) => `\t\t<string>${value}</string>`).join('\n')}\n\t</array>`;
306
+ }
307
+ function isRecord(value) {
308
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
309
+ }
310
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { MeadowProjectConfig } from './config.js';
2
+ export declare const TOOLCHAIN: Readonly<{
3
+ angular: "22.1.6";
4
+ angularBuild: "22.1.8";
5
+ capacitor: "8.4.3";
6
+ capacitorApp: "8.1.1";
7
+ capacitorFirebase: "8.5.1";
8
+ firebase: "12.19.0";
9
+ googleServicesGradle: "4.5.0";
10
+ firebaseCrashlyticsGradle: "3.0.8";
11
+ revenuecat: "13.5.1";
12
+ supabase: "2.116.0";
13
+ localData: "8.1.1";
14
+ localNotifications: "8.3.1";
15
+ jeepSqlite: "2.8.0";
16
+ sqlJs: "1.11.0";
17
+ node: "24.15.0";
18
+ typescript: "6.0.3";
19
+ playwright: "1.63.0";
20
+ }>;
21
+ export declare const GENERATED_HEADER = "// Generated by meadow sync. Do not edit directly.";
22
+ export declare function generatedFiles(config: MeadowProjectConfig, platformVersion: string, requestedPlatformSpec?: string): ReadonlyMap<string, string>;
23
+ export declare function managedProjectFiles(config: MeadowProjectConfig): ReadonlyMap<string, string>;
24
+ export declare const MEADOW_AGENT_SECTION_START = "<!-- meadow-platform:start -->";
25
+ export declare const MEADOW_AGENT_SECTION_END = "<!-- meadow-platform:end -->";
26
+ export declare function meadowAgentSection(config: MeadowProjectConfig): string;
27
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;EAkBpB,CAAC;AAEH,eAAO,MAAM,gBAAgB,uDAAuD,CAAC;AASrF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,mBAAmB,EAC3B,eAAe,EAAE,MAAM,EACvB,qBAAqB,CAAC,EAAE,MAAM,GAC7B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CA6J7B;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAW5F;AAoiCD,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAC3E,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AAEvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA6BtE"}