@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.
- package/dist/commands/add.js +50 -5
- package/dist/commands/add.js.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/generators/extensions/index.js +3 -1
- package/dist/generators/extensions/index.js.map +1 -1
- package/dist/generators/extensions/live-activity.js +298 -0
- package/dist/generators/extensions/live-activity.js.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types/commands/add.d.ts +1 -0
- package/dist/types/constants.d.ts +6 -6
- package/dist/types/generators/extensions/index.d.ts +2 -0
- package/dist/types/generators/extensions/live-activity.d.ts +20 -0
- package/dist/types/types.d.ts +1 -1
- package/package.json +1 -1
package/dist/commands/add.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BH,gCAuJC;AA/KD,gDAAwB;AACxB,wDAA0B;AAC1B,kDAA0B;AAC1B,oCAAsF;AACtF,4CAAyC;AACzC,6CAAsG;AACtG,sDAAiE;AACjE,0EAAoF;AACpF,gDAAsD;AACtD,sDAA2D;AAC3D,4CAAgD;AAWhD;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,OAA0B;IAE1B,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,UAAU,GAAyB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC7F,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAA0B,CAAC,EAAE,CAAC;YAC7D,eAAM,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,eAAM,CAAC,GAAG,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sBAAsB;QACtB,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,2BAAmB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,4CAA4C;QAC5C,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEnE,eAAM,CAAC,MAAM,CAAC,UAAU,OAAO,CAAC,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC;QAEzD,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAA,6BAAiB,EAAC;YACrC,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvE,WAAW,EAAE,EAAE,EAAE,yBAAyB;YAC1C,kBAAkB,EAAE,EAAE,EAAE,yBAAyB;YACjD,UAAU,EAAE;gBACV,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,KAAK;gBACb,gBAAgB,EAAE,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBAC/B,OAAO,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;gBACrC,YAAY,EAAE,KAAK;aACpB;SACF,EAAE,4BAAgB,CAAC,CAAC;QAErB,2BAA2B;QAC3B,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7C,YAAY,CAAC,WAAW,GAAG,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAExD,qCAAqC;QACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAA0B,CAAC;QAChD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAE/D,gFAAgF;QAChF,IAAI,IAAI,KAAK,eAAe,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjE,eAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK;gBACR,MAAM,IAAA,yBAAkB,EAAC,aAAa,EAAE;oBACtC,GAAG,YAAY;oBACf,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrB,eAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;oBACnD,eAAM,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;oBAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,iCAAiC;gBACjC,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,gBAAgB,GAAC,CAAC;gBAC/D,MAAM,WAAW,GAAG,mBAAmB,CACrC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,EACtC,IAAI,CACL,CAAC;gBACF,MAAM,IAAA,4BAAqB,EAAC,aAAa,EAAE;oBACzC,GAAG,YAAY;oBACf,WAAW,EAAE,IAAI;oBACjB,cAAc,EAAE,OAAO,CAAC,OAAO;oBAC/B,QAAQ,EAAE,WAAW,CAAC,WAAW;oBACjC,WAAW,EAAE,WAAW,CAAC,kBAAkB;oBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,KAAK;gBACR,MAAM,IAAA,uBAAiB,EAAC,aAAa,EAAE;oBACrC,GAAG,YAAY;oBACf,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,QAAQ;gBACX,MAAM,IAAA,4BAAqB,EAAC,aAAa,EAAE;oBACzC,GAAG,YAAY;oBACf,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;gBAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,eAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;oBACpE,eAAM,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;oBACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAA,0CAA0B,EAAC,aAAa,EAAE,YAAY,EAAE;oBAC3E,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,kCAAkC,CAAC,CAAC;oBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,mEAAmE;QACnE,IAAI,IAAI,KAAK,eAAe,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACpF,MAAM,IAAA,wBAAe,EACnB,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,EACxC,YAAY,IAAI,EAAE,CACnB,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7B,wBAAwB,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE,aAAa,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2BAAmB,EAAE,CAAC;YACzC,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,eAAM,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,UAAU,GAAG,QAAQ,CAAC;IAE1B,OAAO,UAAU,KAAK,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAE9D,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACvD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC3B,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAED,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,WAAmB;IAChD,4BAA4B;IAC5B,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACxC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,2CAA2C;IAC3C,OAAO,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,IAAY,EACZ,IAAwB,EACxB,aAAqB;IAErB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAEtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,OAAO,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC,CAAC,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,QAAQ,CAAC,CAAC,CAAC;YAC9D,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC,CAAC,CAAC;YAC5D,MAAM;IACV,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,8DAA8D;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,YAAoB,EACpB,aAAqB;IAErB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAEtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,YAAY,kBAAkB,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,YAAY,oBAAoB,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,YAAY,cAAc,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAExH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
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.
|
|
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,
|
|
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"}
|
|
@@ -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.
|
|
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.
|
|
22
|
-
readonly '@idealyst/theme': "^1.2.
|
|
23
|
-
readonly '@idealyst/navigation': "^1.2.
|
|
24
|
-
readonly '@idealyst/config': "^1.2.
|
|
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.
|
|
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>;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -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
|
*/
|