@idealyst/cli 1.2.112 → 1.2.114

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.
@@ -47,6 +47,7 @@ const types_1 = require("../types");
47
47
  const logger_1 = require("../utils/logger");
48
48
  const core_1 = require("../generators/core");
49
49
  const api_1 = require("../generators/extensions/api");
50
+ const live_activity_1 = require("../generators/extensions/live-activity");
50
51
  const merger_1 = require("../templates/merger");
51
52
  const processor_1 = require("../templates/processor");
52
53
  const constants_1 = require("../constants");
@@ -56,7 +57,7 @@ const constants_1 = require("../constants");
56
57
  async function addCommand(name, options) {
57
58
  try {
58
59
  // Validate project type
59
- const validTypes = ['web', 'mobile', 'api', 'shared'];
60
+ const validTypes = ['web', 'mobile', 'api', 'shared', 'live-activity'];
60
61
  if (!validTypes.includes(options.type)) {
61
62
  logger_1.logger.error(`Invalid project type: ${options.type}`);
62
63
  logger_1.logger.dim(`Valid types: ${validTypes.join(', ')}`);
@@ -92,8 +93,8 @@ async function addCommand(name, options) {
92
93
  // Generate the project based on type
93
94
  const type = options.type;
94
95
  const projectPath = path_1.default.join(workspaceRoot, 'packages', name);
95
- // Check if project already exists
96
- if (await fs_extra_1.default.pathExists(projectPath)) {
96
+ // Check if project already exists (skip for live-activity which extends mobile)
97
+ if (type !== 'live-activity' && await fs_extra_1.default.pathExists(projectPath)) {
97
98
  logger_1.logger.error(`Project already exists: packages/${name}`);
98
99
  process.exit(1);
99
100
  }
@@ -134,13 +135,38 @@ async function addCommand(name, options) {
134
135
  projectName: name,
135
136
  });
136
137
  break;
138
+ case 'live-activity': {
139
+ const activityName = options.activityName;
140
+ if (!activityName) {
141
+ logger_1.logger.error('Live Activity requires --activity-name (PascalCase)');
142
+ logger_1.logger.dim('Example: idealyst add live-activity --type live-activity --activity-name OrderTracker');
143
+ process.exit(1);
144
+ }
145
+ const result = await (0, live_activity_1.applyLiveActivityExtension)(workspaceRoot, templateData, {
146
+ name: activityName,
147
+ });
148
+ if (!result.success) {
149
+ logger_1.logger.error(result.warning || 'Failed to scaffold Live Activity');
150
+ process.exit(1);
151
+ }
152
+ if (result.warning) {
153
+ logger_1.logger.warn(result.warning);
154
+ }
155
+ break;
156
+ }
137
157
  }
138
158
  // Update root package.json workspaces (if not already using packages/*)
139
- if (!rootPackageJson.workspaces?.includes('packages/*')) {
159
+ // Skip for live-activity which extends the existing mobile package
160
+ if (type !== 'live-activity' && !rootPackageJson.workspaces?.includes('packages/*')) {
140
161
  await (0, merger_1.addToWorkspaces)(path_1.default.join(workspaceRoot, 'package.json'), `packages/${name}`);
141
162
  }
142
163
  // Print success
143
- printAddSuccess(name, type, workspaceRoot);
164
+ if (type === 'live-activity') {
165
+ printLiveActivitySuccess(options.activityName || name, workspaceRoot);
166
+ }
167
+ else {
168
+ printAddSuccess(name, type, workspaceRoot);
169
+ }
144
170
  }
145
171
  catch (error) {
146
172
  if (error instanceof types_1.NotInWorkspaceError) {
@@ -231,4 +257,23 @@ function printAddSuccess(name, type, workspaceRoot) {
231
257
  console.log(chalk_1.default.dim(' 2. Import and use components/utilities'));
232
258
  console.log('');
233
259
  }
260
+ /**
261
+ * Print success message for live-activity add command
262
+ */
263
+ function printLiveActivitySuccess(activityName, workspaceRoot) {
264
+ console.log(chalk_1.default.green.bold('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
265
+ console.log(chalk_1.default.green.bold(` ✓ Scaffolded Live Activity: ${activityName}`));
266
+ console.log(chalk_1.default.green.bold('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
267
+ console.log(chalk_1.default.cyan(' Files created:'));
268
+ console.log(chalk_1.default.dim(` iOS: ios/*LiveActivity/${activityName}Attributes.swift`));
269
+ console.log(chalk_1.default.dim(` iOS: ios/*LiveActivity/${activityName}ActivityView.swift`));
270
+ console.log(chalk_1.default.dim(` iOS: ios/*LiveActivity/${activityName}Bundle.swift`));
271
+ console.log(chalk_1.default.dim(` TS: src/activities/${activityName.charAt(0).toLowerCase() + activityName.slice(1)}.ts\n`));
272
+ console.log(chalk_1.default.cyan(' Next steps:'));
273
+ console.log(chalk_1.default.dim(' 1. Add @idealyst/live-activity to your mobile package'));
274
+ console.log(chalk_1.default.dim(' 2. Add the Widget Extension target in Xcode'));
275
+ console.log(chalk_1.default.dim(' 3. Customize the Swift attributes & views'));
276
+ console.log(chalk_1.default.dim(' 4. Use the generated TypeScript helper to start activities'));
277
+ console.log('');
278
+ }
234
279
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -7,7 +7,7 @@ exports.DEPENDENCIES = exports.IGNORE_PATTERNS = exports.TEMPLATE_EXTENSIONS = e
7
7
  // Package version - updated during build
8
8
  exports.VERSION = '0.1.0';
9
9
  // Current Idealyst framework version to use in templates
10
- exports.IDEALYST_VERSION = '1.2.112';
10
+ exports.IDEALYST_VERSION = '1.2.114';
11
11
  // React Native version
12
12
  exports.REACT_NATIVE_VERSION = '0.83.0';
13
13
  // React version
@@ -3,7 +3,7 @@
3
3
  * Extension generators exports
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.applyDevcontainerExtension = exports.applyGraphqlExtension = exports.applyTrpcExtension = exports.applyPrismaExtension = exports.applyApiExtension = void 0;
6
+ exports.applyLiveActivityExtension = exports.applyDevcontainerExtension = exports.applyGraphqlExtension = exports.applyTrpcExtension = exports.applyPrismaExtension = exports.applyApiExtension = void 0;
7
7
  var api_1 = require("./api");
8
8
  Object.defineProperty(exports, "applyApiExtension", { enumerable: true, get: function () { return api_1.applyApiExtension; } });
9
9
  var prisma_1 = require("./prisma");
@@ -14,4 +14,6 @@ var graphql_1 = require("./graphql");
14
14
  Object.defineProperty(exports, "applyGraphqlExtension", { enumerable: true, get: function () { return graphql_1.applyGraphqlExtension; } });
15
15
  var devcontainer_1 = require("./devcontainer");
16
16
  Object.defineProperty(exports, "applyDevcontainerExtension", { enumerable: true, get: function () { return devcontainer_1.applyDevcontainerExtension; } });
17
+ var live_activity_1 = require("./live-activity");
18
+ Object.defineProperty(exports, "applyLiveActivityExtension", { enumerable: true, get: function () { return live_activity_1.applyLiveActivityExtension; } });
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/extensions/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6BAA0C;AAAjC,wGAAA,iBAAiB,OAAA;AAC1B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAC3B,qCAAkD;AAAzC,gHAAA,qBAAqB,OAAA;AAC9B,+CAA4D;AAAnD,0HAAA,0BAA0B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/extensions/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6BAA0C;AAAjC,wGAAA,iBAAiB,OAAA;AAC1B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAC3B,qCAAkD;AAAzC,gHAAA,qBAAqB,OAAA;AAC9B,+CAA4D;AAAnD,0HAAA,0BAA0B,OAAA;AACnC,iDAA6D;AAApD,2HAAA,0BAA0B,OAAA"}
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ /**
3
+ * Live Activity extension generator
4
+ *
5
+ * Scaffolds iOS Widget Extension and Android configuration
6
+ * for @idealyst/live-activity integration.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.applyLiveActivityExtension = applyLiveActivityExtension;
13
+ const path_1 = __importDefault(require("path"));
14
+ const fs_extra_1 = __importDefault(require("fs-extra"));
15
+ const logger_1 = require("../../utils/logger");
16
+ /**
17
+ * Apply Live Activity extension to a mobile project.
18
+ * Scaffolds the iOS Widget Extension and Android configuration.
19
+ */
20
+ async function applyLiveActivityExtension(workspaceRoot, data, config) {
21
+ logger_1.logger.info('Setting up Live Activity support...');
22
+ const mobileDir = path_1.default.join(workspaceRoot, 'packages', 'mobile');
23
+ const iosDir = path_1.default.join(mobileDir, 'ios');
24
+ const androidDir = path_1.default.join(mobileDir, 'android');
25
+ // Verify mobile project exists
26
+ if (!await fs_extra_1.default.pathExists(mobileDir)) {
27
+ return {
28
+ success: false,
29
+ warning: 'No mobile project found. Run "idealyst add mobile" first.',
30
+ };
31
+ }
32
+ const warnings = [];
33
+ // 1. Create iOS Widget Extension
34
+ if (await fs_extra_1.default.pathExists(iosDir)) {
35
+ await createIosWidgetExtension(iosDir, data, config);
36
+ logger_1.logger.success('Created iOS Widget Extension');
37
+ }
38
+ else {
39
+ warnings.push('iOS directory not found — skipping Widget Extension scaffolding');
40
+ }
41
+ // 2. Configure Android
42
+ if (await fs_extra_1.default.pathExists(androidDir)) {
43
+ await configureAndroid(androidDir, data);
44
+ logger_1.logger.success('Configured Android Live Updates');
45
+ }
46
+ else {
47
+ warnings.push('Android directory not found — skipping Android configuration');
48
+ }
49
+ // 3. Generate TypeScript interface
50
+ await generateTypeScriptInterface(mobileDir, config);
51
+ logger_1.logger.success(`Created src/activities/${toCamelCase(config.name)}.ts`);
52
+ return {
53
+ success: true,
54
+ warning: warnings.length > 0 ? warnings.join('; ') : undefined,
55
+ };
56
+ }
57
+ // ============================================================================
58
+ // iOS Widget Extension
59
+ // ============================================================================
60
+ async function createIosWidgetExtension(iosDir, data, config) {
61
+ const extensionDirName = `${data.appDisplayName.replace(/\s+/g, '')}LiveActivity`;
62
+ const extensionDir = path_1.default.join(iosDir, extensionDirName);
63
+ await fs_extra_1.default.ensureDir(extensionDir);
64
+ // Generate ActivityAttributes
65
+ await fs_extra_1.default.writeFile(path_1.default.join(extensionDir, `${config.name}Attributes.swift`), generateAttributesSwift(config));
66
+ // Generate ActivityView
67
+ await fs_extra_1.default.writeFile(path_1.default.join(extensionDir, `${config.name}ActivityView.swift`), generateActivityViewSwift(config));
68
+ // Generate Widget Bundle
69
+ await fs_extra_1.default.writeFile(path_1.default.join(extensionDir, `${config.name}Bundle.swift`), generateBundleSwift(config));
70
+ // Generate Info.plist for extension
71
+ await fs_extra_1.default.writeFile(path_1.default.join(extensionDir, 'Info.plist'), generateExtensionInfoPlist());
72
+ // Update main app Info.plist
73
+ await enableLiveActivitiesInPlist(iosDir, data);
74
+ }
75
+ function generateAttributesSwift(config) {
76
+ return `import ActivityKit
77
+ import Foundation
78
+
79
+ struct ${config.name}Attributes: ActivityAttributes {
80
+ struct ContentState: Codable, Hashable {
81
+ // TODO: Define your dynamic content state here.
82
+ // These values can be updated while the activity is running.
83
+ var status: String
84
+ var progress: Double
85
+ var subtitle: String?
86
+ }
87
+
88
+ // TODO: Define your static attributes here.
89
+ // These values are set when the activity starts and cannot change.
90
+ var title: String
91
+ var accentColor: String?
92
+ }
93
+ `;
94
+ }
95
+ function generateActivityViewSwift(config) {
96
+ return `import SwiftUI
97
+ import WidgetKit
98
+ import ActivityKit
99
+
100
+ @available(iOS 16.2, *)
101
+ struct ${config.name}ActivityView: Widget {
102
+ var body: some WidgetConfiguration {
103
+ ActivityConfiguration(for: ${config.name}Attributes.self) { context in
104
+ // Lock screen / StandBy presentation
105
+ VStack(spacing: 12) {
106
+ HStack {
107
+ Text(context.attributes.title)
108
+ .font(.headline)
109
+ Spacer()
110
+ Text("\\(Int(context.state.progress * 100))%")
111
+ .font(.title2)
112
+ .bold()
113
+ .monospacedDigit()
114
+ }
115
+
116
+ ProgressView(value: context.state.progress)
117
+ .tint(.blue)
118
+
119
+ Text(context.state.status)
120
+ .font(.subheadline)
121
+ .foregroundStyle(.secondary)
122
+ .frame(maxWidth: .infinity, alignment: .leading)
123
+ }
124
+ .padding()
125
+ .background(.ultraThinMaterial)
126
+ } dynamicIsland: { context in
127
+ DynamicIsland {
128
+ DynamicIslandExpandedRegion(.leading) {
129
+ Text(context.attributes.title)
130
+ .font(.caption)
131
+ .lineLimit(1)
132
+ }
133
+
134
+ DynamicIslandExpandedRegion(.trailing) {
135
+ Text("\\(Int(context.state.progress * 100))%")
136
+ .font(.caption)
137
+ .bold()
138
+ .monospacedDigit()
139
+ }
140
+
141
+ DynamicIslandExpandedRegion(.center) {
142
+ Text(context.state.status)
143
+ .font(.headline)
144
+ .lineLimit(1)
145
+ }
146
+
147
+ DynamicIslandExpandedRegion(.bottom) {
148
+ ProgressView(value: context.state.progress)
149
+ .tint(.blue)
150
+ .padding(.top, 4)
151
+ }
152
+ } compactLeading: {
153
+ Image(systemName: "bolt.fill")
154
+ .foregroundColor(.blue)
155
+ } compactTrailing: {
156
+ Text("\\(Int(context.state.progress * 100))%")
157
+ .font(.caption)
158
+ .monospacedDigit()
159
+ } minimal: {
160
+ Image(systemName: "bolt.fill")
161
+ .foregroundColor(.blue)
162
+ }
163
+ }
164
+ }
165
+ }
166
+ `;
167
+ }
168
+ function generateBundleSwift(config) {
169
+ return `import SwiftUI
170
+ import WidgetKit
171
+
172
+ @available(iOS 16.2, *)
173
+ @main
174
+ struct ${config.name}Bundle: WidgetBundle {
175
+ var body: some Widget {
176
+ ${config.name}ActivityView()
177
+ }
178
+ }
179
+ `;
180
+ }
181
+ function generateExtensionInfoPlist() {
182
+ return `<?xml version="1.0" encoding="UTF-8"?>
183
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
184
+ <plist version="1.0">
185
+ <dict>
186
+ <key>CFBundleDevelopmentRegion</key>
187
+ <string>$(DEVELOPMENT_LANGUAGE)</string>
188
+ <key>CFBundleDisplayName</key>
189
+ <string>$(PRODUCT_NAME)</string>
190
+ <key>CFBundleExecutable</key>
191
+ <string>$(EXECUTABLE_NAME)</string>
192
+ <key>CFBundleIdentifier</key>
193
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
194
+ <key>CFBundleInfoDictionaryVersion</key>
195
+ <string>6.0</string>
196
+ <key>CFBundleName</key>
197
+ <string>$(PRODUCT_NAME)</string>
198
+ <key>CFBundlePackageType</key>
199
+ <string>$(PRODUCT_TYPE)</string>
200
+ <key>CFBundleShortVersionString</key>
201
+ <string>1.0</string>
202
+ <key>CFBundleVersion</key>
203
+ <string>1</string>
204
+ <key>NSExtension</key>
205
+ <dict>
206
+ <key>NSExtensionPointIdentifier</key>
207
+ <string>com.apple.widgetkit-extension</string>
208
+ </dict>
209
+ </dict>
210
+ </plist>
211
+ `;
212
+ }
213
+ async function enableLiveActivitiesInPlist(iosDir, data) {
214
+ // Find the app's Info.plist
215
+ const appName = data.appDisplayName.replace(/\s+/g, '');
216
+ const possiblePaths = [
217
+ path_1.default.join(iosDir, appName, 'Info.plist'),
218
+ path_1.default.join(iosDir, 'mobile', 'Info.plist'),
219
+ ];
220
+ for (const plistPath of possiblePaths) {
221
+ if (await fs_extra_1.default.pathExists(plistPath)) {
222
+ let content = await fs_extra_1.default.readFile(plistPath, 'utf8');
223
+ if (!content.includes('NSSupportsLiveActivities')) {
224
+ content = content.replace(/<\/dict>\s*<\/plist>/, `\t<key>NSSupportsLiveActivities</key>
225
+ \t<true/>
226
+ \t<key>NSSupportsLiveActivitiesFrequentUpdates</key>
227
+ \t<true/>
228
+ </dict>
229
+ </plist>`);
230
+ await fs_extra_1.default.writeFile(plistPath, content);
231
+ }
232
+ break;
233
+ }
234
+ }
235
+ }
236
+ // ============================================================================
237
+ // Android Configuration
238
+ // ============================================================================
239
+ async function configureAndroid(androidDir, data) {
240
+ const manifestPath = path_1.default.join(androidDir, 'app', 'src', 'main', 'AndroidManifest.xml');
241
+ if (await fs_extra_1.default.pathExists(manifestPath)) {
242
+ let content = await fs_extra_1.default.readFile(manifestPath, 'utf8');
243
+ // Add POST_NOTIFICATIONS permission if not present
244
+ if (!content.includes('POST_NOTIFICATIONS')) {
245
+ content = content.replace('<application', ' <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />\n <uses-permission android:name="android.permission.POST_PROMOTED_NOTIFICATIONS" />\n\n <application');
246
+ await fs_extra_1.default.writeFile(manifestPath, content);
247
+ }
248
+ }
249
+ }
250
+ // ============================================================================
251
+ // TypeScript Interface
252
+ // ============================================================================
253
+ async function generateTypeScriptInterface(mobileDir, config) {
254
+ const activitiesDir = path_1.default.join(mobileDir, 'src', 'activities');
255
+ await fs_extra_1.default.ensureDir(activitiesDir);
256
+ const camelName = toCamelCase(config.name);
257
+ const filePath = path_1.default.join(activitiesDir, `${camelName}.ts`);
258
+ await fs_extra_1.default.writeFile(filePath, `import type { StartActivityOptions, UpdateActivityOptions } from '@idealyst/live-activity';
259
+
260
+ // ============================================================================
261
+ // ${config.name} Activity Types
262
+ // ============================================================================
263
+
264
+ /** Static attributes — set when the activity starts, cannot change. */
265
+ export interface ${config.name}Attributes {
266
+ title: string;
267
+ accentColor?: string;
268
+ }
269
+
270
+ /** Dynamic content state — can be updated while the activity is running. */
271
+ export interface ${config.name}ContentState {
272
+ status: string;
273
+ progress: number;
274
+ subtitle?: string;
275
+ }
276
+
277
+ /** Start a ${config.name} activity with type safety. */
278
+ export function start${config.name}(
279
+ attributes: ${config.name}Attributes,
280
+ contentState: ${config.name}ContentState,
281
+ options?: Partial<Omit<StartActivityOptions<'custom'>, 'templateType' | 'attributes' | 'contentState'>>,
282
+ ): StartActivityOptions<'custom'> {
283
+ return {
284
+ templateType: 'custom',
285
+ attributes,
286
+ contentState,
287
+ ...options,
288
+ };
289
+ }
290
+ `);
291
+ }
292
+ // ============================================================================
293
+ // Helpers
294
+ // ============================================================================
295
+ function toCamelCase(str) {
296
+ return str.charAt(0).toLowerCase() + str.slice(1);
297
+ }
298
+ //# sourceMappingURL=live-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-activity.js","sourceRoot":"","sources":["../../../src/generators/extensions/live-activity.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -36,8 +36,9 @@ program
36
36
  program
37
37
  .command('add <name>')
38
38
  .description('Add a new project to an existing workspace')
39
- .requiredOption('-t, --type <type>', 'Project type: web, mobile, api, shared')
39
+ .requiredOption('-t, --type <type>', 'Project type: web, mobile, api, shared, live-activity')
40
40
  .option('--app-name <name>', 'Mobile app display name (for mobile type)')
41
+ .option('--activity-name <name>', 'Live Activity name in PascalCase (for live-activity type)')
41
42
  .option('--with-trpc', 'Include tRPC setup')
42
43
  .option('--with-graphql', 'Include GraphQL setup')
43
44
  .option('--skip-install', 'Skip dependency installation')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;GAEG;;AAEH,yCAAoC;AACpC,2CAAsC;AACtC,0CAA8C;AAC9C,wCAA4C;AAC5C,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,mBAAO,CAAC,CAAC;AAEpB,gCAAgC;AAChC,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;KAC1E,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;KACtD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,0BAA0B,EAAE,yDAAyD,CAAC;KAC7F,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,oEAAoE,CAAC;KACnG,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;KAC3F,MAAM,CAAC,SAAS,EAAE,8DAA8D,CAAC;KACjF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KAC7E,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,qCAAqC;AACrC,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,4CAA4C,CAAC;KACzD,cAAc,CAAC,mBAAmB,EAAE,wCAAwC,CAAC;KAC7E,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACjD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,EAAE,MAAM,CAAC;KAC1E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,4BAA4B;AAC5B,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAW,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhD,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;GAEG;;AAEH,yCAAoC;AACpC,2CAAsC;AACtC,0CAA8C;AAC9C,wCAA4C;AAC5C,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,mBAAO,CAAC,CAAC;AAEpB,gCAAgC;AAChC,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,uBAAuB,EAAE,kBAAkB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,uBAAuB,EAAE,yCAAyC,CAAC;KAC1E,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;KACtD,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,0BAA0B,EAAE,yDAAyD,CAAC;KAC7F,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,oEAAoE,CAAC;KACnG,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;KAC3F,MAAM,CAAC,SAAS,EAAE,8DAA8D,CAAC;KACjF,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;KAC7E,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,qCAAqC;AACrC,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,4CAA4C,CAAC;KACzD,cAAc,CAAC,mBAAmB,EAAE,uDAAuD,CAAC;KAC5F,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,wBAAwB,EAAE,2DAA2D,CAAC;KAC7F,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACjD,MAAM,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;KACxD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,EAAE,MAAM,CAAC;KAC1E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,4BAA4B;AAC5B,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,kBAAW,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhD,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -7,6 +7,7 @@ export interface AddCommandOptions {
7
7
  withTrpc?: boolean;
8
8
  withGraphql?: boolean;
9
9
  skipInstall?: boolean;
10
+ activityName?: string;
10
11
  }
11
12
  /**
12
13
  * Handle the `idealyst add` command
@@ -2,7 +2,7 @@
2
2
  * Constants and default values for the CLI
3
3
  */
4
4
  export declare const VERSION = "0.1.0";
5
- export declare const IDEALYST_VERSION = "1.2.112";
5
+ export declare const IDEALYST_VERSION = "1.2.114";
6
6
  export declare const REACT_NATIVE_VERSION = "0.83.0";
7
7
  export declare const REACT_VERSION = "19.1.0";
8
8
  export declare const DEFAULT_TIMEOUT = 300000;
@@ -18,10 +18,10 @@ export declare const TEMPLATE_EXTENSIONS: readonly [".ts", ".tsx", ".js", ".jsx"
18
18
  export declare const IGNORE_PATTERNS: readonly ["node_modules", ".git", "dist", "build", ".cache", ".DS_Store", "Thumbs.db", "*.log", "*.tmp", "*.bak", "~*"];
19
19
  export declare const DEPENDENCIES: {
20
20
  readonly core: {
21
- readonly '@idealyst/components': "^1.2.112";
22
- readonly '@idealyst/theme': "^1.2.112";
23
- readonly '@idealyst/navigation': "^1.2.112";
24
- readonly '@idealyst/config': "^1.2.112";
21
+ readonly '@idealyst/components': "^1.2.114";
22
+ readonly '@idealyst/theme': "^1.2.114";
23
+ readonly '@idealyst/navigation': "^1.2.114";
24
+ readonly '@idealyst/config': "^1.2.114";
25
25
  };
26
26
  readonly web: {
27
27
  readonly '@mdi/js': "^7.4.47";
@@ -78,7 +78,7 @@ export declare const DEPENDENCIES: {
78
78
  readonly prisma: "^7.1.0";
79
79
  };
80
80
  readonly tooling: {
81
- readonly '@idealyst/tooling': "^1.2.112";
81
+ readonly '@idealyst/tooling': "^1.2.114";
82
82
  };
83
83
  readonly api: {
84
84
  readonly express: "^4.21.0";
@@ -6,3 +6,5 @@ export { applyPrismaExtension } from './prisma';
6
6
  export { applyTrpcExtension } from './trpc';
7
7
  export { applyGraphqlExtension } from './graphql';
8
8
  export { applyDevcontainerExtension } from './devcontainer';
9
+ export { applyLiveActivityExtension } from './live-activity';
10
+ export type { LiveActivityConfig } from './live-activity';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Live Activity extension generator
3
+ *
4
+ * Scaffolds iOS Widget Extension and Android configuration
5
+ * for @idealyst/live-activity integration.
6
+ */
7
+ import { TemplateData, PackageGeneratorResult } from '../../types';
8
+ export interface LiveActivityConfig {
9
+ /** Name of the custom activity (PascalCase). */
10
+ name: string;
11
+ /** Base template to extend (optional). */
12
+ templateBase?: 'delivery' | 'timer' | 'media' | 'progress';
13
+ /** Enable push update support. */
14
+ withPushUpdates?: boolean;
15
+ }
16
+ /**
17
+ * Apply Live Activity extension to a mobile project.
18
+ * Scaffolds the iOS Widget Extension and Android configuration.
19
+ */
20
+ export declare function applyLiveActivityExtension(workspaceRoot: string, data: TemplateData, config: LiveActivityConfig): Promise<PackageGeneratorResult>;
@@ -170,7 +170,7 @@ export interface ReactNativeInitOptions {
170
170
  /**
171
171
  * Types of projects that can be added to workspace
172
172
  */
173
- export type AddableProjectType = 'web' | 'mobile' | 'api' | 'shared';
173
+ export type AddableProjectType = 'web' | 'mobile' | 'api' | 'shared' | 'live-activity';
174
174
  /**
175
175
  * Options for add command
176
176
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idealyst/cli",
3
- "version": "1.2.112",
3
+ "version": "1.2.114",
4
4
  "description": "CLI tool for generating Idealyst Framework projects",
5
5
  "readme": "README.md",
6
6
  "main": "dist/index.js",