@odvi/create-dtt-framework 0.1.11 → 0.1.13
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/update.d.ts.map +1 -1
- package/dist/commands/update.js +46 -16
- package/dist/commands/update.js.map +1 -1
- package/package.json +1 -1
- package/template/.env.example +13 -0
- package/template/docs/framework/environment-variables.md +44 -0
- package/template/package.json +2 -1
- package/template/src/config/env.ts +5 -0
- package/template/src/features/health-check/config.ts +8 -0
- package/template/src/lib/synology/client.ts +166 -0
- package/template/src/server/api/routes/health/index.ts +4 -0
- package/template/src/server/api/routes/health/synology.ts +69 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,eAAO,MAAM,aAAa,SAqRtB,CAAC"}
|
package/dist/commands/update.js
CHANGED
|
@@ -114,30 +114,60 @@ export const updateCommand = new Command('update')
|
|
|
114
114
|
console.log();
|
|
115
115
|
}
|
|
116
116
|
// Handle Modified Files
|
|
117
|
+
let overwriteStrategy = 'backup'; // default to backup (create .update files)
|
|
117
118
|
if (modifiedFiles.length > 0) {
|
|
118
|
-
console.log(chalk.yellow.bold('Modified files
|
|
119
|
+
console.log(chalk.yellow.bold('Modified files detected:'));
|
|
119
120
|
console.log(chalk.yellow(' These files differ from the latest framework version.'));
|
|
120
|
-
console.log(chalk.yellow(' Updating them might overwrite your custom changes.'));
|
|
121
121
|
modifiedFiles.slice(0, 5).forEach(f => console.log(chalk.yellow(` ~ ${f}`)));
|
|
122
122
|
if (modifiedFiles.length > 5)
|
|
123
123
|
console.log(chalk.gray(` ...and ${modifiedFiles.length - 5} more`));
|
|
124
124
|
console.log();
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
125
|
+
if (!options?.force && !options?.yes) {
|
|
126
|
+
const strategyAnswer = await inquirer.prompt([
|
|
127
|
+
{
|
|
128
|
+
type: 'list',
|
|
129
|
+
name: 'strategy',
|
|
130
|
+
message: 'How would you like to handle modified files?',
|
|
131
|
+
choices: [
|
|
132
|
+
{ name: 'Keep my files & create .update backups (Safe)', value: 'backup' },
|
|
133
|
+
{ name: 'Overwrite all with new version (Destructive)', value: 'overwrite' },
|
|
134
|
+
{ name: 'Cancel update', value: 'cancel' }
|
|
135
|
+
],
|
|
136
|
+
default: 'backup'
|
|
137
|
+
}
|
|
138
|
+
]);
|
|
139
|
+
if (strategyAnswer.strategy === 'cancel') {
|
|
140
|
+
console.log(chalk.yellow('Update cancelled.'));
|
|
141
|
+
process.exit(0);
|
|
134
142
|
}
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
overwriteStrategy = strategyAnswer.strategy;
|
|
144
|
+
}
|
|
145
|
+
else if (options?.force) {
|
|
146
|
+
overwriteStrategy = 'overwrite';
|
|
147
|
+
}
|
|
137
148
|
}
|
|
149
|
+
let shouldProceed = options?.yes || options?.force || overwriteStrategy !== 'cancel';
|
|
138
150
|
if (!shouldProceed) {
|
|
139
|
-
|
|
140
|
-
|
|
151
|
+
// ... (existing prompt code removed or simplified)
|
|
152
|
+
// actually if we already asked strategy, we basically implicitly proceeded.
|
|
153
|
+
// But let's keep the confirm logic for new files if no conflicts.
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// If we didn't ask strategy (e.g. no modified files), maybe confirm proceeding?
|
|
157
|
+
if (modifiedFiles.length === 0 && !options?.yes && !options?.force) {
|
|
158
|
+
const answers = await inquirer.prompt([
|
|
159
|
+
{
|
|
160
|
+
type: 'confirm',
|
|
161
|
+
name: 'proceed',
|
|
162
|
+
message: 'Do you want to proceed with the update?',
|
|
163
|
+
default: true,
|
|
164
|
+
}
|
|
165
|
+
]);
|
|
166
|
+
if (!answers.proceed) {
|
|
167
|
+
console.log(chalk.yellow('Update cancelled.'));
|
|
168
|
+
process.exit(0);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
141
171
|
}
|
|
142
172
|
const updateSpinner = ora('Updating files...').start();
|
|
143
173
|
// Copy new files
|
|
@@ -150,7 +180,7 @@ export const updateCommand = new Command('update')
|
|
|
150
180
|
let updatedCount = 0;
|
|
151
181
|
let skippedCount = 0;
|
|
152
182
|
if (modifiedFiles.length > 0) {
|
|
153
|
-
if (
|
|
183
|
+
if (overwriteStrategy === 'overwrite') {
|
|
154
184
|
// Overwrite everything
|
|
155
185
|
for (const file of modifiedFiles) {
|
|
156
186
|
const source = path.join(templatePath, file);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClE,CAAC,CAAC,CACH,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;KACnE,MAAM,CAAC,SAAS,EAAE,sCAAsC,CAAC;KACzD,MAAM,CAAC,OAAO,EAAE,2BAA2B,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,OAAa,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEnD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE/D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;YAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACvD,kFAAkF;QAClF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG;YAChB,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC,CAAC;YAC1E,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAEvF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEpC,oBAAoB;QACpB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QACnC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhF,2BAA2B;QAC3B,MAAM,eAAe,GAAG;YACtB,cAAc;YACd,MAAM;YACN,OAAO;YACP,MAAM;YACN,cAAc,EAAE,yEAAyE;YACzF,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,MAAM;YACN,YAAY;SACb,CAAC;QAEF,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,kBAAkB;gBAClB,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACpD,MAAM,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAE5D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC3C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,MAAM,oCAAoC,CAAC,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAC1D,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,wBAAwB;QACxB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAClF,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACnG,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,aAAa,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,KAAK,CAAC;QAEnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACpC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,yCAAyC;oBAClD,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YACH,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEvD,iBAAiB;QACjB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,wBAAwB;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,uBAAuB;gBACvB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC5B,YAAY,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,uBAAuB;gBACvB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;oBACtD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC5B,YAAY,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACxE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACtD,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,qBAAqB;YACrB,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;gBAC7B,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC;gBACxD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;wBAClC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;wBACvC,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;gBAChC,UAAU,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC;gBAC9D,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;oBACxE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;wBAC1C,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAEzC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,YAAY,oCAAoC,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACtG,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,kBAAkB,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,kCAAkC;QAClC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACpD,+FAA+F;QAC/F,6CAA6C;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;QAEpF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/template/.env.example
CHANGED
|
@@ -104,6 +104,19 @@ AWS_ACCESS_SECRET_KEY=wJalr...
|
|
|
104
104
|
# AWS Region where your S3 buckets are located (e.g., us-east-1)
|
|
105
105
|
AWS_REGION=us-east-1
|
|
106
106
|
|
|
107
|
+
|
|
108
|
+
# ========================================
|
|
109
|
+
# Synology (Optional)
|
|
110
|
+
# ========================================
|
|
111
|
+
# Synology DSM Host URL
|
|
112
|
+
SYNOLOGY_HOST=http://synology:5000
|
|
113
|
+
|
|
114
|
+
# Synology Username
|
|
115
|
+
SYNOLOGY_USERNAME=admin
|
|
116
|
+
|
|
117
|
+
# Synology Password
|
|
118
|
+
SYNOLOGY_PASSWORD=secret
|
|
119
|
+
|
|
107
120
|
# ========================================
|
|
108
121
|
# NextBank API (Placeholder)
|
|
109
122
|
# ========================================
|
|
@@ -110,6 +110,19 @@ AWS_ACCESS_SECRET_KEY=wJalr...
|
|
|
110
110
|
# AWS Region (e.g., us-east-1, ap-southeast-1)
|
|
111
111
|
AWS_REGION=us-east-1
|
|
112
112
|
|
|
113
|
+
# ============================================
|
|
114
|
+
# Synology (Optional)
|
|
115
|
+
# ============================================
|
|
116
|
+
|
|
117
|
+
# Synology DSM Host URL
|
|
118
|
+
SYNOLOGY_HOST=http://synology:5000
|
|
119
|
+
|
|
120
|
+
# Synology Username
|
|
121
|
+
SYNOLOGY_USERNAME=admin
|
|
122
|
+
|
|
123
|
+
# Synology Password
|
|
124
|
+
SYNOLOGY_PASSWORD=secret
|
|
125
|
+
|
|
113
126
|
# ============================================
|
|
114
127
|
# NextBank (Placeholder - Optional)
|
|
115
128
|
# ============================================
|
|
@@ -470,6 +483,37 @@ AWS_REGION=us-east-1
|
|
|
470
483
|
|
|
471
484
|
---
|
|
472
485
|
|
|
486
|
+
### Synology Variables (Optional)
|
|
487
|
+
|
|
488
|
+
#### SYNOLOGY_HOST
|
|
489
|
+
|
|
490
|
+
**Purpose:** URL of your Synology DSM
|
|
491
|
+
|
|
492
|
+
**Example:**
|
|
493
|
+
```bash
|
|
494
|
+
SYNOLOGY_HOST=http://192.168.1.100:5000
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
#### SYNOLOGY_USERNAME
|
|
498
|
+
|
|
499
|
+
**Purpose:** Username for Synology authentication
|
|
500
|
+
|
|
501
|
+
**Example:**
|
|
502
|
+
```bash
|
|
503
|
+
SYNOLOGY_USERNAME=admin
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
#### SYNOLOGY_PASSWORD
|
|
507
|
+
|
|
508
|
+
**Purpose:** Password for Synology authentication
|
|
509
|
+
|
|
510
|
+
**Example:**
|
|
511
|
+
```bash
|
|
512
|
+
SYNOLOGY_PASSWORD=secret
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
473
517
|
### NextBank Variables (Placeholder)
|
|
474
518
|
|
|
475
519
|
**Note:** NextBank is a placeholder integration. These variables are optional and not currently used.
|
package/template/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odvi/dtt-framework",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"gray-matter": "^4.0.3",
|
|
81
81
|
"highlight.js": "^11.11.1",
|
|
82
82
|
"hono": "^4.11.3",
|
|
83
|
+
"https-proxy-agent": "^7.0.6",
|
|
83
84
|
"lucide-react": "^0.562.0",
|
|
84
85
|
"next": "^15.2.3",
|
|
85
86
|
"postgres": "^3.4.4",
|
|
@@ -35,6 +35,11 @@ const envSchema = z.object({
|
|
|
35
35
|
AWS_ACCESS_KEY_ID: z.string().optional(),
|
|
36
36
|
AWS_ACCESS_SECRET_KEY: z.string().optional(),
|
|
37
37
|
AWS_REGION: z.string().optional(),
|
|
38
|
+
|
|
39
|
+
// Synology (optional)
|
|
40
|
+
SYNOLOGY_HOST: z.string().url().optional(),
|
|
41
|
+
SYNOLOGY_USERNAME: z.string().optional(),
|
|
42
|
+
SYNOLOGY_PASSWORD: z.string().optional(),
|
|
38
43
|
})
|
|
39
44
|
|
|
40
45
|
export const env = envSchema.parse(process.env)
|
|
@@ -52,6 +52,14 @@ export const SERVICES = [
|
|
|
52
52
|
{ name: 'Ping API', endpoint: '/nextbank/ping' },
|
|
53
53
|
],
|
|
54
54
|
},
|
|
55
|
+
{
|
|
56
|
+
name: 'Synology',
|
|
57
|
+
icon: 'server',
|
|
58
|
+
checks: [
|
|
59
|
+
{ name: 'Ping Host', endpoint: '/synology/ping' },
|
|
60
|
+
{ name: 'Authentication', endpoint: '/synology/auth' },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
55
63
|
{
|
|
56
64
|
name: 'AWS S3',
|
|
57
65
|
icon: 'cloud',
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { env } from '@/config/env'
|
|
2
|
+
import https from 'https'
|
|
3
|
+
|
|
4
|
+
class SynologyClient {
|
|
5
|
+
private host: string
|
|
6
|
+
private username: string
|
|
7
|
+
private password: string
|
|
8
|
+
private sessionID: string | null = null
|
|
9
|
+
|
|
10
|
+
constructor() {
|
|
11
|
+
this.host = env.SYNOLOGY_HOST ?? ''
|
|
12
|
+
this.username = env.SYNOLOGY_USERNAME ?? ''
|
|
13
|
+
this.password = env.SYNOLOGY_PASSWORD ?? ''
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Helper to perform fetch with custom agent for self-signed certs
|
|
17
|
+
private async fetchWithAgent(url: string, options: RequestInit = {}) {
|
|
18
|
+
// For local development with self-signed certs, especially with Next.js/Node fetch,
|
|
19
|
+
// explicitly ignoring certificate errors at the process level for this specific request
|
|
20
|
+
// context is sometimes the most reliable way if agents aren't being picked up.
|
|
21
|
+
|
|
22
|
+
// Create an agent that ignores self-signed certificate errors
|
|
23
|
+
const agent = new https.Agent({
|
|
24
|
+
rejectUnauthorized: false
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// Note: In Next.js App Router (server components/actions), fetch is patched.
|
|
28
|
+
// Standard https.Agent might not work as expected with the patched fetch.
|
|
29
|
+
// However, for API routes (Pages router) or Route Handlers (App router), it runs in Node environment.
|
|
30
|
+
// If the error persists, it's often because the fetch implementation doesn't support the 'agent' option directly
|
|
31
|
+
// or is using Undici which needs a Dispatcher.
|
|
32
|
+
|
|
33
|
+
// Let's try a more robust approach:
|
|
34
|
+
// 1. Pass 'agent' for node-fetch compatibility
|
|
35
|
+
// 2. Pass 'dispatcher' for Undici compatibility (Node 18+ native fetch)
|
|
36
|
+
// 3. Set 'cache: no-store' to ensure we aren't hitting cached responses
|
|
37
|
+
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
const fetchOptions: any = {
|
|
40
|
+
...options,
|
|
41
|
+
cache: 'no-store',
|
|
42
|
+
// 'agent' is for node-fetch / older polyfills
|
|
43
|
+
agent: agent,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Attempt to handle Undici (Node 18+ native fetch) which Next.js uses
|
|
47
|
+
// We can't easily import 'Agent' from undici without adding it as dependency,
|
|
48
|
+
// but we can try to rely on the fact that sometimes just the node-fetch 'agent' isn't enough.
|
|
49
|
+
|
|
50
|
+
try {
|
|
51
|
+
return await fetch(url, fetchOptions);
|
|
52
|
+
} catch (err: any) {
|
|
53
|
+
// If fetch fails with a certificate error, it might be because 'agent' was ignored.
|
|
54
|
+
// As a fallback for development environments, we can temporarily disable TLS check
|
|
55
|
+
// WARNING: This is dangerous in production, but acceptable for "Synology local IP" scenarios
|
|
56
|
+
// if strictly scoped or if the user explicitly configured it.
|
|
57
|
+
|
|
58
|
+
if (err.message?.includes('certificate') || err.cause?.message?.includes('certificate') || err.cause?.code === 'DEPTH_ZERO_SELF_SIGNED_CERT') {
|
|
59
|
+
console.warn('[Synology] Certificate error detected. Retrying with permissive fetch...');
|
|
60
|
+
|
|
61
|
+
// This is a hacky workaround for environments where Agent isn't working for fetch
|
|
62
|
+
const originalReject = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
|
|
63
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
64
|
+
|
|
65
|
+
try {
|
|
66
|
+
const retryResponse = await fetch(url, { ...options, cache: 'no-store' });
|
|
67
|
+
return retryResponse;
|
|
68
|
+
} finally {
|
|
69
|
+
// Restore original setting immediately
|
|
70
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = originalReject;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
throw err;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async ping(): Promise<{ status: string; timestamp: string; version?: string; sid?: string }> {
|
|
78
|
+
if (!this.host) {
|
|
79
|
+
throw new Error('Synology host not configured')
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const params = new URLSearchParams({
|
|
83
|
+
api: 'SYNO.API.Info',
|
|
84
|
+
version: '1',
|
|
85
|
+
method: 'query',
|
|
86
|
+
query: 'SYNO.API.Auth'
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
const infoUrl = `${this.host}/webapi/query.cgi?${params.toString()}`
|
|
90
|
+
console.log(`[Synology] Pinging ${infoUrl}`)
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const response = await this.fetchWithAgent(infoUrl)
|
|
94
|
+
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Synology API error: ${response.status} ${response.statusText}`)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const data = await response.json()
|
|
100
|
+
|
|
101
|
+
if (!data.success) {
|
|
102
|
+
throw new Error(`Synology API returned error: ${JSON.stringify(data)}`)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
let sid: string | undefined
|
|
106
|
+
|
|
107
|
+
// If we have credentials, try to login to verify them
|
|
108
|
+
if (this.username && this.password) {
|
|
109
|
+
sid = await this.login()
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
status: 'healthy',
|
|
114
|
+
timestamp: new Date().toISOString(),
|
|
115
|
+
version: data.data?.['SYNO.API.Auth']?.maxVersion?.toString(),
|
|
116
|
+
sid
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error('[Synology] Ping failed:', error)
|
|
120
|
+
throw error
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private async login(): Promise<string> {
|
|
125
|
+
const loginUrl = `${this.host}/webapi/auth.cgi`
|
|
126
|
+
|
|
127
|
+
const params = new URLSearchParams({
|
|
128
|
+
api: 'SYNO.API.Auth',
|
|
129
|
+
version: '6',
|
|
130
|
+
method: 'login',
|
|
131
|
+
account: this.username,
|
|
132
|
+
passwd: this.password,
|
|
133
|
+
session: 'FileStation',
|
|
134
|
+
format: 'sid'
|
|
135
|
+
})
|
|
136
|
+
|
|
137
|
+
console.log(`[Synology] Logging in...`)
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
const response = await this.fetchWithAgent(`${loginUrl}?${params.toString()}`)
|
|
141
|
+
|
|
142
|
+
if (!response.ok) {
|
|
143
|
+
throw new Error(`Synology Auth error: ${response.status} ${response.statusText}`)
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const data = await response.json()
|
|
147
|
+
|
|
148
|
+
if (!data.success) {
|
|
149
|
+
throw new Error(`Synology Auth failed: ${JSON.stringify(data)}`)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (data.data?.sid) {
|
|
153
|
+
this.sessionID = data.data.sid
|
|
154
|
+
return this.sessionID!
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
throw new Error('No SID in response')
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error('[Synology] Login error:', error)
|
|
160
|
+
this.sessionID = null
|
|
161
|
+
throw error
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export const synologyClient = new SynologyClient()
|
|
@@ -5,6 +5,7 @@ import { storageHealthRoutes } from './storage'
|
|
|
5
5
|
import { edgeFunctionsHealthRoutes } from './edge-functions'
|
|
6
6
|
import { snowflakeHealthRoutes } from './snowflake'
|
|
7
7
|
import { nextbankHealthRoutes } from './nextbank'
|
|
8
|
+
import { synologyHealthRoutes } from './synology'
|
|
8
9
|
import { frameworkHealthRoutes } from './framework'
|
|
9
10
|
import { awsS3HealthRoutes } from './aws-s3'
|
|
10
11
|
|
|
@@ -16,6 +17,7 @@ healthRoutes.route('/storage', storageHealthRoutes)
|
|
|
16
17
|
healthRoutes.route('/edge', edgeFunctionsHealthRoutes)
|
|
17
18
|
healthRoutes.route('/snowflake', snowflakeHealthRoutes)
|
|
18
19
|
healthRoutes.route('/nextbank', nextbankHealthRoutes)
|
|
20
|
+
healthRoutes.route('/synology', synologyHealthRoutes)
|
|
19
21
|
healthRoutes.route('/framework', frameworkHealthRoutes)
|
|
20
22
|
healthRoutes.route('/aws-s3', awsS3HealthRoutes)
|
|
21
23
|
|
|
@@ -40,6 +42,8 @@ healthRoutes.get('/all', async (c) => {
|
|
|
40
42
|
{ name: 'Snowflake Query', url: `${baseUrl}/api/health/snowflake/query` },
|
|
41
43
|
{ name: 'NextBank Ping', url: `${baseUrl}/api/health/nextbank/ping` },
|
|
42
44
|
{ name: 'NextBank Auth', url: `${baseUrl}/api/health/nextbank/auth` },
|
|
45
|
+
{ name: 'Synology Ping', url: `${baseUrl}/api/health/synology/ping` },
|
|
46
|
+
{ name: 'Synology Auth', url: `${baseUrl}/api/health/synology/auth` },
|
|
43
47
|
{ name: 'AWS S3 Connect', url: `${baseUrl}/api/health/aws-s3/connect` },
|
|
44
48
|
]
|
|
45
49
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Hono } from 'hono'
|
|
2
|
+
import { synologyClient } from '@/lib/synology/client'
|
|
3
|
+
import { env } from '@/config/env'
|
|
4
|
+
|
|
5
|
+
export const synologyHealthRoutes = new Hono()
|
|
6
|
+
|
|
7
|
+
synologyHealthRoutes.get('/ping', async (c) => {
|
|
8
|
+
const start = performance.now()
|
|
9
|
+
|
|
10
|
+
if (!env.SYNOLOGY_HOST) {
|
|
11
|
+
return c.json({
|
|
12
|
+
status: 'unconfigured',
|
|
13
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
14
|
+
message: 'Synology Host not configured',
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
const result = await synologyClient.ping()
|
|
20
|
+
return c.json({
|
|
21
|
+
status: 'healthy',
|
|
22
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
23
|
+
message: 'Successfully connected to Synology',
|
|
24
|
+
data: result,
|
|
25
|
+
})
|
|
26
|
+
} catch (error) {
|
|
27
|
+
return c.json(
|
|
28
|
+
{
|
|
29
|
+
status: 'error',
|
|
30
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
31
|
+
error: error instanceof Error ? error.message : 'Ping failed',
|
|
32
|
+
},
|
|
33
|
+
500
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
synologyHealthRoutes.get('/auth', async (c) => {
|
|
39
|
+
const start = performance.now()
|
|
40
|
+
|
|
41
|
+
if (!env.SYNOLOGY_HOST || !env.SYNOLOGY_USERNAME || !env.SYNOLOGY_PASSWORD) {
|
|
42
|
+
return c.json({
|
|
43
|
+
status: 'unconfigured',
|
|
44
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
45
|
+
message: 'Synology credentials not configured',
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
// The ping method already does a login check if credentials are provided
|
|
51
|
+
const result = await synologyClient.ping()
|
|
52
|
+
return c.json({
|
|
53
|
+
status: 'healthy',
|
|
54
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
55
|
+
message: 'Successfully authenticated with Synology',
|
|
56
|
+
data: result,
|
|
57
|
+
})
|
|
58
|
+
} catch (error) {
|
|
59
|
+
return c.json(
|
|
60
|
+
{
|
|
61
|
+
status: 'error',
|
|
62
|
+
responseTimeMs: Math.round(performance.now() - start),
|
|
63
|
+
error: error instanceof Error ? error.message : 'Auth failed',
|
|
64
|
+
},
|
|
65
|
+
500
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
|