kappmaker 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.
- package/README.md +545 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +195 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/adapty-setup.d.ts +2 -0
- package/dist/commands/adapty-setup.js +240 -0
- package/dist/commands/adapty-setup.js.map +1 -0
- package/dist/commands/config.d.ts +12 -0
- package/dist/commands/config.js +230 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create-appstore-app.d.ts +2 -0
- package/dist/commands/create-appstore-app.js +261 -0
- package/dist/commands/create-appstore-app.js.map +1 -0
- package/dist/commands/create-logo.d.ts +2 -0
- package/dist/commands/create-logo.js +93 -0
- package/dist/commands/create-logo.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.js +143 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/enhance.d.ts +2 -0
- package/dist/commands/enhance.js +55 -0
- package/dist/commands/enhance.js.map +1 -0
- package/dist/commands/generate-screenshots.d.ts +2 -0
- package/dist/commands/generate-screenshots.js +174 -0
- package/dist/commands/generate-screenshots.js.map +1 -0
- package/dist/commands/remove-bg.d.ts +2 -0
- package/dist/commands/remove-bg.js +41 -0
- package/dist/commands/remove-bg.js.map +1 -0
- package/dist/commands/split.d.ts +2 -0
- package/dist/commands/split.js +37 -0
- package/dist/commands/split.js.map +1 -0
- package/dist/commands/translate-screenshots.d.ts +2 -0
- package/dist/commands/translate-screenshots.js +224 -0
- package/dist/commands/translate-screenshots.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/services/adapty.service.d.ts +26 -0
- package/dist/services/adapty.service.js +230 -0
- package/dist/services/adapty.service.js.map +1 -0
- package/dist/services/asc-monetization.service.d.ts +3 -0
- package/dist/services/asc-monetization.service.js +223 -0
- package/dist/services/asc-monetization.service.js.map +1 -0
- package/dist/services/asc.service.d.ts +14 -0
- package/dist/services/asc.service.js +321 -0
- package/dist/services/asc.service.js.map +1 -0
- package/dist/services/fal.service.d.ts +15 -0
- package/dist/services/fal.service.js +236 -0
- package/dist/services/fal.service.js.map +1 -0
- package/dist/services/fastlane.service.d.ts +2 -0
- package/dist/services/fastlane.service.js +32 -0
- package/dist/services/fastlane.service.js.map +1 -0
- package/dist/services/firebase.service.d.ts +7 -0
- package/dist/services/firebase.service.js +176 -0
- package/dist/services/firebase.service.js.map +1 -0
- package/dist/services/git.service.d.ts +3 -0
- package/dist/services/git.service.js +13 -0
- package/dist/services/git.service.js.map +1 -0
- package/dist/services/gradle.service.d.ts +4 -0
- package/dist/services/gradle.service.js +31 -0
- package/dist/services/gradle.service.js.map +1 -0
- package/dist/services/ios.service.d.ts +1 -0
- package/dist/services/ios.service.js +9 -0
- package/dist/services/ios.service.js.map +1 -0
- package/dist/services/logo.service.d.ts +12 -0
- package/dist/services/logo.service.js +168 -0
- package/dist/services/logo.service.js.map +1 -0
- package/dist/services/openai.service.d.ts +2 -0
- package/dist/services/openai.service.js +42 -0
- package/dist/services/openai.service.js.map +1 -0
- package/dist/services/screenshot-styles.d.ts +1 -0
- package/dist/services/screenshot-styles.js +1050 -0
- package/dist/services/screenshot-styles.js.map +1 -0
- package/dist/services/screenshot.service.d.ts +14 -0
- package/dist/services/screenshot.service.js +136 -0
- package/dist/services/screenshot.service.js.map +1 -0
- package/dist/templates/adapty-config.json +50 -0
- package/dist/templates/appstore-config.json +188 -0
- package/dist/types/adapty.d.ts +38 -0
- package/dist/types/adapty.js +2 -0
- package/dist/types/adapty.js.map +1 -0
- package/dist/types/appstore.d.ts +150 -0
- package/dist/types/appstore.js +2 -0
- package/dist/types/appstore.js.map +1 -0
- package/dist/types/index.d.ts +80 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +18 -0
- package/dist/utils/config.js +107 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/exec.d.ts +17 -0
- package/dist/utils/exec.js +62 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.js +29 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompt.d.ts +2 -0
- package/dist/utils/prompt.js +26 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/validator.d.ts +2 -0
- package/dist/utils/validator.js +93 -0
- package/dist/utils/validator.js.map +1 -0
- package/package.json +35 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { createApp } from './commands/create.js';
|
|
3
|
+
import { createLogo } from './commands/create-logo.js';
|
|
4
|
+
import { split } from './commands/split.js';
|
|
5
|
+
import { removeBackground } from './commands/remove-bg.js';
|
|
6
|
+
import { enhance } from './commands/enhance.js';
|
|
7
|
+
import { translateScreenshots } from './commands/translate-screenshots.js';
|
|
8
|
+
import { configList, configGet, configSet, configPath, configInit, configAppStoreDefaults, configAdaptyDefaults } from './commands/config.js';
|
|
9
|
+
import { createAppStoreApp } from './commands/create-appstore-app.js';
|
|
10
|
+
import { generateScreenshots } from './commands/generate-screenshots.js';
|
|
11
|
+
import { adaptySetup } from './commands/adapty-setup.js';
|
|
12
|
+
export function createCli() {
|
|
13
|
+
const program = new Command();
|
|
14
|
+
program
|
|
15
|
+
.name('kappmaker')
|
|
16
|
+
.description('CLI tool for bootstrapping KAppMaker mobile apps')
|
|
17
|
+
.version('0.1.0');
|
|
18
|
+
program
|
|
19
|
+
.command('create')
|
|
20
|
+
.description('Create a new KAppMaker app from template')
|
|
21
|
+
.argument('<app-name>', 'Name of the app (PascalCase, e.g., Remimi)')
|
|
22
|
+
.option('--template-repo <url>', 'Git URL of the template repository')
|
|
23
|
+
.option('--organization <org>', 'Organization name for Fastlane signing')
|
|
24
|
+
.action(async (appName, options) => {
|
|
25
|
+
await createApp(appName, options);
|
|
26
|
+
});
|
|
27
|
+
program
|
|
28
|
+
.command('create-logo')
|
|
29
|
+
.description('Generate an app logo using AI (fal.ai)')
|
|
30
|
+
.option('--output <path>', 'Custom output path for the logo')
|
|
31
|
+
.action(async (options) => {
|
|
32
|
+
await createLogo(options);
|
|
33
|
+
});
|
|
34
|
+
// ── Image tools ────────────────────────────────────────────────────
|
|
35
|
+
program
|
|
36
|
+
.command('image-split')
|
|
37
|
+
.description('Split a grid image into individual tiles')
|
|
38
|
+
.argument('<source>', 'Path to the grid image')
|
|
39
|
+
.option('--rows <n>', 'Number of rows', '4')
|
|
40
|
+
.option('--cols <n>', 'Number of columns', '4')
|
|
41
|
+
.option('--zoom <factor>', 'Zoom factor to crop background edges', '1.07')
|
|
42
|
+
.option('--gap <pixels>', 'Gap pixels to skip at each tile edge', '0')
|
|
43
|
+
.option('--width <pixels>', 'Output tile width in pixels', '512')
|
|
44
|
+
.option('--height <pixels>', 'Output tile height in pixels', '512')
|
|
45
|
+
.option('--output-dir <path>', 'Directory to save tiles', '.')
|
|
46
|
+
.option('--keep <indices>', 'Comma-separated tile indices to keep (e.g., 1,3,5). Others are deleted')
|
|
47
|
+
.action(async (source, options) => {
|
|
48
|
+
const keep = options.keep
|
|
49
|
+
? options.keep.split(',').map((s) => parseInt(s.trim(), 10))
|
|
50
|
+
: undefined;
|
|
51
|
+
await split(source, {
|
|
52
|
+
rows: parseInt(options.rows, 10),
|
|
53
|
+
cols: parseInt(options.cols, 10),
|
|
54
|
+
zoom: parseFloat(options.zoom),
|
|
55
|
+
gap: parseInt(options.gap, 10),
|
|
56
|
+
width: parseInt(options.width, 10),
|
|
57
|
+
height: parseInt(options.height, 10),
|
|
58
|
+
outputDir: options.outputDir,
|
|
59
|
+
keep,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
program
|
|
63
|
+
.command('image-remove-bg')
|
|
64
|
+
.description('Remove background from an image using AI (fal.ai)')
|
|
65
|
+
.argument('<source>', 'Path to the image')
|
|
66
|
+
.option('--output <path>', 'Custom output path')
|
|
67
|
+
.action(async (source, options) => {
|
|
68
|
+
await removeBackground(source, options);
|
|
69
|
+
});
|
|
70
|
+
program
|
|
71
|
+
.command('image-enhance')
|
|
72
|
+
.description('Enhance image quality using AI (fal.ai)')
|
|
73
|
+
.argument('<source>', 'Path to the image')
|
|
74
|
+
.option('--output <path>', 'Custom output path')
|
|
75
|
+
.action(async (source, options) => {
|
|
76
|
+
await enhance(source, options);
|
|
77
|
+
});
|
|
78
|
+
program
|
|
79
|
+
.command('translate-screenshots')
|
|
80
|
+
.description('Translate app screenshots into multiple locales using AI (fal.ai)')
|
|
81
|
+
.argument('[source-dir]', 'Directory containing source screenshots (default: MobileApp/distribution/ios/appstore_metadata/screenshots/en-US)')
|
|
82
|
+
.option('--output <path>', 'Distribution directory root (auto-detected from source path)')
|
|
83
|
+
.option('--locales <codes...>', 'Target Play Store locale codes (space-separated)')
|
|
84
|
+
.option('--rows <n>', 'Grid rows', '2')
|
|
85
|
+
.option('--cols <n>', 'Grid columns', '4')
|
|
86
|
+
.option('--resolution <res>', 'AI resolution (1K, 2K, 4K)', '2K')
|
|
87
|
+
.option('--poll-interval <seconds>', 'Seconds between status checks', '10')
|
|
88
|
+
.action(async (sourceDir, options) => {
|
|
89
|
+
const resolvedDir = sourceDir ?? 'MobileApp/distribution/ios/appstore_metadata/screenshots/en-US';
|
|
90
|
+
await translateScreenshots(resolvedDir, {
|
|
91
|
+
output: options.output,
|
|
92
|
+
locales: options.locales,
|
|
93
|
+
rows: parseInt(options.rows, 10),
|
|
94
|
+
cols: parseInt(options.cols, 10),
|
|
95
|
+
resolution: options.resolution,
|
|
96
|
+
pollInterval: parseInt(options.pollInterval, 10),
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
program
|
|
100
|
+
.command('generate-screenshots')
|
|
101
|
+
.description('Generate App Store/Play Store marketing screenshots using AI (OpenAI + fal.ai)')
|
|
102
|
+
.requiredOption('--prompt <text>', 'App description or PRD for screenshot generation')
|
|
103
|
+
.option('--input <dir>', 'Directory with reference screenshots (default: auto-detect Assets/screenshots)')
|
|
104
|
+
.option('--style <id>', 'Style preset ID', '1')
|
|
105
|
+
.option('--output <dir>', 'Output base directory (default: Assets/screenshots)')
|
|
106
|
+
.option('--resolution <res>', 'AI resolution (1K, 2K, 4K)', '2K')
|
|
107
|
+
.option('--rows <n>', 'Grid rows', '2')
|
|
108
|
+
.option('--cols <n>', 'Grid columns', '4')
|
|
109
|
+
.option('--poll-interval <seconds>', 'Seconds between status checks', '10')
|
|
110
|
+
.action(async (options) => {
|
|
111
|
+
await generateScreenshots({
|
|
112
|
+
prompt: options.prompt,
|
|
113
|
+
input: options.input,
|
|
114
|
+
style: parseInt(options.style, 10),
|
|
115
|
+
output: options.output,
|
|
116
|
+
resolution: options.resolution,
|
|
117
|
+
rows: parseInt(options.rows, 10),
|
|
118
|
+
cols: parseInt(options.cols, 10),
|
|
119
|
+
pollInterval: parseInt(options.pollInterval, 10),
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
// ── App Store Connect ─────────────────────────────────────────────
|
|
123
|
+
program
|
|
124
|
+
.command('create-appstore-app')
|
|
125
|
+
.description('Configure an existing app on App Store Connect (version, subscriptions, metadata, etc.)')
|
|
126
|
+
.option('--config <path>', 'Path to App Store Connect JSON config file')
|
|
127
|
+
.action(async (options) => {
|
|
128
|
+
await createAppStoreApp(options);
|
|
129
|
+
});
|
|
130
|
+
// ── Adapty ──────────────────────────────────────────────────────────
|
|
131
|
+
const adapty = program
|
|
132
|
+
.command('adapty')
|
|
133
|
+
.description('Adapty subscription management');
|
|
134
|
+
adapty
|
|
135
|
+
.command('setup')
|
|
136
|
+
.description('Set up Adapty products, paywall, and placements')
|
|
137
|
+
.option('--config <path>', 'Path to Adapty JSON config file')
|
|
138
|
+
.action(async (options) => {
|
|
139
|
+
await adaptySetup(options);
|
|
140
|
+
});
|
|
141
|
+
// ── Config ─────────────────────────────────────────────────────────
|
|
142
|
+
const config = program
|
|
143
|
+
.command('config')
|
|
144
|
+
.description('Manage CLI configuration');
|
|
145
|
+
config
|
|
146
|
+
.command('list')
|
|
147
|
+
.description('Show all config values')
|
|
148
|
+
.action(async () => {
|
|
149
|
+
await configList();
|
|
150
|
+
});
|
|
151
|
+
config
|
|
152
|
+
.command('get')
|
|
153
|
+
.description('Get a config value')
|
|
154
|
+
.argument('<key>', 'Config key to read')
|
|
155
|
+
.action(async (key) => {
|
|
156
|
+
await configGet(key);
|
|
157
|
+
});
|
|
158
|
+
config
|
|
159
|
+
.command('set')
|
|
160
|
+
.description('Set a config value')
|
|
161
|
+
.argument('<key>', 'Config key to set')
|
|
162
|
+
.argument('<value>', 'Value to set')
|
|
163
|
+
.action(async (key, value) => {
|
|
164
|
+
await configSet(key, value);
|
|
165
|
+
});
|
|
166
|
+
config
|
|
167
|
+
.command('path')
|
|
168
|
+
.description('Show config file path')
|
|
169
|
+
.action(async () => {
|
|
170
|
+
await configPath();
|
|
171
|
+
});
|
|
172
|
+
config
|
|
173
|
+
.command('init')
|
|
174
|
+
.description('Interactively set up configuration')
|
|
175
|
+
.action(async () => {
|
|
176
|
+
await configInit();
|
|
177
|
+
});
|
|
178
|
+
config
|
|
179
|
+
.command('appstore-defaults')
|
|
180
|
+
.description('Save or view global App Store Connect defaults (reused across all apps)')
|
|
181
|
+
.option('--save <path>', 'Save a JSON file as global appstore defaults')
|
|
182
|
+
.option('--init', 'Interactively set up App Store defaults')
|
|
183
|
+
.action(async (options) => {
|
|
184
|
+
await configAppStoreDefaults(options);
|
|
185
|
+
});
|
|
186
|
+
config
|
|
187
|
+
.command('adapty-defaults')
|
|
188
|
+
.description('Save or view global Adapty defaults (reused across all apps)')
|
|
189
|
+
.option('--save <path>', 'Save a JSON file as global Adapty defaults')
|
|
190
|
+
.action(async (options) => {
|
|
191
|
+
await configAdaptyDefaults(options);
|
|
192
|
+
});
|
|
193
|
+
return program;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { promptInput, confirm } from '../utils/prompt.js';
|
|
6
|
+
import { loadConfig, getAdaptyTemplate, loadAdaptyDefaults } from '../utils/config.js';
|
|
7
|
+
import * as adapty from '../services/adapty.service.js';
|
|
8
|
+
const CONFIG_FILENAME = 'Assets/adapty-config.json';
|
|
9
|
+
const TOTAL_STEPS = 8;
|
|
10
|
+
export async function adaptySetup(options) {
|
|
11
|
+
// Step 1: Validate adapty CLI
|
|
12
|
+
logger.step(1, TOTAL_STEPS, 'Validating adapty CLI');
|
|
13
|
+
await adapty.validateAdaptyInstalled();
|
|
14
|
+
// Step 2: Validate auth
|
|
15
|
+
logger.step(2, TOTAL_STEPS, 'Checking Adapty authentication');
|
|
16
|
+
await adapty.validateAdaptyAuth();
|
|
17
|
+
// Step 3: Load config
|
|
18
|
+
logger.step(3, TOTAL_STEPS, 'Loading Adapty config');
|
|
19
|
+
const { config, configPath } = await loadAdaptyConfig(options.config);
|
|
20
|
+
logger.info(`App: ${config.app.title} (${config.app.bundle_id})`);
|
|
21
|
+
// Show summary and ask for confirmation
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(chalk.bold(' Review before proceeding:\n'));
|
|
24
|
+
console.log(` ${chalk.cyan('Config:')} ${configPath}`);
|
|
25
|
+
console.log(` ${chalk.cyan('App:')} ${config.app.title}`);
|
|
26
|
+
console.log(` ${chalk.cyan('Bundle ID:')} ${config.app.bundle_id}`);
|
|
27
|
+
console.log(` ${chalk.cyan('Package ID:')} ${config.app.package_id}`);
|
|
28
|
+
console.log(` ${chalk.cyan('Access Level:')} ${config.access_level.sdk_id}`);
|
|
29
|
+
console.log(` ${chalk.cyan('Products:')}`);
|
|
30
|
+
for (const product of config.products) {
|
|
31
|
+
console.log(` ${chalk.gray('•')} ${product.title} (${product.period})`);
|
|
32
|
+
console.log(` iOS: ${product.ios_product_id || chalk.gray('(not set)')}`);
|
|
33
|
+
console.log(` Android: ${product.android_product_id || chalk.gray('(not set)')}`);
|
|
34
|
+
}
|
|
35
|
+
console.log(` ${chalk.cyan('Paywalls:')}`);
|
|
36
|
+
for (const paywall of config.paywalls) {
|
|
37
|
+
console.log(` ${chalk.gray('•')} ${paywall.title}`);
|
|
38
|
+
}
|
|
39
|
+
console.log(` ${chalk.cyan('Placements:')}`);
|
|
40
|
+
for (const placement of config.placements) {
|
|
41
|
+
console.log(` ${chalk.gray('•')} ${placement.title} (${placement.developer_id})`);
|
|
42
|
+
}
|
|
43
|
+
console.log('');
|
|
44
|
+
console.log(chalk.gray(' Edit the config file to change any values before continuing.'));
|
|
45
|
+
console.log('');
|
|
46
|
+
const shouldContinue = await confirm(' Continue with these settings?');
|
|
47
|
+
if (!shouldContinue) {
|
|
48
|
+
logger.info(`Config saved at: ${configPath}`);
|
|
49
|
+
logger.info('Edit the file and run the command again.');
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
// Re-read config in case user edited it during confirmation
|
|
53
|
+
const finalConfig = await fs.readJson(configPath);
|
|
54
|
+
Object.assign(config, finalConfig);
|
|
55
|
+
// Step 4: Find or create app
|
|
56
|
+
logger.step(4, TOTAL_STEPS, 'Finding or creating Adapty app');
|
|
57
|
+
let appId = config.app.app_id;
|
|
58
|
+
if (!appId) {
|
|
59
|
+
const existing = await adapty.findAppByBundleId(config.app.bundle_id);
|
|
60
|
+
if (existing) {
|
|
61
|
+
appId = existing.id;
|
|
62
|
+
logger.info(`Found existing app: ${appId}`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const created = await adapty.createApp(config.app.title, config.app.bundle_id, config.app.package_id);
|
|
66
|
+
appId = created.app_id;
|
|
67
|
+
if (created.sdk_key) {
|
|
68
|
+
logger.info(`SDK Key (save this for your mobile app): ${chalk.bold(created.sdk_key)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
config.app.app_id = appId;
|
|
72
|
+
}
|
|
73
|
+
logger.info(`App ID: ${appId}`);
|
|
74
|
+
// Step 5: Find or create access level
|
|
75
|
+
logger.step(5, TOTAL_STEPS, 'Setting up access level');
|
|
76
|
+
const levels = await adapty.listAccessLevels(appId);
|
|
77
|
+
let accessLevelId = '';
|
|
78
|
+
const existing = levels.find((l) => l.sdk_id === config.access_level.sdk_id);
|
|
79
|
+
if (existing) {
|
|
80
|
+
accessLevelId = existing.id;
|
|
81
|
+
logger.info(`Access level "${config.access_level.sdk_id}" already exists.`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
accessLevelId = await adapty.createAccessLevel(appId, config.access_level.sdk_id, config.access_level.title);
|
|
85
|
+
}
|
|
86
|
+
// If we couldn't get the ID, try listing again
|
|
87
|
+
if (!accessLevelId) {
|
|
88
|
+
const refreshed = await adapty.listAccessLevels(appId);
|
|
89
|
+
const found = refreshed.find((l) => l.sdk_id === config.access_level.sdk_id);
|
|
90
|
+
if (found)
|
|
91
|
+
accessLevelId = found.id;
|
|
92
|
+
}
|
|
93
|
+
if (!accessLevelId) {
|
|
94
|
+
logger.warn('Could not determine access level ID. Products may fail to create.');
|
|
95
|
+
}
|
|
96
|
+
// Step 6: Create products
|
|
97
|
+
logger.step(6, TOTAL_STEPS, 'Creating products');
|
|
98
|
+
const productIds = [];
|
|
99
|
+
for (const product of config.products) {
|
|
100
|
+
const productId = await adapty.createProduct(appId, product, accessLevelId);
|
|
101
|
+
if (productId) {
|
|
102
|
+
product.adapty_product_id = productId;
|
|
103
|
+
productIds.push(productId);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Step 7: Create paywalls
|
|
107
|
+
logger.step(7, TOTAL_STEPS, 'Creating paywalls');
|
|
108
|
+
// Build a map of product title → adapty product ID
|
|
109
|
+
const productIdByTitle = new Map();
|
|
110
|
+
for (const product of config.products) {
|
|
111
|
+
if (product.adapty_product_id) {
|
|
112
|
+
productIdByTitle.set(product.title, product.adapty_product_id);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const paywallIds = [];
|
|
116
|
+
for (const paywall of config.paywalls) {
|
|
117
|
+
if (paywall.paywall_id) {
|
|
118
|
+
paywallIds.push(paywall.paywall_id);
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
// Resolve product titles to IDs for this paywall
|
|
122
|
+
const paywallProductIds = paywall.product_titles
|
|
123
|
+
.map((t) => productIdByTitle.get(t))
|
|
124
|
+
.filter((id) => !!id);
|
|
125
|
+
if (paywallProductIds.length === 0) {
|
|
126
|
+
logger.warn(`No product IDs found for paywall "${paywall.title}". Skipping.`);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
const id = await adapty.createPaywall(appId, paywall.title, paywallProductIds);
|
|
130
|
+
if (id) {
|
|
131
|
+
paywall.paywall_id = id;
|
|
132
|
+
paywallIds.push(id);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Step 8: Create placements
|
|
136
|
+
logger.step(8, TOTAL_STEPS, 'Creating placements');
|
|
137
|
+
if (paywallIds.length > 0) {
|
|
138
|
+
for (let i = 0; i < config.placements.length; i++) {
|
|
139
|
+
const placement = config.placements[i];
|
|
140
|
+
// Link each placement to the corresponding paywall (or the first one if fewer paywalls than placements)
|
|
141
|
+
const paywallId = paywallIds[i] ?? paywallIds[0];
|
|
142
|
+
await adapty.createPlacement(appId, placement.title, placement.developer_id, paywallId);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
logger.warn('No paywall IDs available. Skipping placement creation.');
|
|
147
|
+
}
|
|
148
|
+
// Save updated config with generated IDs
|
|
149
|
+
await fs.writeJson(configPath, config, { spaces: 2 });
|
|
150
|
+
logger.info(`Config saved to ${configPath}`);
|
|
151
|
+
logger.done();
|
|
152
|
+
}
|
|
153
|
+
async function loadAdaptyConfig(configPath) {
|
|
154
|
+
const savePath = configPath ?? path.resolve(CONFIG_FILENAME);
|
|
155
|
+
// If config file exists, load it
|
|
156
|
+
if (await fs.pathExists(savePath)) {
|
|
157
|
+
logger.info(`Using config: ${savePath}`);
|
|
158
|
+
const config = await fs.readJson(savePath);
|
|
159
|
+
fillProductDefaults(config);
|
|
160
|
+
await fs.writeJson(savePath, config, { spaces: 2 });
|
|
161
|
+
return { config, configPath: savePath };
|
|
162
|
+
}
|
|
163
|
+
// No config found — prompt for required fields and generate one
|
|
164
|
+
logger.info("No config file found. Let's set up the basics.");
|
|
165
|
+
const config = await loadDefaultTemplate();
|
|
166
|
+
const userConfig = await loadConfig();
|
|
167
|
+
config.app.title = await promptInput(' App name: ');
|
|
168
|
+
const appNameLower = config.app.title.toLowerCase().replace(/\s+/g, '');
|
|
169
|
+
const defaultBundleId = userConfig.bundleIdPrefix
|
|
170
|
+
? `${userConfig.bundleIdPrefix}.${appNameLower}`
|
|
171
|
+
: `com.${appNameLower}`;
|
|
172
|
+
config.app.bundle_id =
|
|
173
|
+
(await promptInput(` iOS Bundle ID (${defaultBundleId}): `)) || defaultBundleId;
|
|
174
|
+
config.app.package_id =
|
|
175
|
+
(await promptInput(` Android Package ID (${config.app.bundle_id}): `)) ||
|
|
176
|
+
config.app.bundle_id;
|
|
177
|
+
fillProductDefaults(config);
|
|
178
|
+
await fs.ensureDir(path.dirname(savePath));
|
|
179
|
+
await fs.writeJson(savePath, config, { spaces: 2 });
|
|
180
|
+
logger.success(`Config saved to ${savePath}`);
|
|
181
|
+
return { config, configPath: savePath };
|
|
182
|
+
}
|
|
183
|
+
async function loadDefaultTemplate() {
|
|
184
|
+
const template = getAdaptyTemplate();
|
|
185
|
+
const globals = await loadAdaptyDefaults();
|
|
186
|
+
if (!globals)
|
|
187
|
+
return template;
|
|
188
|
+
return deepMerge(template, globals);
|
|
189
|
+
}
|
|
190
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
191
|
+
function deepMerge(base, override) {
|
|
192
|
+
const result = { ...base };
|
|
193
|
+
for (const key of Object.keys(override)) {
|
|
194
|
+
const val = override[key];
|
|
195
|
+
if (val === undefined || val === '')
|
|
196
|
+
continue;
|
|
197
|
+
if (Array.isArray(val)) {
|
|
198
|
+
result[key] = val;
|
|
199
|
+
}
|
|
200
|
+
else if (val && typeof val === 'object') {
|
|
201
|
+
result[key] = deepMerge(base[key] ?? {}, val);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
result[key] = val;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
function fillProductDefaults(config) {
|
|
210
|
+
const appName = config.app.title;
|
|
211
|
+
const appNameLower = appName.toLowerCase().replace(/\s+/g, '');
|
|
212
|
+
if (!appNameLower)
|
|
213
|
+
return;
|
|
214
|
+
const periodSuffix = {
|
|
215
|
+
weekly: 'weekly',
|
|
216
|
+
monthly: 'monthly',
|
|
217
|
+
two_months: 'twomonths',
|
|
218
|
+
trimonthly: 'quarterly',
|
|
219
|
+
semiannual: 'semiannual',
|
|
220
|
+
annual: 'yearly',
|
|
221
|
+
lifetime: 'lifetime',
|
|
222
|
+
};
|
|
223
|
+
for (const product of config.products) {
|
|
224
|
+
const suffix = periodSuffix[product.period] ?? product.period;
|
|
225
|
+
const priceTag = (product.price || '0').replace('.', '');
|
|
226
|
+
// iOS product ID matches App Store format: appname.premium.weekly.v1.699.v1
|
|
227
|
+
if (!product.ios_product_id) {
|
|
228
|
+
product.ios_product_id = `${appNameLower}.premium.${suffix}.v1.${priceTag}.v1`;
|
|
229
|
+
}
|
|
230
|
+
// Android product ID: appname.premium.weekly.v1
|
|
231
|
+
if (!product.android_product_id) {
|
|
232
|
+
product.android_product_id = `${appNameLower}.premium.${suffix}.v1`;
|
|
233
|
+
}
|
|
234
|
+
// Android base plan ID: autorenew-weekly-price-v1
|
|
235
|
+
if (!product.android_base_plan_id) {
|
|
236
|
+
product.android_base_plan_id = `autorenew-${suffix}-price-v1`;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=adapty-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapty-setup.js","sourceRoot":"","sources":["../../src/commands/adapty-setup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AAGxD,MAAM,eAAe,GAAG,2BAA2B,CAAC;AACpD,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA4B;IAC5D,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACrD,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;IAEvC,wBAAwB;IACxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,gCAAgC,CAAC,CAAC;IAC9D,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAElC,sBAAsB;IACtB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtE,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAElE,wCAAwC;IACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,kBAAkB,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC9C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACxE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4DAA4D;IAC5D,MAAM,WAAW,GAAiB,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEnC,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,gCAAgC,CAAC,CAAC;IAC9D,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CACpC,MAAM,CAAC,GAAG,CAAC,KAAK,EAChB,MAAM,CAAC,GAAG,CAAC,SAAS,EACpB,MAAM,CAAC,GAAG,CAAC,UAAU,CACtB,CAAC;YACF,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;YACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,4CAA4C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;IAC5B,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;IAEhC,sCAAsC;IACtC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAC5C,KAAK,EACL,MAAM,CAAC,YAAY,CAAC,MAAM,EAC1B,MAAM,CAAC,YAAY,CAAC,KAAK,CAC1B,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,KAAK;YAAE,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACjD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5E,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;IACjD,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,iDAAiD;QACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,cAAc;aAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEtC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,CAAC,KAAK,cAAc,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC/E,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvC,wGAAwG;YACxG,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IAED,yCAAyC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAE7C,MAAM,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,UAAmB;IAEnB,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7D,iCAAiC;IACjC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAiB,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzD,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAC;IAEtC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,UAAU,CAAC,cAAc;QAC/C,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,IAAI,YAAY,EAAE;QAChD,CAAC,CAAC,OAAO,YAAY,EAAE,CAAC;IAE1B,MAAM,CAAC,GAAG,CAAC,SAAS;QAClB,CAAC,MAAM,WAAW,CAAC,oBAAoB,eAAe,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;IACnF,MAAM,CAAC,GAAG,CAAC,UAAU;QACnB,CAAC,MAAM,WAAW,CAAC,yBAAyB,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IAEvB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAE9C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,QAAmC,CAAC;IACzD,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,CAA4B,CAAC;AACjE,CAAC;AAED,8DAA8D;AAC9D,SAAS,SAAS,CAAC,IAAS,EAAE,QAAa;IACzC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;YAAE,SAAS;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,YAAY,GAA2B;QAC3C,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,UAAU;KACrB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;QAC9D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEzD,4EAA4E;QAC5E,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC,cAAc,GAAG,GAAG,YAAY,YAAY,MAAM,OAAO,QAAQ,KAAK,CAAC;QACjF,CAAC;QACD,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAChC,OAAO,CAAC,kBAAkB,GAAG,GAAG,YAAY,YAAY,MAAM,KAAK,CAAC;QACtE,CAAC;QACD,kDAAkD;QAClD,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAClC,OAAO,CAAC,oBAAoB,GAAG,aAAa,MAAM,WAAW,CAAC;QAChE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function configList(): Promise<void>;
|
|
2
|
+
export declare function configGet(key: string): Promise<void>;
|
|
3
|
+
export declare function configSet(key: string, value: string): Promise<void>;
|
|
4
|
+
export declare function configPath(): Promise<void>;
|
|
5
|
+
export declare function configInit(): Promise<void>;
|
|
6
|
+
export declare function configAppStoreDefaults(options: {
|
|
7
|
+
save?: string;
|
|
8
|
+
init?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function configAdaptyDefaults(options: {
|
|
11
|
+
save?: string;
|
|
12
|
+
}): Promise<void>;
|