Skip to content

Commit a3c6c0b

Browse files
authored
Revert "revert: revert devex changes (#1728)" (#1729)
This reverts commit fc725d0.
1 parent fc725d0 commit a3c6c0b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+5487
-1686
lines changed

extensions/example-kv.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ extension.on('init', async () => {
2525
// and just a little bit longer
2626
// await sleep(100);
2727

28-
console.log('kv key should no longer have the value', kv.get('example-kv-key'));
28+
console.log('kv key should no longer have the value', await kv.get('example-kv-key'));
2929
})();
3030
});

package-lock.json

Lines changed: 5071 additions & 1538 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
},
5858
"dependencies": {
5959
"@aws-sdk/client-secrets-manager": "^3.879.0",
60+
"@aws-sdk/client-sns": "^3.907.0",
6061
"@google/genai": "^1.19.0",
6162
"@heyputer/putility": "^1.0.2",
6263
"@paralleldrive/cuid2": "^2.2.2",
@@ -74,11 +75,11 @@
7475
"uuid": "^9.0.1"
7576
},
7677
"optionalDependencies": {
77-
"sharp": "^0.34.3",
78+
"sharp": "^0.34.4",
7879
"sharp-bmp": "^0.1.5",
7980
"sharp-ico": "^0.1.5"
8081
},
8182
"engines": {
8283
"node": ">=20.19.5"
8384
}
84-
}
85+
}

src/backend/exports.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ module.exports = {
6363
HostOSModule,
6464
CoreModule,
6565
WebModule,
66-
TemplateModule,
66+
// TemplateModule,
6767
AppsModule,
6868
CaptchaModule,
6969
EntityStoreModule,

src/backend/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"@pagerduty/pdjs": "^2.2.4",
2525
"@smithy/node-http-handler": "^2.2.2",
2626
"args": "^5.0.3",
27-
"aws-sdk": "^2.1383.0",
2827
"axios": "^1.8.2",
2928
"bcrypt": "^5.1.0",
3029
"better-sqlite3": "^11.9.0",

src/backend/src/Extension.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,30 @@ class Extension extends AdvancedBase {
3636
]
3737
}),
3838
];
39+
40+
randomBrightColor() {
41+
// Bright colors in ANSI (foreground codes 90–97)
42+
const brightColors = [
43+
// 91, // Bright Red
44+
92, // Bright Green
45+
// 93, // Bright Yellow
46+
94, // Bright Blue
47+
95, // Bright Magenta
48+
// 96, // Bright Cyan
49+
];
50+
51+
return brightColors[Math.floor(Math.random() * brightColors.length)];
52+
}
3953

4054
constructor (...a) {
4155
super(...a);
4256
this.service = null;
4357
this.log = null;
4458
this.ensure_service_();
4559

60+
// this.terminal_color = this.randomBrightColor();
61+
this.terminal_color = 94;
62+
4663
this.log = (...a) => {
4764
this.log_context.info(a.join(' '));
4865
};
@@ -260,6 +277,14 @@ class Extension extends AdvancedBase {
260277
}
261278
this.only_one_init_fn = callback;
262279
}
280+
281+
get console () {
282+
const extensionConsole = Object.create(console);
283+
extensionConsole.log = (...a) => {
284+
console.log(`\x1B[${this.terminal_color};1m(extension/${this.name})\x1B[0m`, ...a);
285+
};
286+
return extensionConsole;
287+
}
263288

264289
/**
265290
* This method will create the "default service" for an extension.

src/backend/src/Kernel.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ class Kernel extends AdvancedBase {
218218
await services.ready;
219219
globalThis.services = services;
220220
const log = services.get('log-service').create('init');
221-
log.info('services ready');
222-
223221
log.system('server ready', {
224222
deployment_type: globalThis.deployment_type,
225223
});
@@ -411,6 +409,7 @@ class Kernel extends AdvancedBase {
411409
`const { use: puter } = globalThis.__puter_extension_globals__.useapi;`,
412410
`const extension = globalThis.__puter_extension_globals__` +
413411
`.extensionObjectRegistry[${JSON.stringify(extension_id)}];`,
412+
`const console = extension.console;`,
414413
`const runtime = extension.runtime;`,
415414
`const config = extension.config;`,
416415
`const registry = extension.registry;`,
@@ -465,6 +464,8 @@ class Kernel extends AdvancedBase {
465464
},
466465
});
467466

467+
mod.extension.name = packageJSON.name;
468+
468469
const maybe_promise = (typ => typ.trim().toLowerCase())(packageJSON.type ?? '') === 'module'
469470
? await import(path_.join(require_dir, packageJSON.main ?? 'index.js'))
470471
: require(require_dir);
@@ -577,18 +578,34 @@ class Kernel extends AdvancedBase {
577578

578579
async run_npm_install (path) {
579580
const npmCmd = process.platform === "win32" ? "npm.cmd" : "npm";
580-
const proc = spawn(npmCmd, ["install"], { cwd: path, shell: true, stdio: "inherit" });
581+
const proc = spawn(npmCmd, ["install"], { cwd: path, stdio: "pipe" });
582+
583+
let buffer = '';
584+
585+
proc.stdout.on('data', (data) => {
586+
buffer += data.toString();
587+
});
588+
589+
proc.stderr.on('data', (data) => {
590+
buffer += data.toString();
591+
});
592+
581593
return new Promise((rslv, rjct) => {
582594
proc.on('close', code => {
583595
if ( code !== 0 ) {
584-
throw new Error(`exit code: ${code}`);
596+
// Print buffered output on error
597+
if ( buffer ) process.stdout.write(buffer);
598+
rjct(new Error(`exit code: ${code}`));
599+
return;
585600
}
586601
rslv();
587602
});
588603
proc.on('error', err => {
604+
// Print buffered output on error
605+
if ( buffer ) process.stdout.write(buffer);
589606
rjct(err);
590-
})
591-
})
607+
});
608+
});
592609
}
593610
}
594611

src/backend/src/boot/BootLogger.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@
1717
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1818
*/
1919
class BootLogger {
20-
constructor () {
21-
console.log(
22-
`\x1B[36;1mBoot logger started :)\x1B[0m`,
23-
);
24-
}
2520
info (...args) {
2621
console.log(
2722
'\x1B[36;1m[BOOT/INFO]\x1B[0m',

src/backend/src/boot/RuntimeEnvironment.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ class RuntimeEnvironment extends AdvancedBase {
381381
if ( ! checks_pass ) continue;
382382

383383
this.logger.info(
384-
`${hl('USING')} ${quot(entry.path)} for ${meta.pathFor}.`
384+
`${hl(meta.pathFor)} ${quot(entry.path)}`
385385
)
386386

387387
return entry;

src/backend/src/config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ const config_pointer = {};
246246
config_to_export = new Proxy(config_to_export, {
247247
set: (target, prop, value, receiver) => {
248248
const logger = Context.get('logger', { allow_fallback: true });
249-
logger.debug(
249+
// If no logger, just give up
250+
if ( logger ) logger.debug(
250251
'\x1B[36;1mCONFIGURATION MUTATED AT RUNTIME\x1B[0m',
251252
{ prop, value },
252253
);

0 commit comments

Comments
 (0)