
class B extends Sqoin {
constructor() {
local logger = get("Logger");
logger.log("B");
}
}
module.factory("Logger", function(sqoin, args) {
return Logger(args.id);
}, {
id = 1
});
local logger1 = Sqoin.get("Logger");
local logger2 = Sqoin.get("Logger", {
id = 2
});
class Logger {
function log(message) {
print("Log: " + message);
}
}
class UserRepository {
logger = null;
constructor(logger) {
this.logger = logger;
}
function getUser(id) {
this.logger.log("Getting user with id: " + id);
return {
id = id,
name = "User " + id
};
}
}
class UserService {
repo = null;
logger = null;
constructor(repo, logger) {
this.repo = repo;
this.logger = logger;
}
function getUserInfo(id) {
this.logger.log("Fetching user info");
return this.repo.getUser(id);
}
}
local userModule = Module(function(module) {
module.single("Logger", function(sqoin) {
return Logger();
});
module.single("UserRepository", function(sqoin) {
return UserRepository(sqoin.get("Logger"));
});
module.factory("UserService", function(sqoin) {
return UserService(sqoin.get("UserRepository"), sqoin.get("Logger"));
});
});
local modules = [userModule];
Sqoin.loadModules(modules);
local userService1 = Sqoin.get("UserService");
local userService2 = Sqoin.get("UserService");
userService1.getUserInfo(123);
userService2.getUserInfo(456);
Quote from: vitovc on Oct 26, 2025, 06:36 PMflooding PlaySound(id) some blank sound would help to stop current sound (in theory, not tested)