@zthun/romulator-api 1.1.0 → 1.2.0
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/bin/main.mjs +1 -1
- package/dist/main.cjs +28 -8
- package/dist/main.cjs.map +1 -1
- package/dist/main.js +29 -9
- package/dist/main.js.map +1 -1
- package/dist/systems/systems-service.d.mts +4 -1
- package/package.json +5 -5
package/bin/main.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "../dist/main.
|
|
2
|
+
import "../dist/main.js";
|
package/dist/main.cjs
CHANGED
|
@@ -1222,33 +1222,48 @@ function _ts_param$1(paramIndex, decorator) {
|
|
|
1222
1222
|
}
|
|
1223
1223
|
var ZRomulatorSystemsToken = Symbol("romulator-platforms-service");
|
|
1224
1224
|
var ZRomulatorSystemsService = /*#__PURE__*/ function() {
|
|
1225
|
-
function ZRomulatorSystemsService(_file, _configs) {
|
|
1225
|
+
function ZRomulatorSystemsService(_file, _configs, logger) {
|
|
1226
1226
|
_class_call_check$3(this, ZRomulatorSystemsService);
|
|
1227
1227
|
_define_property$1(this, "_file", void 0);
|
|
1228
1228
|
_define_property$1(this, "_configs", void 0);
|
|
1229
|
+
_define_property$1(this, "logger", void 0);
|
|
1230
|
+
_define_property$1(this, "_logger", void 0);
|
|
1229
1231
|
this._file = _file;
|
|
1230
1232
|
this._configs = _configs;
|
|
1233
|
+
this.logger = logger;
|
|
1234
|
+
this._logger = new lumberjackyLog.ZLoggerContext("ZRomulatorSystemsService", logger);
|
|
1231
1235
|
}
|
|
1232
1236
|
_create_class$1(ZRomulatorSystemsService, [
|
|
1233
1237
|
{
|
|
1234
1238
|
key: "list",
|
|
1235
1239
|
value: function list(req) {
|
|
1236
1240
|
return _async_to_generator$1(function() {
|
|
1237
|
-
var
|
|
1241
|
+
var page, size, msg, contents, gamesFolder, fallback, _folder, cwd, searchOptions, folders, systems, sourceOptions, source, data, count;
|
|
1238
1242
|
return _ts_generator$1(this, function(_state) {
|
|
1239
1243
|
switch(_state.label){
|
|
1240
1244
|
case 0:
|
|
1245
|
+
page = helpfulFn.firstDefined(1, req.page);
|
|
1246
|
+
size = helpfulFn.firstDefined(Infinity, req.size);
|
|
1247
|
+
msg = "Retrieving systems page, ".concat(page, ", with size, ").concat(size, ".");
|
|
1248
|
+
this._logger.log(new lumberjackyLog.ZLogEntryBuilder().info().message(msg).build());
|
|
1241
1249
|
return [
|
|
1242
1250
|
4,
|
|
1243
1251
|
this._configs.get(romulatorClient.ZRomulatorConfigId.Games)
|
|
1244
1252
|
];
|
|
1245
1253
|
case 1:
|
|
1246
|
-
|
|
1254
|
+
contents = _state.sent().contents;
|
|
1255
|
+
gamesFolder = contents.gamesFolder;
|
|
1256
|
+
fallback = romulatorClient.ZRomulatorConfigGamesMetadata.gamesFolder().fallback;
|
|
1257
|
+
_folder = helpfulFn.firstDefined(fallback, gamesFolder);
|
|
1258
|
+
cwd = helpfulFn.detokenize(_folder, process.env);
|
|
1259
|
+
msg = "Looking for systems in ".concat(cwd);
|
|
1260
|
+
this._logger.log(new lumberjackyLog.ZLogEntryBuilder().info().message(msg).build());
|
|
1261
|
+
searchOptions = {
|
|
1262
|
+
cwd: cwd
|
|
1263
|
+
};
|
|
1247
1264
|
return [
|
|
1248
1265
|
4,
|
|
1249
|
-
this._file.search("*/",
|
|
1250
|
-
cwd: gamesFolder
|
|
1251
|
-
})
|
|
1266
|
+
this._file.search("*/", searchOptions)
|
|
1252
1267
|
];
|
|
1253
1268
|
case 2:
|
|
1254
1269
|
folders = _state.sent();
|
|
@@ -1263,6 +1278,8 @@ var ZRomulatorSystemsService = /*#__PURE__*/ function() {
|
|
|
1263
1278
|
}).map(function(system) {
|
|
1264
1279
|
return system.build();
|
|
1265
1280
|
});
|
|
1281
|
+
msg = "Found ".concat(systems.length, " systems");
|
|
1282
|
+
this._logger.log(new lumberjackyLog.ZLogEntryBuilder().info().message(msg).build());
|
|
1266
1283
|
sourceOptions = new helpfulQuery.ZDataSourceStaticOptionsBuilder().search(new helpfulQuery.ZDataSearchFields([
|
|
1267
1284
|
"id",
|
|
1268
1285
|
"name",
|
|
@@ -1326,10 +1343,12 @@ ZRomulatorSystemsService = _ts_decorate$3([
|
|
|
1326
1343
|
common.Injectable(),
|
|
1327
1344
|
_ts_param$1(0, common.Inject(crumbtrailNest.ZFileSystemToken)),
|
|
1328
1345
|
_ts_param$1(1, common.Inject(ZRomulatorConfigsToken)),
|
|
1346
|
+
_ts_param$1(2, common.Inject(lumberjackyNest.ZLoggerToken)),
|
|
1329
1347
|
_ts_metadata$1("design:type", Function),
|
|
1330
1348
|
_ts_metadata$1("design:paramtypes", [
|
|
1331
1349
|
typeof IZFileSystemService === "undefined" ? Object : IZFileSystemService,
|
|
1332
|
-
typeof IZRomulatorConfigsService === "undefined" ? Object : IZRomulatorConfigsService
|
|
1350
|
+
typeof IZRomulatorConfigsService === "undefined" ? Object : IZRomulatorConfigsService,
|
|
1351
|
+
typeof IZLogger === "undefined" ? Object : IZLogger
|
|
1333
1352
|
])
|
|
1334
1353
|
], ZRomulatorSystemsService);
|
|
1335
1354
|
|
|
@@ -1450,7 +1469,8 @@ ZRomulatorSystemsModule = _ts_decorate$1([
|
|
|
1450
1469
|
common.Module({
|
|
1451
1470
|
imports: [
|
|
1452
1471
|
ZRomulatorConfigsModule,
|
|
1453
|
-
crumbtrailNest.ZFileSystemModule
|
|
1472
|
+
crumbtrailNest.ZFileSystemModule,
|
|
1473
|
+
lumberjackyNest.ZLoggerModule
|
|
1454
1474
|
],
|
|
1455
1475
|
controllers: [
|
|
1456
1476
|
ZRomulatorSystemsController
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../src/config/config-update.mts","../src/dir/dir.ts","../src/config/config-known.mts","../src/config/configs-service.mts","../src/config/configs-controller.mts","../src/config/configs-module.mts","../src/systems/system-known.mts","../src/systems/systems-service.mts","../src/systems/systems-controller.mts","../src/systems/systems-module.mts","../src/app/app-module.mts","../src/main.mts"],"sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\nimport { IsDefined, IsNotEmptyObject, IsObject } from \"class-validator\";\n\nexport class ZRomulatorConfigUpdateDto<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n @ApiProperty({ type: \"object\", properties: {} })\n @IsDefined({ message: \"The contents of the config is required\" })\n @IsObject({ message: \"The contents of the config must be an object \" })\n @IsNotEmptyObject()\n contents: T;\n}\n","import { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nexport abstract class ZDir {\n public static application() {\n return resolve(homedir(), \".zthunworks\", \"romulator\");\n }\n\n public static configs() {\n return resolve(ZDir.application(), \"configs\");\n }\n}\n","import {\n ZRomulatorConfigBuilder,\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n ZRomulatorConfigMediaMetadata,\n} from \"@zthun/romulator-client\";\nimport { resolve } from \"node:path\";\nimport { ZDir } from \"../dir/dir.js\";\n\nexport abstract class ZRomulatorConfigKnown {\n public static all() {\n return [\n ZRomulatorConfigKnown.games().build(),\n ZRomulatorConfigKnown.media().build(),\n ];\n }\n\n private static create(id: ZRomulatorConfigId) {\n const file = resolve(ZDir.configs(), `${id}.json`);\n return new ZRomulatorConfigBuilder().id(id).file(file);\n }\n\n public static games() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Games)\n .name(\"Game Settings\")\n .description(\"Modify where your games are stored and related settings\")\n .avatar(\"gamepad\")\n .metadata(ZRomulatorConfigGamesMetadata.all());\n }\n\n public static media() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Media)\n .name(\"Media Settings\")\n .description(\"Modify where media is stored and what media to retrieve\")\n .avatar(\"image\")\n .metadata(ZRomulatorConfigMediaMetadata.all());\n }\n}\n","import {\n Inject,\n Injectable,\n InternalServerErrorException,\n NotFoundException,\n} from \"@nestjs/common\";\nimport { createError, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZLogger } from \"@zthun/lumberjacky-log\";\nimport { ZLogEntryBuilder, ZLoggerContext } from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigBuilder } from \"@zthun/romulator-client\";\nimport type { IZRestfulGet, IZRestfulUpdate } from \"@zthun/webigail-rest\";\nimport { find } from \"lodash-es\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { ZRomulatorConfigKnown } from \"./config-known.mjs\";\n\nexport const ZRomulatorConfigsToken = Symbol(\"configs\");\n\nexport interface IZRomulatorConfigsService\n extends IZRestfulUpdate<IZRomulatorConfig>,\n IZRestfulGet<IZRomulatorConfig> {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>>;\n}\n\n@Injectable()\nexport class ZRomulatorConfigsService implements IZRomulatorConfigsService {\n private _logger: IZLogger;\n\n public constructor(@Inject(ZLoggerToken) _logger: IZLogger) {\n this._logger = new ZLoggerContext(\"ZRomulatorConfigsService\", _logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving configs page, ${page}, with size, ${size}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const configs = ZRomulatorConfigKnown.all();\n const options = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields())\n .build();\n const source = new ZDataSourceStatic<IZRomulatorConfig>(configs, options);\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n msg = `Responding with ${data.length} configs out of ${count} total`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return new ZPageBuilder<IZRomulatorConfig>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get<T>(\n id: ZRomulatorConfigId,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this._find(id);\n let msg = `Attempting to read the file contents for config, ${id}.`;\n let contents: any = {};\n\n try {\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const buffer = await readFile(config.file);\n const json = buffer.toString(\"utf-8\");\n contents = JSON.parse(json);\n msg = `Finished reading config contents (${buffer.byteLength} bytes)`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n } catch (e) {\n msg = createError(e).message;\n this._logger.log(new ZLogEntryBuilder().warning().message(msg).build());\n }\n\n const result = new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(contents)\n .build();\n\n return Promise.resolve(result as Required<IZRomulatorConfig<T>>);\n }\n\n public async update<T>(\n id: ZRomulatorConfigId,\n record: Pick<IZRomulatorConfig, \"contents\">,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this.get<T>(id);\n\n let msg = `Updating config file, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const next = { ...config.contents, ...record.contents };\n const json = JSON.stringify(next);\n\n try {\n await mkdir(dirname(config.file), { recursive: true });\n await writeFile(config.file, json);\n return new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(next)\n .build() as Required<IZRomulatorConfig<T>>;\n } catch (e) {\n const error = createError(e);\n msg = `Unable to write to, ${config.file}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n msg = error.message;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new InternalServerErrorException(error));\n }\n }\n\n private async _find(id: ZRomulatorConfigId): Promise<IZRomulatorConfig> {\n let msg = `Attempting to retrieve config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const configs = ZRomulatorConfigKnown.all();\n const config = find(configs, (c) => c.id === id);\n\n if (config == null) {\n msg = `Could not find config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new NotFoundException(msg));\n }\n\n msg = `Config, ${id}, found`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return config;\n }\n}\n","import {\n Body,\n Controller,\n Get,\n Inject,\n Param,\n Patch,\n Query,\n UsePipes,\n ValidationPipe,\n} from \"@nestjs/common\";\nimport { ApiBody, ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigUpdateDto } from \"./config-update.mjs\";\nimport type { IZRomulatorConfigsService } from \"./configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"./configs-service.mjs\";\n\n@Controller(\"configs\")\nexport class ZRomulatorConfigsController {\n public constructor(\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n @Get()\n public async list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorConfig>> {\n const request = new ZDataRequestBuilder().query(query).build();\n return this._configs.list(request);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @ApiBody({\n type: ZRomulatorConfigUpdateDto,\n })\n @Patch(\":identification\")\n @UsePipes(\n new ValidationPipe({\n transform: true,\n whitelist: true,\n skipMissingProperties: false,\n skipNullProperties: false,\n skipUndefinedProperties: false,\n }),\n )\n public async update(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n @Body() payload: ZRomulatorConfigUpdateDto,\n ): Promise<IZRomulatorConfig> {\n return this._configs.update(identification, payload);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @Get(\":identification\")\n public async get(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n ): Promise<IZRomulatorConfig> {\n return await this._configs.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsController } from \"./configs-controller.mjs\";\nimport {\n ZRomulatorConfigsService,\n ZRomulatorConfigsToken,\n} from \"./configs-service.mjs\";\n\n@Module({\n imports: [ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorConfigsController],\n providers: [\n { provide: ZRomulatorConfigsToken, useClass: ZRomulatorConfigsService },\n ],\n exports: [ZRomulatorConfigsToken],\n})\nexport class ZRomulatorConfigsModule {}\n","import { ZRomulatorSystemBuilder } from \"@zthun/romulator-client\";\nimport \"reflect-metadata\";\n\nconst IS_SYSTEM = \"z-romulator-is-system-method\";\n\nfunction KnownSystem(): MethodDecorator {\n return (_, __, descriptor) => {\n Reflect.defineMetadata(IS_SYSTEM, true, descriptor.value!);\n };\n}\n\nfunction isKnownSystem(target: any): target is () => ZRomulatorSystemBuilder {\n return target != null && Reflect.getMetadata(IS_SYSTEM, target) === true;\n}\n\n/**\n * A helper factory class for creating supported systems.\n */\nexport abstract class ZRomulatorSystemKnown {\n /**\n * Creates a system that represents the Nintendo\n * Entertainment System (NES).\n *\n * @returns\n * A {@link ZRomulatorSystemBuilder} instance that has\n * built the nes.\n */\n @KnownSystem()\n public static nes() {\n return new ZRomulatorSystemBuilder()\n .id(\"nes\")\n .console()\n .name(\"Nintendo Entertainment System\")\n .alias(\"Famicom\")\n .alias(\"NES\")\n .alias(\"Hyundai Comboy\")\n .alias(\"Samurai Electronic TV Game System\")\n .alias(\"Dendy\")\n .generation(3)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Super\n * Nintendo Entertainment System (SNES).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static snes() {\n return new ZRomulatorSystemBuilder()\n .id(\"snes\")\n .console()\n .name(\"Super Nintendo Entertainment System\")\n .alias(\"Super Nintendo\")\n .alias(\"Super Famicom\")\n .alias(\"SNES\")\n .alias(\"Super NES\")\n .alias(\"Super Comboy\")\n .generation(4)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * 64 (N64).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static n64() {\n return new ZRomulatorSystemBuilder()\n .id(\"n64\")\n .console()\n .name(\"Nintendo 64\")\n .alias(\"N64\")\n .alias(\"Ultra 64\")\n .alias(\"Hyundai Comboy 64\")\n .generation(5)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * GameCube (GC).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static gc() {\n return new ZRomulatorSystemBuilder()\n .id(\"gc\")\n .console()\n .name(\"Nintendo GameCube\")\n .alias(\"GameCube\")\n .alias(\"Dolphin\")\n .generation(6)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii (Wii).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wii() {\n return new ZRomulatorSystemBuilder()\n .id(\"wii\")\n .console()\n .name(\"Nintendo Wii\")\n .alias(\"Wii\")\n .alias(\"Revolution\")\n .generation(7)\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii U (WiiU).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wiiu() {\n return new ZRomulatorSystemBuilder()\n .id(\"wiiu\")\n .console()\n .name(\"Nintendo Wii U\")\n .alias(\"WiiU\")\n .alias(\"Project Cafe\")\n .generation(8)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Mitsumi\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Switch (Switch).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static switch() {\n return new ZRomulatorSystemBuilder()\n .id(\"switch\")\n .console()\n .name(\"Nintendo Switch\")\n .alias(\"Switch\")\n .alias(\"NX\")\n .alias(\"HAC\")\n .alias(\"Odin\")\n .generation(9)\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Hosiden\");\n }\n\n /**\n * Creates a system from an id slug.\n *\n * @param id -\n * The id slug of the system to create.\n *\n * @return\n * The system, or null if the id is not known.\n */\n public static from(id: string): ZRomulatorSystemBuilder | null {\n const system = ZRomulatorSystemKnown[id];\n\n if (isKnownSystem(system)) {\n return system();\n }\n\n return null;\n }\n}\n","import { Inject, Injectable, NotFoundException } from \"@nestjs/common\";\nimport type { IZFileSystemService } from \"@zthun/crumbtrail-fs\";\nimport { ZFileSystemToken } from \"@zthun/crumbtrail-nest\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataRequestBuilder,\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigId } from \"@zthun/romulator-client\";\nimport { find } from \"lodash-es\";\nimport { basename } from \"node:path\";\nimport type { IZRomulatorConfigsService } from \"../config/configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"../config/configs-service.mjs\";\nimport { ZRomulatorSystemKnown } from \"./system-known.mjs\";\n\nexport const ZRomulatorSystemsToken = Symbol(\"romulator-platforms-service\");\n\nexport interface IZRomulatorSystemsService {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>>;\n get(id: string): Promise<IZRomulatorSystem>;\n}\n\n@Injectable()\nexport class ZRomulatorSystemsService implements IZRomulatorSystemsService {\n public constructor(\n @Inject(ZFileSystemToken)\n private readonly _file: IZFileSystemService,\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>> {\n const {\n contents: { gamesFolder },\n } = await this._configs.get(ZRomulatorConfigId.Games);\n\n const folders = await this._file.search(\"*/\", {\n cwd: gamesFolder,\n });\n\n const systems = folders\n .map((folder) => folder.path)\n .map((path) => basename(path))\n .map((slug) => ZRomulatorSystemKnown.from(slug))\n .filter((system) => system != null)\n .map((system) => system.build());\n\n const sourceOptions = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields([\"id\", \"name\", \"short\"]))\n .build();\n\n const source = new ZDataSourceStatic<IZRomulatorSystem>(\n systems,\n sourceOptions,\n );\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n return new ZPageBuilder<IZRomulatorSystem>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get(id: string): Promise<IZRomulatorSystem> {\n const all = await this.list(new ZDataRequestBuilder().build());\n const system = find(all.data, (system) => system.id === id);\n\n if (!system) {\n throw new NotFoundException(`Unable to find system with id, ${id}.`);\n }\n\n return system;\n }\n}\n","import { Controller, Get, Inject, Param, Query } from \"@nestjs/common\";\nimport { ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport type { IZRomulatorSystemsService } from \"./systems-service.mjs\";\nimport { ZRomulatorSystemsToken } from \"./systems-service.mjs\";\n\n@Controller(\"systems\")\nexport class ZRomulatorSystemsController {\n public constructor(\n @Inject(ZRomulatorSystemsToken)\n private readonly _systems: IZRomulatorSystemsService,\n ) {}\n\n @Get()\n public list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorSystem>> {\n return this._systems.list(new ZDataRequestBuilder().query(query).build());\n }\n\n @ApiParam({\n type: \"string | number\",\n name: \"identification\",\n description: \"The id of the system\",\n })\n @Get(\":identification\")\n public get(@Param(\"identification\") identification: string) {\n return this._systems.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsController } from \"./systems-controller.mjs\";\nimport {\n ZRomulatorSystemsService,\n ZRomulatorSystemsToken,\n} from \"./systems-service.mjs\";\n\n@Module({\n imports: [ZRomulatorConfigsModule, ZFileSystemModule],\n controllers: [ZRomulatorSystemsController],\n providers: [\n { provide: ZRomulatorSystemsToken, useClass: ZRomulatorSystemsService },\n ],\n})\nexport class ZRomulatorSystemsModule {}\n","/* istanbul ignore file -- @preserve */\nimport { Module } from \"@nestjs/common\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsModule } from \"../systems/systems-module.mjs\";\n\n@Module({ imports: [ZRomulatorSystemsModule, ZRomulatorConfigsModule] })\nexport class ZRomulatorModule {}\n","import { NestFactory } from \"@nestjs/core\";\nimport { DocumentBuilder, SwaggerModule } from \"@nestjs/swagger\";\nimport { ZRomulatorModule } from \"./app/app-module.mjs\";\n\nconst PORT = 3000;\n\n(async function () {\n const app = await NestFactory.create(ZRomulatorModule);\n app.setGlobalPrefix(\"api\");\n app.enableCors();\n\n const config = new DocumentBuilder()\n .setTitle(\"Romulator API\")\n .setDescription(\"The Romulator API\")\n .setVersion(\"1\")\n .build();\n\n const document = () => SwaggerModule.createDocument(app, config);\n SwaggerModule.setup(\"api/docs\", app, document);\n\n await app.listen(PORT);\n})();\n"],"names":["ZRomulatorConfigUpdateDto","_define_property","contents","type","properties","message","ZDir","application","resolve","homedir","configs","ZRomulatorConfigKnown","all","games","build","media","create","id","file","ZRomulatorConfigBuilder","ZRomulatorConfigId","Games","name","description","avatar","metadata","ZRomulatorConfigGamesMetadata","Media","ZRomulatorConfigMediaMetadata","ZRomulatorConfigsToken","Symbol","ZRomulatorConfigsService","_logger","ZLoggerContext","list","req","page","size","msg","options","source","data","count","firstDefined","Infinity","log","ZLogEntryBuilder","info","ZDataSourceStaticOptionsBuilder","search","ZDataSearchFields","ZDataSourceStatic","retrieve","length","ZPageBuilder","get","config","buffer","json","e","result","_find","readFile","toString","JSON","parse","byteLength","createError","warning","copy","Promise","update","record","next","error","stringify","mkdir","dirname","recursive","writeFile","reject","InternalServerErrorException","find","c","NotFoundException","ZRomulatorConfigsController","_configs","request","ZDataRequestBuilder","query","identification","payload","ValidationPipe","transform","whitelist","skipMissingProperties","skipNullProperties","skipUndefinedProperties","ZRomulatorConfigsModule","imports","ZFileSystemModule","ZLoggerModule","controllers","providers","provide","useClass","exports","IS_SYSTEM","KnownSystem","_","__","descriptor","Reflect","defineMetadata","value","isKnownSystem","target","getMetadata","ZRomulatorSystemKnown","nes","ZRomulatorSystemBuilder","console","alias","generation","manufacturer","snes","n64","gc","wii","wiiu","switch","from","system","ZRomulatorSystemsToken","ZRomulatorSystemsService","_file","gamesFolder","folders","systems","sourceOptions","cwd","map","folder","path","basename","slug","filter","ZRomulatorSystemsController","_systems","ZRomulatorSystemsModule","ZRomulatorModule","PORT","app","document","NestFactory","setGlobalPrefix","enableCors","DocumentBuilder","setTitle","setDescription","setVersion","SwaggerModule","createDocument","setup","listen"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../src/config/config-update.mts","../src/dir/dir.ts","../src/config/config-known.mts","../src/config/configs-service.mts","../src/config/configs-controller.mts","../src/config/configs-module.mts","../src/systems/system-known.mts","../src/systems/systems-service.mts","../src/systems/systems-controller.mts","../src/systems/systems-module.mts","../src/app/app-module.mts","../src/main.mts"],"sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\nimport { IsDefined, IsNotEmptyObject, IsObject } from \"class-validator\";\n\nexport class ZRomulatorConfigUpdateDto<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n @ApiProperty({ type: \"object\", properties: {} })\n @IsDefined({ message: \"The contents of the config is required\" })\n @IsObject({ message: \"The contents of the config must be an object \" })\n @IsNotEmptyObject()\n contents: T;\n}\n","import { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nexport abstract class ZDir {\n public static application() {\n return resolve(homedir(), \".zthunworks\", \"romulator\");\n }\n\n public static configs() {\n return resolve(ZDir.application(), \"configs\");\n }\n}\n","import {\n ZRomulatorConfigBuilder,\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n ZRomulatorConfigMediaMetadata,\n} from \"@zthun/romulator-client\";\nimport { resolve } from \"node:path\";\nimport { ZDir } from \"../dir/dir.js\";\n\nexport abstract class ZRomulatorConfigKnown {\n public static all() {\n return [\n ZRomulatorConfigKnown.games().build(),\n ZRomulatorConfigKnown.media().build(),\n ];\n }\n\n private static create(id: ZRomulatorConfigId) {\n const file = resolve(ZDir.configs(), `${id}.json`);\n return new ZRomulatorConfigBuilder().id(id).file(file);\n }\n\n public static games() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Games)\n .name(\"Game Settings\")\n .description(\"Modify where your games are stored and related settings\")\n .avatar(\"gamepad\")\n .metadata(ZRomulatorConfigGamesMetadata.all());\n }\n\n public static media() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Media)\n .name(\"Media Settings\")\n .description(\"Modify where media is stored and what media to retrieve\")\n .avatar(\"image\")\n .metadata(ZRomulatorConfigMediaMetadata.all());\n }\n}\n","import {\n Inject,\n Injectable,\n InternalServerErrorException,\n NotFoundException,\n} from \"@nestjs/common\";\nimport { createError, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZLogger } from \"@zthun/lumberjacky-log\";\nimport { ZLogEntryBuilder, ZLoggerContext } from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigBuilder } from \"@zthun/romulator-client\";\nimport type { IZRestfulGet, IZRestfulUpdate } from \"@zthun/webigail-rest\";\nimport { find } from \"lodash-es\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { ZRomulatorConfigKnown } from \"./config-known.mjs\";\n\nexport const ZRomulatorConfigsToken = Symbol(\"configs\");\n\nexport interface IZRomulatorConfigsService\n extends IZRestfulUpdate<IZRomulatorConfig>,\n IZRestfulGet<IZRomulatorConfig> {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>>;\n}\n\n@Injectable()\nexport class ZRomulatorConfigsService implements IZRomulatorConfigsService {\n private _logger: IZLogger;\n\n public constructor(@Inject(ZLoggerToken) _logger: IZLogger) {\n this._logger = new ZLoggerContext(\"ZRomulatorConfigsService\", _logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving configs page, ${page}, with size, ${size}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const configs = ZRomulatorConfigKnown.all();\n const options = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields())\n .build();\n const source = new ZDataSourceStatic<IZRomulatorConfig>(configs, options);\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n msg = `Responding with ${data.length} configs out of ${count} total`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return new ZPageBuilder<IZRomulatorConfig>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get<T>(\n id: ZRomulatorConfigId,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this._find(id);\n let msg = `Attempting to read the file contents for config, ${id}.`;\n let contents: any = {};\n\n try {\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const buffer = await readFile(config.file);\n const json = buffer.toString(\"utf-8\");\n contents = JSON.parse(json);\n msg = `Finished reading config contents (${buffer.byteLength} bytes)`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n } catch (e) {\n msg = createError(e).message;\n this._logger.log(new ZLogEntryBuilder().warning().message(msg).build());\n }\n\n const result = new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(contents)\n .build();\n\n return Promise.resolve(result as Required<IZRomulatorConfig<T>>);\n }\n\n public async update<T>(\n id: ZRomulatorConfigId,\n record: Pick<IZRomulatorConfig, \"contents\">,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this.get<T>(id);\n\n let msg = `Updating config file, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const next = { ...config.contents, ...record.contents };\n const json = JSON.stringify(next);\n\n try {\n await mkdir(dirname(config.file), { recursive: true });\n await writeFile(config.file, json);\n return new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(next)\n .build() as Required<IZRomulatorConfig<T>>;\n } catch (e) {\n const error = createError(e);\n msg = `Unable to write to, ${config.file}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n msg = error.message;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new InternalServerErrorException(error));\n }\n }\n\n private async _find(id: ZRomulatorConfigId): Promise<IZRomulatorConfig> {\n let msg = `Attempting to retrieve config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const configs = ZRomulatorConfigKnown.all();\n const config = find(configs, (c) => c.id === id);\n\n if (config == null) {\n msg = `Could not find config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new NotFoundException(msg));\n }\n\n msg = `Config, ${id}, found`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return config;\n }\n}\n","import {\n Body,\n Controller,\n Get,\n Inject,\n Param,\n Patch,\n Query,\n UsePipes,\n ValidationPipe,\n} from \"@nestjs/common\";\nimport { ApiBody, ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigUpdateDto } from \"./config-update.mjs\";\nimport type { IZRomulatorConfigsService } from \"./configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"./configs-service.mjs\";\n\n@Controller(\"configs\")\nexport class ZRomulatorConfigsController {\n public constructor(\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n @Get()\n public async list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorConfig>> {\n const request = new ZDataRequestBuilder().query(query).build();\n return this._configs.list(request);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @ApiBody({\n type: ZRomulatorConfigUpdateDto,\n })\n @Patch(\":identification\")\n @UsePipes(\n new ValidationPipe({\n transform: true,\n whitelist: true,\n skipMissingProperties: false,\n skipNullProperties: false,\n skipUndefinedProperties: false,\n }),\n )\n public async update(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n @Body() payload: ZRomulatorConfigUpdateDto,\n ): Promise<IZRomulatorConfig> {\n return this._configs.update(identification, payload);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @Get(\":identification\")\n public async get(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n ): Promise<IZRomulatorConfig> {\n return await this._configs.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsController } from \"./configs-controller.mjs\";\nimport {\n ZRomulatorConfigsService,\n ZRomulatorConfigsToken,\n} from \"./configs-service.mjs\";\n\n@Module({\n imports: [ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorConfigsController],\n providers: [\n { provide: ZRomulatorConfigsToken, useClass: ZRomulatorConfigsService },\n ],\n exports: [ZRomulatorConfigsToken],\n})\nexport class ZRomulatorConfigsModule {}\n","import { ZRomulatorSystemBuilder } from \"@zthun/romulator-client\";\nimport \"reflect-metadata\";\n\nconst IS_SYSTEM = \"z-romulator-is-system-method\";\n\nfunction KnownSystem(): MethodDecorator {\n return (_, __, descriptor) => {\n Reflect.defineMetadata(IS_SYSTEM, true, descriptor.value!);\n };\n}\n\nfunction isKnownSystem(target: any): target is () => ZRomulatorSystemBuilder {\n return target != null && Reflect.getMetadata(IS_SYSTEM, target) === true;\n}\n\n/**\n * A helper factory class for creating supported systems.\n */\nexport abstract class ZRomulatorSystemKnown {\n /**\n * Creates a system that represents the Nintendo\n * Entertainment System (NES).\n *\n * @returns\n * A {@link ZRomulatorSystemBuilder} instance that has\n * built the nes.\n */\n @KnownSystem()\n public static nes() {\n return new ZRomulatorSystemBuilder()\n .id(\"nes\")\n .console()\n .name(\"Nintendo Entertainment System\")\n .alias(\"Famicom\")\n .alias(\"NES\")\n .alias(\"Hyundai Comboy\")\n .alias(\"Samurai Electronic TV Game System\")\n .alias(\"Dendy\")\n .generation(3)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Super\n * Nintendo Entertainment System (SNES).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static snes() {\n return new ZRomulatorSystemBuilder()\n .id(\"snes\")\n .console()\n .name(\"Super Nintendo Entertainment System\")\n .alias(\"Super Nintendo\")\n .alias(\"Super Famicom\")\n .alias(\"SNES\")\n .alias(\"Super NES\")\n .alias(\"Super Comboy\")\n .generation(4)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * 64 (N64).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static n64() {\n return new ZRomulatorSystemBuilder()\n .id(\"n64\")\n .console()\n .name(\"Nintendo 64\")\n .alias(\"N64\")\n .alias(\"Ultra 64\")\n .alias(\"Hyundai Comboy 64\")\n .generation(5)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * GameCube (GC).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static gc() {\n return new ZRomulatorSystemBuilder()\n .id(\"gc\")\n .console()\n .name(\"Nintendo GameCube\")\n .alias(\"GameCube\")\n .alias(\"Dolphin\")\n .generation(6)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii (Wii).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wii() {\n return new ZRomulatorSystemBuilder()\n .id(\"wii\")\n .console()\n .name(\"Nintendo Wii\")\n .alias(\"Wii\")\n .alias(\"Revolution\")\n .generation(7)\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii U (WiiU).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wiiu() {\n return new ZRomulatorSystemBuilder()\n .id(\"wiiu\")\n .console()\n .name(\"Nintendo Wii U\")\n .alias(\"WiiU\")\n .alias(\"Project Cafe\")\n .generation(8)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Mitsumi\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Switch (Switch).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static switch() {\n return new ZRomulatorSystemBuilder()\n .id(\"switch\")\n .console()\n .name(\"Nintendo Switch\")\n .alias(\"Switch\")\n .alias(\"NX\")\n .alias(\"HAC\")\n .alias(\"Odin\")\n .generation(9)\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Hosiden\");\n }\n\n /**\n * Creates a system from an id slug.\n *\n * @param id -\n * The id slug of the system to create.\n *\n * @return\n * The system, or null if the id is not known.\n */\n public static from(id: string): ZRomulatorSystemBuilder | null {\n const system = ZRomulatorSystemKnown[id];\n\n if (isKnownSystem(system)) {\n return system();\n }\n\n return null;\n }\n}\n","import { Inject, Injectable, NotFoundException } from \"@nestjs/common\";\nimport type { IZFileSystemService } from \"@zthun/crumbtrail-fs\";\nimport { ZFileSystemToken } from \"@zthun/crumbtrail-nest\";\nimport { detokenize, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataRequestBuilder,\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport {\n ZLogEntryBuilder,\n ZLoggerContext,\n type IZLogger,\n} from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport {\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { find } from \"lodash-es\";\nimport { basename } from \"node:path\";\nimport type { IZRomulatorConfigsService } from \"../config/configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"../config/configs-service.mjs\";\nimport { ZRomulatorSystemKnown } from \"./system-known.mjs\";\n\nexport const ZRomulatorSystemsToken = Symbol(\"romulator-platforms-service\");\n\nexport interface IZRomulatorSystemsService {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>>;\n get(id: string): Promise<IZRomulatorSystem>;\n}\n\n@Injectable()\nexport class ZRomulatorSystemsService implements IZRomulatorSystemsService {\n private _logger: IZLogger;\n\n public constructor(\n @Inject(ZFileSystemToken)\n private readonly _file: IZFileSystemService,\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n @Inject(ZLoggerToken) readonly logger: IZLogger,\n ) {\n this._logger = new ZLoggerContext(\"ZRomulatorSystemsService\", logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving systems page, ${page}, with size, ${size}.`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const { contents } = await this._configs.get(ZRomulatorConfigId.Games);\n const { gamesFolder } = contents;\n const { fallback } = ZRomulatorConfigGamesMetadata.gamesFolder();\n const _folder = firstDefined(fallback, gamesFolder);\n\n const cwd = detokenize(_folder, process.env);\n msg = `Looking for systems in ${cwd}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const searchOptions = { cwd };\n const folders = await this._file.search(\"*/\", searchOptions);\n\n const systems = folders\n .map((folder) => folder.path)\n .map((path) => basename(path))\n .map((slug) => ZRomulatorSystemKnown.from(slug))\n .filter((system) => system != null)\n .map((system) => system.build());\n\n msg = `Found ${systems.length} systems`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const sourceOptions = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields([\"id\", \"name\", \"short\"]))\n .build();\n\n const source = new ZDataSourceStatic<IZRomulatorSystem>(\n systems,\n sourceOptions,\n );\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n return new ZPageBuilder<IZRomulatorSystem>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get(id: string): Promise<IZRomulatorSystem> {\n const all = await this.list(new ZDataRequestBuilder().build());\n const system = find(all.data, (system) => system.id === id);\n\n if (!system) {\n throw new NotFoundException(`Unable to find system with id, ${id}.`);\n }\n\n return system;\n }\n}\n","import { Controller, Get, Inject, Param, Query } from \"@nestjs/common\";\nimport { ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport type { IZRomulatorSystemsService } from \"./systems-service.mjs\";\nimport { ZRomulatorSystemsToken } from \"./systems-service.mjs\";\n\n@Controller(\"systems\")\nexport class ZRomulatorSystemsController {\n public constructor(\n @Inject(ZRomulatorSystemsToken)\n private readonly _systems: IZRomulatorSystemsService,\n ) {}\n\n @Get()\n public list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorSystem>> {\n return this._systems.list(new ZDataRequestBuilder().query(query).build());\n }\n\n @ApiParam({\n type: \"string | number\",\n name: \"identification\",\n description: \"The id of the system\",\n })\n @Get(\":identification\")\n public get(@Param(\"identification\") identification: string) {\n return this._systems.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsController } from \"./systems-controller.mjs\";\nimport {\n ZRomulatorSystemsService,\n ZRomulatorSystemsToken,\n} from \"./systems-service.mjs\";\n\n@Module({\n imports: [ZRomulatorConfigsModule, ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorSystemsController],\n providers: [\n { provide: ZRomulatorSystemsToken, useClass: ZRomulatorSystemsService },\n ],\n})\nexport class ZRomulatorSystemsModule {}\n","/* istanbul ignore file -- @preserve */\nimport { Module } from \"@nestjs/common\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsModule } from \"../systems/systems-module.mjs\";\n\n@Module({ imports: [ZRomulatorSystemsModule, ZRomulatorConfigsModule] })\nexport class ZRomulatorModule {}\n","import { NestFactory } from \"@nestjs/core\";\nimport { DocumentBuilder, SwaggerModule } from \"@nestjs/swagger\";\nimport { ZRomulatorModule } from \"./app/app-module.mjs\";\n\nconst PORT = 3000;\n\n(async function () {\n const app = await NestFactory.create(ZRomulatorModule);\n app.setGlobalPrefix(\"api\");\n app.enableCors();\n\n const config = new DocumentBuilder()\n .setTitle(\"Romulator API\")\n .setDescription(\"The Romulator API\")\n .setVersion(\"1\")\n .build();\n\n const document = () => SwaggerModule.createDocument(app, config);\n SwaggerModule.setup(\"api/docs\", app, document);\n\n await app.listen(PORT);\n})();\n"],"names":["ZRomulatorConfigUpdateDto","_define_property","contents","type","properties","message","ZDir","application","resolve","homedir","configs","ZRomulatorConfigKnown","all","games","build","media","create","id","file","ZRomulatorConfigBuilder","ZRomulatorConfigId","Games","name","description","avatar","metadata","ZRomulatorConfigGamesMetadata","Media","ZRomulatorConfigMediaMetadata","ZRomulatorConfigsToken","Symbol","ZRomulatorConfigsService","_logger","ZLoggerContext","list","req","page","size","msg","options","source","data","count","firstDefined","Infinity","log","ZLogEntryBuilder","info","ZDataSourceStaticOptionsBuilder","search","ZDataSearchFields","ZDataSourceStatic","retrieve","length","ZPageBuilder","get","config","buffer","json","e","result","_find","readFile","toString","JSON","parse","byteLength","createError","warning","copy","Promise","update","record","next","error","stringify","mkdir","dirname","recursive","writeFile","reject","InternalServerErrorException","find","c","NotFoundException","ZRomulatorConfigsController","_configs","request","ZDataRequestBuilder","query","identification","payload","ValidationPipe","transform","whitelist","skipMissingProperties","skipNullProperties","skipUndefinedProperties","ZRomulatorConfigsModule","imports","ZFileSystemModule","ZLoggerModule","controllers","providers","provide","useClass","exports","IS_SYSTEM","KnownSystem","_","__","descriptor","Reflect","defineMetadata","value","isKnownSystem","target","getMetadata","ZRomulatorSystemKnown","nes","ZRomulatorSystemBuilder","console","alias","generation","manufacturer","snes","n64","gc","wii","wiiu","switch","from","system","ZRomulatorSystemsToken","ZRomulatorSystemsService","_file","logger","gamesFolder","fallback","_folder","cwd","searchOptions","folders","systems","sourceOptions","detokenize","process","env","map","folder","path","basename","slug","filter","ZRomulatorSystemsController","_systems","ZRomulatorSystemsModule","ZRomulatorModule","PORT","app","document","NestFactory","setGlobalPrefix","enableCors","DocumentBuilder","setTitle","setDescription","setVersion","SwaggerModule","createDocument","setup","listen"],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -5,7 +5,7 @@ import { ZFileSystemModule, ZFileSystemToken } from '@zthun/crumbtrail-nest';
|
|
|
5
5
|
import { ZLoggerToken, ZLoggerModule } from '@zthun/lumberjacky-nest';
|
|
6
6
|
import { ZPageBuilder, ZDataSourceStaticOptionsBuilder, ZDataSearchFields, ZDataSourceStatic, ZDataRequestBuilder } from '@zthun/helpful-query';
|
|
7
7
|
import { IsDefined, IsObject, IsNotEmptyObject } from 'class-validator';
|
|
8
|
-
import { firstDefined, createError } from '@zthun/helpful-fn';
|
|
8
|
+
import { firstDefined, createError, detokenize } from '@zthun/helpful-fn';
|
|
9
9
|
import { ZLoggerContext, ZLogEntryBuilder } from '@zthun/lumberjacky-log';
|
|
10
10
|
import { ZRomulatorConfigBuilder, ZRomulatorConfigId as ZRomulatorConfigId$1, ZRomulatorConfigGamesMetadata, ZRomulatorConfigMediaMetadata, ZRomulatorSystemBuilder } from '@zthun/romulator-client';
|
|
11
11
|
import { find } from 'lodash-es';
|
|
@@ -1220,33 +1220,48 @@ function _ts_param$1(paramIndex, decorator) {
|
|
|
1220
1220
|
}
|
|
1221
1221
|
var ZRomulatorSystemsToken = Symbol("romulator-platforms-service");
|
|
1222
1222
|
var ZRomulatorSystemsService = /*#__PURE__*/ function() {
|
|
1223
|
-
function ZRomulatorSystemsService(_file, _configs) {
|
|
1223
|
+
function ZRomulatorSystemsService(_file, _configs, logger) {
|
|
1224
1224
|
_class_call_check$3(this, ZRomulatorSystemsService);
|
|
1225
1225
|
_define_property$1(this, "_file", void 0);
|
|
1226
1226
|
_define_property$1(this, "_configs", void 0);
|
|
1227
|
+
_define_property$1(this, "logger", void 0);
|
|
1228
|
+
_define_property$1(this, "_logger", void 0);
|
|
1227
1229
|
this._file = _file;
|
|
1228
1230
|
this._configs = _configs;
|
|
1231
|
+
this.logger = logger;
|
|
1232
|
+
this._logger = new ZLoggerContext("ZRomulatorSystemsService", logger);
|
|
1229
1233
|
}
|
|
1230
1234
|
_create_class$1(ZRomulatorSystemsService, [
|
|
1231
1235
|
{
|
|
1232
1236
|
key: "list",
|
|
1233
1237
|
value: function list(req) {
|
|
1234
1238
|
return _async_to_generator$1(function() {
|
|
1235
|
-
var
|
|
1239
|
+
var page, size, msg, contents, gamesFolder, fallback, _folder, cwd, searchOptions, folders, systems, sourceOptions, source, data, count;
|
|
1236
1240
|
return _ts_generator$1(this, function(_state) {
|
|
1237
1241
|
switch(_state.label){
|
|
1238
1242
|
case 0:
|
|
1243
|
+
page = firstDefined(1, req.page);
|
|
1244
|
+
size = firstDefined(Infinity, req.size);
|
|
1245
|
+
msg = "Retrieving systems page, ".concat(page, ", with size, ").concat(size, ".");
|
|
1246
|
+
this._logger.log(new ZLogEntryBuilder().info().message(msg).build());
|
|
1239
1247
|
return [
|
|
1240
1248
|
4,
|
|
1241
1249
|
this._configs.get(ZRomulatorConfigId$1.Games)
|
|
1242
1250
|
];
|
|
1243
1251
|
case 1:
|
|
1244
|
-
|
|
1252
|
+
contents = _state.sent().contents;
|
|
1253
|
+
gamesFolder = contents.gamesFolder;
|
|
1254
|
+
fallback = ZRomulatorConfigGamesMetadata.gamesFolder().fallback;
|
|
1255
|
+
_folder = firstDefined(fallback, gamesFolder);
|
|
1256
|
+
cwd = detokenize(_folder, process.env);
|
|
1257
|
+
msg = "Looking for systems in ".concat(cwd);
|
|
1258
|
+
this._logger.log(new ZLogEntryBuilder().info().message(msg).build());
|
|
1259
|
+
searchOptions = {
|
|
1260
|
+
cwd: cwd
|
|
1261
|
+
};
|
|
1245
1262
|
return [
|
|
1246
1263
|
4,
|
|
1247
|
-
this._file.search("*/",
|
|
1248
|
-
cwd: gamesFolder
|
|
1249
|
-
})
|
|
1264
|
+
this._file.search("*/", searchOptions)
|
|
1250
1265
|
];
|
|
1251
1266
|
case 2:
|
|
1252
1267
|
folders = _state.sent();
|
|
@@ -1261,6 +1276,8 @@ var ZRomulatorSystemsService = /*#__PURE__*/ function() {
|
|
|
1261
1276
|
}).map(function(system) {
|
|
1262
1277
|
return system.build();
|
|
1263
1278
|
});
|
|
1279
|
+
msg = "Found ".concat(systems.length, " systems");
|
|
1280
|
+
this._logger.log(new ZLogEntryBuilder().info().message(msg).build());
|
|
1264
1281
|
sourceOptions = new ZDataSourceStaticOptionsBuilder().search(new ZDataSearchFields([
|
|
1265
1282
|
"id",
|
|
1266
1283
|
"name",
|
|
@@ -1324,10 +1341,12 @@ ZRomulatorSystemsService = _ts_decorate$3([
|
|
|
1324
1341
|
Injectable(),
|
|
1325
1342
|
_ts_param$1(0, Inject(ZFileSystemToken)),
|
|
1326
1343
|
_ts_param$1(1, Inject(ZRomulatorConfigsToken)),
|
|
1344
|
+
_ts_param$1(2, Inject(ZLoggerToken)),
|
|
1327
1345
|
_ts_metadata$1("design:type", Function),
|
|
1328
1346
|
_ts_metadata$1("design:paramtypes", [
|
|
1329
1347
|
typeof IZFileSystemService === "undefined" ? Object : IZFileSystemService,
|
|
1330
|
-
typeof IZRomulatorConfigsService === "undefined" ? Object : IZRomulatorConfigsService
|
|
1348
|
+
typeof IZRomulatorConfigsService === "undefined" ? Object : IZRomulatorConfigsService,
|
|
1349
|
+
typeof IZLogger === "undefined" ? Object : IZLogger
|
|
1331
1350
|
])
|
|
1332
1351
|
], ZRomulatorSystemsService);
|
|
1333
1352
|
|
|
@@ -1448,7 +1467,8 @@ ZRomulatorSystemsModule = _ts_decorate$1([
|
|
|
1448
1467
|
Module({
|
|
1449
1468
|
imports: [
|
|
1450
1469
|
ZRomulatorConfigsModule,
|
|
1451
|
-
ZFileSystemModule
|
|
1470
|
+
ZFileSystemModule,
|
|
1471
|
+
ZLoggerModule
|
|
1452
1472
|
],
|
|
1453
1473
|
controllers: [
|
|
1454
1474
|
ZRomulatorSystemsController
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/config/config-update.mts","../src/dir/dir.ts","../src/config/config-known.mts","../src/config/configs-service.mts","../src/config/configs-controller.mts","../src/config/configs-module.mts","../src/systems/system-known.mts","../src/systems/systems-service.mts","../src/systems/systems-controller.mts","../src/systems/systems-module.mts","../src/app/app-module.mts","../src/main.mts"],"sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\nimport { IsDefined, IsNotEmptyObject, IsObject } from \"class-validator\";\n\nexport class ZRomulatorConfigUpdateDto<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n @ApiProperty({ type: \"object\", properties: {} })\n @IsDefined({ message: \"The contents of the config is required\" })\n @IsObject({ message: \"The contents of the config must be an object \" })\n @IsNotEmptyObject()\n contents: T;\n}\n","import { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nexport abstract class ZDir {\n public static application() {\n return resolve(homedir(), \".zthunworks\", \"romulator\");\n }\n\n public static configs() {\n return resolve(ZDir.application(), \"configs\");\n }\n}\n","import {\n ZRomulatorConfigBuilder,\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n ZRomulatorConfigMediaMetadata,\n} from \"@zthun/romulator-client\";\nimport { resolve } from \"node:path\";\nimport { ZDir } from \"../dir/dir.js\";\n\nexport abstract class ZRomulatorConfigKnown {\n public static all() {\n return [\n ZRomulatorConfigKnown.games().build(),\n ZRomulatorConfigKnown.media().build(),\n ];\n }\n\n private static create(id: ZRomulatorConfigId) {\n const file = resolve(ZDir.configs(), `${id}.json`);\n return new ZRomulatorConfigBuilder().id(id).file(file);\n }\n\n public static games() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Games)\n .name(\"Game Settings\")\n .description(\"Modify where your games are stored and related settings\")\n .avatar(\"gamepad\")\n .metadata(ZRomulatorConfigGamesMetadata.all());\n }\n\n public static media() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Media)\n .name(\"Media Settings\")\n .description(\"Modify where media is stored and what media to retrieve\")\n .avatar(\"image\")\n .metadata(ZRomulatorConfigMediaMetadata.all());\n }\n}\n","import {\n Inject,\n Injectable,\n InternalServerErrorException,\n NotFoundException,\n} from \"@nestjs/common\";\nimport { createError, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZLogger } from \"@zthun/lumberjacky-log\";\nimport { ZLogEntryBuilder, ZLoggerContext } from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigBuilder } from \"@zthun/romulator-client\";\nimport type { IZRestfulGet, IZRestfulUpdate } from \"@zthun/webigail-rest\";\nimport { find } from \"lodash-es\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { ZRomulatorConfigKnown } from \"./config-known.mjs\";\n\nexport const ZRomulatorConfigsToken = Symbol(\"configs\");\n\nexport interface IZRomulatorConfigsService\n extends IZRestfulUpdate<IZRomulatorConfig>,\n IZRestfulGet<IZRomulatorConfig> {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>>;\n}\n\n@Injectable()\nexport class ZRomulatorConfigsService implements IZRomulatorConfigsService {\n private _logger: IZLogger;\n\n public constructor(@Inject(ZLoggerToken) _logger: IZLogger) {\n this._logger = new ZLoggerContext(\"ZRomulatorConfigsService\", _logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving configs page, ${page}, with size, ${size}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const configs = ZRomulatorConfigKnown.all();\n const options = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields())\n .build();\n const source = new ZDataSourceStatic<IZRomulatorConfig>(configs, options);\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n msg = `Responding with ${data.length} configs out of ${count} total`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return new ZPageBuilder<IZRomulatorConfig>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get<T>(\n id: ZRomulatorConfigId,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this._find(id);\n let msg = `Attempting to read the file contents for config, ${id}.`;\n let contents: any = {};\n\n try {\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const buffer = await readFile(config.file);\n const json = buffer.toString(\"utf-8\");\n contents = JSON.parse(json);\n msg = `Finished reading config contents (${buffer.byteLength} bytes)`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n } catch (e) {\n msg = createError(e).message;\n this._logger.log(new ZLogEntryBuilder().warning().message(msg).build());\n }\n\n const result = new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(contents)\n .build();\n\n return Promise.resolve(result as Required<IZRomulatorConfig<T>>);\n }\n\n public async update<T>(\n id: ZRomulatorConfigId,\n record: Pick<IZRomulatorConfig, \"contents\">,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this.get<T>(id);\n\n let msg = `Updating config file, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const next = { ...config.contents, ...record.contents };\n const json = JSON.stringify(next);\n\n try {\n await mkdir(dirname(config.file), { recursive: true });\n await writeFile(config.file, json);\n return new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(next)\n .build() as Required<IZRomulatorConfig<T>>;\n } catch (e) {\n const error = createError(e);\n msg = `Unable to write to, ${config.file}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n msg = error.message;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new InternalServerErrorException(error));\n }\n }\n\n private async _find(id: ZRomulatorConfigId): Promise<IZRomulatorConfig> {\n let msg = `Attempting to retrieve config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const configs = ZRomulatorConfigKnown.all();\n const config = find(configs, (c) => c.id === id);\n\n if (config == null) {\n msg = `Could not find config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new NotFoundException(msg));\n }\n\n msg = `Config, ${id}, found`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return config;\n }\n}\n","import {\n Body,\n Controller,\n Get,\n Inject,\n Param,\n Patch,\n Query,\n UsePipes,\n ValidationPipe,\n} from \"@nestjs/common\";\nimport { ApiBody, ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigUpdateDto } from \"./config-update.mjs\";\nimport type { IZRomulatorConfigsService } from \"./configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"./configs-service.mjs\";\n\n@Controller(\"configs\")\nexport class ZRomulatorConfigsController {\n public constructor(\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n @Get()\n public async list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorConfig>> {\n const request = new ZDataRequestBuilder().query(query).build();\n return this._configs.list(request);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @ApiBody({\n type: ZRomulatorConfigUpdateDto,\n })\n @Patch(\":identification\")\n @UsePipes(\n new ValidationPipe({\n transform: true,\n whitelist: true,\n skipMissingProperties: false,\n skipNullProperties: false,\n skipUndefinedProperties: false,\n }),\n )\n public async update(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n @Body() payload: ZRomulatorConfigUpdateDto,\n ): Promise<IZRomulatorConfig> {\n return this._configs.update(identification, payload);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @Get(\":identification\")\n public async get(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n ): Promise<IZRomulatorConfig> {\n return await this._configs.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsController } from \"./configs-controller.mjs\";\nimport {\n ZRomulatorConfigsService,\n ZRomulatorConfigsToken,\n} from \"./configs-service.mjs\";\n\n@Module({\n imports: [ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorConfigsController],\n providers: [\n { provide: ZRomulatorConfigsToken, useClass: ZRomulatorConfigsService },\n ],\n exports: [ZRomulatorConfigsToken],\n})\nexport class ZRomulatorConfigsModule {}\n","import { ZRomulatorSystemBuilder } from \"@zthun/romulator-client\";\nimport \"reflect-metadata\";\n\nconst IS_SYSTEM = \"z-romulator-is-system-method\";\n\nfunction KnownSystem(): MethodDecorator {\n return (_, __, descriptor) => {\n Reflect.defineMetadata(IS_SYSTEM, true, descriptor.value!);\n };\n}\n\nfunction isKnownSystem(target: any): target is () => ZRomulatorSystemBuilder {\n return target != null && Reflect.getMetadata(IS_SYSTEM, target) === true;\n}\n\n/**\n * A helper factory class for creating supported systems.\n */\nexport abstract class ZRomulatorSystemKnown {\n /**\n * Creates a system that represents the Nintendo\n * Entertainment System (NES).\n *\n * @returns\n * A {@link ZRomulatorSystemBuilder} instance that has\n * built the nes.\n */\n @KnownSystem()\n public static nes() {\n return new ZRomulatorSystemBuilder()\n .id(\"nes\")\n .console()\n .name(\"Nintendo Entertainment System\")\n .alias(\"Famicom\")\n .alias(\"NES\")\n .alias(\"Hyundai Comboy\")\n .alias(\"Samurai Electronic TV Game System\")\n .alias(\"Dendy\")\n .generation(3)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Super\n * Nintendo Entertainment System (SNES).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static snes() {\n return new ZRomulatorSystemBuilder()\n .id(\"snes\")\n .console()\n .name(\"Super Nintendo Entertainment System\")\n .alias(\"Super Nintendo\")\n .alias(\"Super Famicom\")\n .alias(\"SNES\")\n .alias(\"Super NES\")\n .alias(\"Super Comboy\")\n .generation(4)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * 64 (N64).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static n64() {\n return new ZRomulatorSystemBuilder()\n .id(\"n64\")\n .console()\n .name(\"Nintendo 64\")\n .alias(\"N64\")\n .alias(\"Ultra 64\")\n .alias(\"Hyundai Comboy 64\")\n .generation(5)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * GameCube (GC).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static gc() {\n return new ZRomulatorSystemBuilder()\n .id(\"gc\")\n .console()\n .name(\"Nintendo GameCube\")\n .alias(\"GameCube\")\n .alias(\"Dolphin\")\n .generation(6)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii (Wii).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wii() {\n return new ZRomulatorSystemBuilder()\n .id(\"wii\")\n .console()\n .name(\"Nintendo Wii\")\n .alias(\"Wii\")\n .alias(\"Revolution\")\n .generation(7)\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii U (WiiU).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wiiu() {\n return new ZRomulatorSystemBuilder()\n .id(\"wiiu\")\n .console()\n .name(\"Nintendo Wii U\")\n .alias(\"WiiU\")\n .alias(\"Project Cafe\")\n .generation(8)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Mitsumi\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Switch (Switch).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static switch() {\n return new ZRomulatorSystemBuilder()\n .id(\"switch\")\n .console()\n .name(\"Nintendo Switch\")\n .alias(\"Switch\")\n .alias(\"NX\")\n .alias(\"HAC\")\n .alias(\"Odin\")\n .generation(9)\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Hosiden\");\n }\n\n /**\n * Creates a system from an id slug.\n *\n * @param id -\n * The id slug of the system to create.\n *\n * @return\n * The system, or null if the id is not known.\n */\n public static from(id: string): ZRomulatorSystemBuilder | null {\n const system = ZRomulatorSystemKnown[id];\n\n if (isKnownSystem(system)) {\n return system();\n }\n\n return null;\n }\n}\n","import { Inject, Injectable, NotFoundException } from \"@nestjs/common\";\nimport type { IZFileSystemService } from \"@zthun/crumbtrail-fs\";\nimport { ZFileSystemToken } from \"@zthun/crumbtrail-nest\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataRequestBuilder,\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigId } from \"@zthun/romulator-client\";\nimport { find } from \"lodash-es\";\nimport { basename } from \"node:path\";\nimport type { IZRomulatorConfigsService } from \"../config/configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"../config/configs-service.mjs\";\nimport { ZRomulatorSystemKnown } from \"./system-known.mjs\";\n\nexport const ZRomulatorSystemsToken = Symbol(\"romulator-platforms-service\");\n\nexport interface IZRomulatorSystemsService {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>>;\n get(id: string): Promise<IZRomulatorSystem>;\n}\n\n@Injectable()\nexport class ZRomulatorSystemsService implements IZRomulatorSystemsService {\n public constructor(\n @Inject(ZFileSystemToken)\n private readonly _file: IZFileSystemService,\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>> {\n const {\n contents: { gamesFolder },\n } = await this._configs.get(ZRomulatorConfigId.Games);\n\n const folders = await this._file.search(\"*/\", {\n cwd: gamesFolder,\n });\n\n const systems = folders\n .map((folder) => folder.path)\n .map((path) => basename(path))\n .map((slug) => ZRomulatorSystemKnown.from(slug))\n .filter((system) => system != null)\n .map((system) => system.build());\n\n const sourceOptions = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields([\"id\", \"name\", \"short\"]))\n .build();\n\n const source = new ZDataSourceStatic<IZRomulatorSystem>(\n systems,\n sourceOptions,\n );\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n return new ZPageBuilder<IZRomulatorSystem>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get(id: string): Promise<IZRomulatorSystem> {\n const all = await this.list(new ZDataRequestBuilder().build());\n const system = find(all.data, (system) => system.id === id);\n\n if (!system) {\n throw new NotFoundException(`Unable to find system with id, ${id}.`);\n }\n\n return system;\n }\n}\n","import { Controller, Get, Inject, Param, Query } from \"@nestjs/common\";\nimport { ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport type { IZRomulatorSystemsService } from \"./systems-service.mjs\";\nimport { ZRomulatorSystemsToken } from \"./systems-service.mjs\";\n\n@Controller(\"systems\")\nexport class ZRomulatorSystemsController {\n public constructor(\n @Inject(ZRomulatorSystemsToken)\n private readonly _systems: IZRomulatorSystemsService,\n ) {}\n\n @Get()\n public list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorSystem>> {\n return this._systems.list(new ZDataRequestBuilder().query(query).build());\n }\n\n @ApiParam({\n type: \"string | number\",\n name: \"identification\",\n description: \"The id of the system\",\n })\n @Get(\":identification\")\n public get(@Param(\"identification\") identification: string) {\n return this._systems.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsController } from \"./systems-controller.mjs\";\nimport {\n ZRomulatorSystemsService,\n ZRomulatorSystemsToken,\n} from \"./systems-service.mjs\";\n\n@Module({\n imports: [ZRomulatorConfigsModule, ZFileSystemModule],\n controllers: [ZRomulatorSystemsController],\n providers: [\n { provide: ZRomulatorSystemsToken, useClass: ZRomulatorSystemsService },\n ],\n})\nexport class ZRomulatorSystemsModule {}\n","/* istanbul ignore file -- @preserve */\nimport { Module } from \"@nestjs/common\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsModule } from \"../systems/systems-module.mjs\";\n\n@Module({ imports: [ZRomulatorSystemsModule, ZRomulatorConfigsModule] })\nexport class ZRomulatorModule {}\n","import { NestFactory } from \"@nestjs/core\";\nimport { DocumentBuilder, SwaggerModule } from \"@nestjs/swagger\";\nimport { ZRomulatorModule } from \"./app/app-module.mjs\";\n\nconst PORT = 3000;\n\n(async function () {\n const app = await NestFactory.create(ZRomulatorModule);\n app.setGlobalPrefix(\"api\");\n app.enableCors();\n\n const config = new DocumentBuilder()\n .setTitle(\"Romulator API\")\n .setDescription(\"The Romulator API\")\n .setVersion(\"1\")\n .build();\n\n const document = () => SwaggerModule.createDocument(app, config);\n SwaggerModule.setup(\"api/docs\", app, document);\n\n await app.listen(PORT);\n})();\n"],"names":["ZRomulatorConfigUpdateDto","_define_property","contents","type","properties","message","ZDir","application","resolve","homedir","configs","ZRomulatorConfigKnown","all","games","build","media","create","id","file","ZRomulatorConfigBuilder","ZRomulatorConfigId","Games","name","description","avatar","metadata","ZRomulatorConfigGamesMetadata","Media","ZRomulatorConfigMediaMetadata","ZRomulatorConfigsToken","Symbol","ZRomulatorConfigsService","_logger","ZLoggerContext","list","req","page","size","msg","options","source","data","count","firstDefined","Infinity","log","ZLogEntryBuilder","info","ZDataSourceStaticOptionsBuilder","search","ZDataSearchFields","ZDataSourceStatic","retrieve","length","ZPageBuilder","get","config","buffer","json","e","result","_find","readFile","toString","JSON","parse","byteLength","createError","warning","copy","Promise","update","record","next","error","stringify","mkdir","dirname","recursive","writeFile","reject","InternalServerErrorException","find","c","NotFoundException","ZRomulatorConfigsController","_configs","request","ZDataRequestBuilder","query","identification","payload","ValidationPipe","transform","whitelist","skipMissingProperties","skipNullProperties","skipUndefinedProperties","ZRomulatorConfigsModule","imports","ZFileSystemModule","ZLoggerModule","controllers","providers","provide","useClass","exports","IS_SYSTEM","KnownSystem","_","__","descriptor","Reflect","defineMetadata","value","isKnownSystem","target","getMetadata","ZRomulatorSystemKnown","nes","ZRomulatorSystemBuilder","console","alias","generation","manufacturer","snes","n64","gc","wii","wiiu","switch","from","system","ZRomulatorSystemsToken","ZRomulatorSystemsService","_file","gamesFolder","folders","systems","sourceOptions","cwd","map","folder","path","basename","slug","filter","ZRomulatorSystemsController","_systems","ZRomulatorSystemsModule","ZRomulatorModule","PORT","app","document","NestFactory","setGlobalPrefix","enableCors","DocumentBuilder","setTitle","setDescription","setVersion","SwaggerModule","createDocument","setup","listen"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../src/config/config-update.mts","../src/dir/dir.ts","../src/config/config-known.mts","../src/config/configs-service.mts","../src/config/configs-controller.mts","../src/config/configs-module.mts","../src/systems/system-known.mts","../src/systems/systems-service.mts","../src/systems/systems-controller.mts","../src/systems/systems-module.mts","../src/app/app-module.mts","../src/main.mts"],"sourcesContent":["import { ApiProperty } from \"@nestjs/swagger\";\nimport { IsDefined, IsNotEmptyObject, IsObject } from \"class-validator\";\n\nexport class ZRomulatorConfigUpdateDto<\n T extends Record<string, unknown> = Record<string, unknown>,\n> {\n @ApiProperty({ type: \"object\", properties: {} })\n @IsDefined({ message: \"The contents of the config is required\" })\n @IsObject({ message: \"The contents of the config must be an object \" })\n @IsNotEmptyObject()\n contents: T;\n}\n","import { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nexport abstract class ZDir {\n public static application() {\n return resolve(homedir(), \".zthunworks\", \"romulator\");\n }\n\n public static configs() {\n return resolve(ZDir.application(), \"configs\");\n }\n}\n","import {\n ZRomulatorConfigBuilder,\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n ZRomulatorConfigMediaMetadata,\n} from \"@zthun/romulator-client\";\nimport { resolve } from \"node:path\";\nimport { ZDir } from \"../dir/dir.js\";\n\nexport abstract class ZRomulatorConfigKnown {\n public static all() {\n return [\n ZRomulatorConfigKnown.games().build(),\n ZRomulatorConfigKnown.media().build(),\n ];\n }\n\n private static create(id: ZRomulatorConfigId) {\n const file = resolve(ZDir.configs(), `${id}.json`);\n return new ZRomulatorConfigBuilder().id(id).file(file);\n }\n\n public static games() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Games)\n .name(\"Game Settings\")\n .description(\"Modify where your games are stored and related settings\")\n .avatar(\"gamepad\")\n .metadata(ZRomulatorConfigGamesMetadata.all());\n }\n\n public static media() {\n return ZRomulatorConfigKnown.create(ZRomulatorConfigId.Media)\n .name(\"Media Settings\")\n .description(\"Modify where media is stored and what media to retrieve\")\n .avatar(\"image\")\n .metadata(ZRomulatorConfigMediaMetadata.all());\n }\n}\n","import {\n Inject,\n Injectable,\n InternalServerErrorException,\n NotFoundException,\n} from \"@nestjs/common\";\nimport { createError, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport type { IZLogger } from \"@zthun/lumberjacky-log\";\nimport { ZLogEntryBuilder, ZLoggerContext } from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigBuilder } from \"@zthun/romulator-client\";\nimport type { IZRestfulGet, IZRestfulUpdate } from \"@zthun/webigail-rest\";\nimport { find } from \"lodash-es\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport { ZRomulatorConfigKnown } from \"./config-known.mjs\";\n\nexport const ZRomulatorConfigsToken = Symbol(\"configs\");\n\nexport interface IZRomulatorConfigsService\n extends IZRestfulUpdate<IZRomulatorConfig>,\n IZRestfulGet<IZRomulatorConfig> {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>>;\n}\n\n@Injectable()\nexport class ZRomulatorConfigsService implements IZRomulatorConfigsService {\n private _logger: IZLogger;\n\n public constructor(@Inject(ZLoggerToken) _logger: IZLogger) {\n this._logger = new ZLoggerContext(\"ZRomulatorConfigsService\", _logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorConfig>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving configs page, ${page}, with size, ${size}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const configs = ZRomulatorConfigKnown.all();\n const options = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields())\n .build();\n const source = new ZDataSourceStatic<IZRomulatorConfig>(configs, options);\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n msg = `Responding with ${data.length} configs out of ${count} total`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return new ZPageBuilder<IZRomulatorConfig>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get<T>(\n id: ZRomulatorConfigId,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this._find(id);\n let msg = `Attempting to read the file contents for config, ${id}.`;\n let contents: any = {};\n\n try {\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const buffer = await readFile(config.file);\n const json = buffer.toString(\"utf-8\");\n contents = JSON.parse(json);\n msg = `Finished reading config contents (${buffer.byteLength} bytes)`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n } catch (e) {\n msg = createError(e).message;\n this._logger.log(new ZLogEntryBuilder().warning().message(msg).build());\n }\n\n const result = new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(contents)\n .build();\n\n return Promise.resolve(result as Required<IZRomulatorConfig<T>>);\n }\n\n public async update<T>(\n id: ZRomulatorConfigId,\n record: Pick<IZRomulatorConfig, \"contents\">,\n ): Promise<Required<IZRomulatorConfig<T>>> {\n const config = await this.get<T>(id);\n\n let msg = `Updating config file, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const next = { ...config.contents, ...record.contents };\n const json = JSON.stringify(next);\n\n try {\n await mkdir(dirname(config.file), { recursive: true });\n await writeFile(config.file, json);\n return new ZRomulatorConfigBuilder()\n .copy(config)\n .contents(next)\n .build() as Required<IZRomulatorConfig<T>>;\n } catch (e) {\n const error = createError(e);\n msg = `Unable to write to, ${config.file}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n msg = error.message;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new InternalServerErrorException(error));\n }\n }\n\n private async _find(id: ZRomulatorConfigId): Promise<IZRomulatorConfig> {\n let msg = `Attempting to retrieve config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const configs = ZRomulatorConfigKnown.all();\n const config = find(configs, (c) => c.id === id);\n\n if (config == null) {\n msg = `Could not find config, ${id}`;\n this._logger.log(new ZLogEntryBuilder().error().message(msg).build());\n return Promise.reject(new NotFoundException(msg));\n }\n\n msg = `Config, ${id}, found`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n return config;\n }\n}\n","import {\n Body,\n Controller,\n Get,\n Inject,\n Param,\n Patch,\n Query,\n UsePipes,\n ValidationPipe,\n} from \"@nestjs/common\";\nimport { ApiBody, ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type {\n IZRomulatorConfig,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { ZRomulatorConfigUpdateDto } from \"./config-update.mjs\";\nimport type { IZRomulatorConfigsService } from \"./configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"./configs-service.mjs\";\n\n@Controller(\"configs\")\nexport class ZRomulatorConfigsController {\n public constructor(\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n ) {}\n\n @Get()\n public async list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorConfig>> {\n const request = new ZDataRequestBuilder().query(query).build();\n return this._configs.list(request);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @ApiBody({\n type: ZRomulatorConfigUpdateDto,\n })\n @Patch(\":identification\")\n @UsePipes(\n new ValidationPipe({\n transform: true,\n whitelist: true,\n skipMissingProperties: false,\n skipNullProperties: false,\n skipUndefinedProperties: false,\n }),\n )\n public async update(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n @Body() payload: ZRomulatorConfigUpdateDto,\n ): Promise<IZRomulatorConfig> {\n return this._configs.update(identification, payload);\n }\n\n @ApiParam({\n type: \"string\",\n name: \"identification\",\n description: \"The id of the config\",\n })\n @Get(\":identification\")\n public async get(\n @Param(\"identification\") identification: ZRomulatorConfigId,\n ): Promise<IZRomulatorConfig> {\n return await this._configs.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsController } from \"./configs-controller.mjs\";\nimport {\n ZRomulatorConfigsService,\n ZRomulatorConfigsToken,\n} from \"./configs-service.mjs\";\n\n@Module({\n imports: [ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorConfigsController],\n providers: [\n { provide: ZRomulatorConfigsToken, useClass: ZRomulatorConfigsService },\n ],\n exports: [ZRomulatorConfigsToken],\n})\nexport class ZRomulatorConfigsModule {}\n","import { ZRomulatorSystemBuilder } from \"@zthun/romulator-client\";\nimport \"reflect-metadata\";\n\nconst IS_SYSTEM = \"z-romulator-is-system-method\";\n\nfunction KnownSystem(): MethodDecorator {\n return (_, __, descriptor) => {\n Reflect.defineMetadata(IS_SYSTEM, true, descriptor.value!);\n };\n}\n\nfunction isKnownSystem(target: any): target is () => ZRomulatorSystemBuilder {\n return target != null && Reflect.getMetadata(IS_SYSTEM, target) === true;\n}\n\n/**\n * A helper factory class for creating supported systems.\n */\nexport abstract class ZRomulatorSystemKnown {\n /**\n * Creates a system that represents the Nintendo\n * Entertainment System (NES).\n *\n * @returns\n * A {@link ZRomulatorSystemBuilder} instance that has\n * built the nes.\n */\n @KnownSystem()\n public static nes() {\n return new ZRomulatorSystemBuilder()\n .id(\"nes\")\n .console()\n .name(\"Nintendo Entertainment System\")\n .alias(\"Famicom\")\n .alias(\"NES\")\n .alias(\"Hyundai Comboy\")\n .alias(\"Samurai Electronic TV Game System\")\n .alias(\"Dendy\")\n .generation(3)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Super\n * Nintendo Entertainment System (SNES).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static snes() {\n return new ZRomulatorSystemBuilder()\n .id(\"snes\")\n .console()\n .name(\"Super Nintendo Entertainment System\")\n .alias(\"Super Nintendo\")\n .alias(\"Super Famicom\")\n .alias(\"SNES\")\n .alias(\"Super NES\")\n .alias(\"Super Comboy\")\n .generation(4)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * 64 (N64).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static n64() {\n return new ZRomulatorSystemBuilder()\n .id(\"n64\")\n .console()\n .name(\"Nintendo 64\")\n .alias(\"N64\")\n .alias(\"Ultra 64\")\n .alias(\"Hyundai Comboy 64\")\n .generation(5)\n .manufacturer(\"Nintendo\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * GameCube (GC).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static gc() {\n return new ZRomulatorSystemBuilder()\n .id(\"gc\")\n .console()\n .name(\"Nintendo GameCube\")\n .alias(\"GameCube\")\n .alias(\"Dolphin\")\n .generation(6)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii (Wii).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wii() {\n return new ZRomulatorSystemBuilder()\n .id(\"wii\")\n .console()\n .name(\"Nintendo Wii\")\n .alias(\"Wii\")\n .alias(\"Revolution\")\n .generation(7)\n .manufacturer(\"Foxconn\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Wii U (WiiU).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static wiiu() {\n return new ZRomulatorSystemBuilder()\n .id(\"wiiu\")\n .console()\n .name(\"Nintendo Wii U\")\n .alias(\"WiiU\")\n .alias(\"Project Cafe\")\n .generation(8)\n .manufacturer(\"Nintendo\")\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Mitsumi\");\n }\n\n /**\n * Creates a system that represents the Nintendo\n * Switch (Switch).\n *\n * @returns\n * This instance.\n */\n @KnownSystem()\n public static switch() {\n return new ZRomulatorSystemBuilder()\n .id(\"switch\")\n .console()\n .name(\"Nintendo Switch\")\n .alias(\"Switch\")\n .alias(\"NX\")\n .alias(\"HAC\")\n .alias(\"Odin\")\n .generation(9)\n .manufacturer(\"Foxconn\")\n .manufacturer(\"Hosiden\");\n }\n\n /**\n * Creates a system from an id slug.\n *\n * @param id -\n * The id slug of the system to create.\n *\n * @return\n * The system, or null if the id is not known.\n */\n public static from(id: string): ZRomulatorSystemBuilder | null {\n const system = ZRomulatorSystemKnown[id];\n\n if (isKnownSystem(system)) {\n return system();\n }\n\n return null;\n }\n}\n","import { Inject, Injectable, NotFoundException } from \"@nestjs/common\";\nimport type { IZFileSystemService } from \"@zthun/crumbtrail-fs\";\nimport { ZFileSystemToken } from \"@zthun/crumbtrail-nest\";\nimport { detokenize, firstDefined } from \"@zthun/helpful-fn\";\nimport type { IZDataRequest, IZPage } from \"@zthun/helpful-query\";\nimport {\n ZDataRequestBuilder,\n ZDataSearchFields,\n ZDataSourceStatic,\n ZDataSourceStaticOptionsBuilder,\n ZPageBuilder,\n} from \"@zthun/helpful-query\";\nimport {\n ZLogEntryBuilder,\n ZLoggerContext,\n type IZLogger,\n} from \"@zthun/lumberjacky-log\";\nimport { ZLoggerToken } from \"@zthun/lumberjacky-nest\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport {\n ZRomulatorConfigGamesMetadata,\n ZRomulatorConfigId,\n} from \"@zthun/romulator-client\";\nimport { find } from \"lodash-es\";\nimport { basename } from \"node:path\";\nimport type { IZRomulatorConfigsService } from \"../config/configs-service.mjs\";\nimport { ZRomulatorConfigsToken } from \"../config/configs-service.mjs\";\nimport { ZRomulatorSystemKnown } from \"./system-known.mjs\";\n\nexport const ZRomulatorSystemsToken = Symbol(\"romulator-platforms-service\");\n\nexport interface IZRomulatorSystemsService {\n list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>>;\n get(id: string): Promise<IZRomulatorSystem>;\n}\n\n@Injectable()\nexport class ZRomulatorSystemsService implements IZRomulatorSystemsService {\n private _logger: IZLogger;\n\n public constructor(\n @Inject(ZFileSystemToken)\n private readonly _file: IZFileSystemService,\n @Inject(ZRomulatorConfigsToken)\n private readonly _configs: IZRomulatorConfigsService,\n @Inject(ZLoggerToken) readonly logger: IZLogger,\n ) {\n this._logger = new ZLoggerContext(\"ZRomulatorSystemsService\", logger);\n }\n\n public async list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>> {\n const page = firstDefined(1, req.page);\n const size = firstDefined(Infinity, req.size);\n let msg = `Retrieving systems page, ${page}, with size, ${size}.`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const { contents } = await this._configs.get(ZRomulatorConfigId.Games);\n const { gamesFolder } = contents;\n const { fallback } = ZRomulatorConfigGamesMetadata.gamesFolder();\n const _folder = firstDefined(fallback, gamesFolder);\n\n const cwd = detokenize(_folder, process.env);\n msg = `Looking for systems in ${cwd}`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n const searchOptions = { cwd };\n const folders = await this._file.search(\"*/\", searchOptions);\n\n const systems = folders\n .map((folder) => folder.path)\n .map((path) => basename(path))\n .map((slug) => ZRomulatorSystemKnown.from(slug))\n .filter((system) => system != null)\n .map((system) => system.build());\n\n msg = `Found ${systems.length} systems`;\n this._logger.log(new ZLogEntryBuilder().info().message(msg).build());\n\n const sourceOptions = new ZDataSourceStaticOptionsBuilder()\n .search(new ZDataSearchFields([\"id\", \"name\", \"short\"]))\n .build();\n\n const source = new ZDataSourceStatic<IZRomulatorSystem>(\n systems,\n sourceOptions,\n );\n\n const data = await source.retrieve(req);\n const count = await source.count(req);\n\n return new ZPageBuilder<IZRomulatorSystem>()\n .data(data)\n .count(count)\n .build();\n }\n\n public async get(id: string): Promise<IZRomulatorSystem> {\n const all = await this.list(new ZDataRequestBuilder().build());\n const system = find(all.data, (system) => system.id === id);\n\n if (!system) {\n throw new NotFoundException(`Unable to find system with id, ${id}.`);\n }\n\n return system;\n }\n}\n","import { Controller, Get, Inject, Param, Query } from \"@nestjs/common\";\nimport { ApiParam } from \"@nestjs/swagger\";\nimport type { IZDataRequestQuery, IZPage } from \"@zthun/helpful-query\";\nimport { ZDataRequestBuilder } from \"@zthun/helpful-query\";\nimport type { IZRomulatorSystem } from \"@zthun/romulator-client\";\nimport type { IZRomulatorSystemsService } from \"./systems-service.mjs\";\nimport { ZRomulatorSystemsToken } from \"./systems-service.mjs\";\n\n@Controller(\"systems\")\nexport class ZRomulatorSystemsController {\n public constructor(\n @Inject(ZRomulatorSystemsToken)\n private readonly _systems: IZRomulatorSystemsService,\n ) {}\n\n @Get()\n public list(\n @Query() query: IZDataRequestQuery,\n ): Promise<IZPage<IZRomulatorSystem>> {\n return this._systems.list(new ZDataRequestBuilder().query(query).build());\n }\n\n @ApiParam({\n type: \"string | number\",\n name: \"identification\",\n description: \"The id of the system\",\n })\n @Get(\":identification\")\n public get(@Param(\"identification\") identification: string) {\n return this._systems.get(identification);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { ZFileSystemModule } from \"@zthun/crumbtrail-nest\";\nimport { ZLoggerModule } from \"@zthun/lumberjacky-nest\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsController } from \"./systems-controller.mjs\";\nimport {\n ZRomulatorSystemsService,\n ZRomulatorSystemsToken,\n} from \"./systems-service.mjs\";\n\n@Module({\n imports: [ZRomulatorConfigsModule, ZFileSystemModule, ZLoggerModule],\n controllers: [ZRomulatorSystemsController],\n providers: [\n { provide: ZRomulatorSystemsToken, useClass: ZRomulatorSystemsService },\n ],\n})\nexport class ZRomulatorSystemsModule {}\n","/* istanbul ignore file -- @preserve */\nimport { Module } from \"@nestjs/common\";\nimport { ZRomulatorConfigsModule } from \"../config/configs-module.mjs\";\nimport { ZRomulatorSystemsModule } from \"../systems/systems-module.mjs\";\n\n@Module({ imports: [ZRomulatorSystemsModule, ZRomulatorConfigsModule] })\nexport class ZRomulatorModule {}\n","import { NestFactory } from \"@nestjs/core\";\nimport { DocumentBuilder, SwaggerModule } from \"@nestjs/swagger\";\nimport { ZRomulatorModule } from \"./app/app-module.mjs\";\n\nconst PORT = 3000;\n\n(async function () {\n const app = await NestFactory.create(ZRomulatorModule);\n app.setGlobalPrefix(\"api\");\n app.enableCors();\n\n const config = new DocumentBuilder()\n .setTitle(\"Romulator API\")\n .setDescription(\"The Romulator API\")\n .setVersion(\"1\")\n .build();\n\n const document = () => SwaggerModule.createDocument(app, config);\n SwaggerModule.setup(\"api/docs\", app, document);\n\n await app.listen(PORT);\n})();\n"],"names":["ZRomulatorConfigUpdateDto","_define_property","contents","type","properties","message","ZDir","application","resolve","homedir","configs","ZRomulatorConfigKnown","all","games","build","media","create","id","file","ZRomulatorConfigBuilder","ZRomulatorConfigId","Games","name","description","avatar","metadata","ZRomulatorConfigGamesMetadata","Media","ZRomulatorConfigMediaMetadata","ZRomulatorConfigsToken","Symbol","ZRomulatorConfigsService","_logger","ZLoggerContext","list","req","page","size","msg","options","source","data","count","firstDefined","Infinity","log","ZLogEntryBuilder","info","ZDataSourceStaticOptionsBuilder","search","ZDataSearchFields","ZDataSourceStatic","retrieve","length","ZPageBuilder","get","config","buffer","json","e","result","_find","readFile","toString","JSON","parse","byteLength","createError","warning","copy","Promise","update","record","next","error","stringify","mkdir","dirname","recursive","writeFile","reject","InternalServerErrorException","find","c","NotFoundException","ZRomulatorConfigsController","_configs","request","ZDataRequestBuilder","query","identification","payload","ValidationPipe","transform","whitelist","skipMissingProperties","skipNullProperties","skipUndefinedProperties","ZRomulatorConfigsModule","imports","ZFileSystemModule","ZLoggerModule","controllers","providers","provide","useClass","exports","IS_SYSTEM","KnownSystem","_","__","descriptor","Reflect","defineMetadata","value","isKnownSystem","target","getMetadata","ZRomulatorSystemKnown","nes","ZRomulatorSystemBuilder","console","alias","generation","manufacturer","snes","n64","gc","wii","wiiu","switch","from","system","ZRomulatorSystemsToken","ZRomulatorSystemsService","_file","logger","gamesFolder","fallback","_folder","cwd","searchOptions","folders","systems","sourceOptions","detokenize","process","env","map","folder","path","basename","slug","filter","ZRomulatorSystemsController","_systems","ZRomulatorSystemsModule","ZRomulatorModule","PORT","app","document","NestFactory","setGlobalPrefix","enableCors","DocumentBuilder","setTitle","setDescription","setVersion","SwaggerModule","createDocument","setup","listen"],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IZFileSystemService } from '@zthun/crumbtrail-fs';
|
|
2
2
|
import { IZDataRequest, IZPage } from '@zthun/helpful-query';
|
|
3
|
+
import { IZLogger } from '@zthun/lumberjacky-log';
|
|
3
4
|
import { IZRomulatorSystem } from '@zthun/romulator-client';
|
|
4
5
|
import { IZRomulatorConfigsService } from '../config/configs-service.mjs';
|
|
5
6
|
export declare const ZRomulatorSystemsToken: unique symbol;
|
|
@@ -10,7 +11,9 @@ export interface IZRomulatorSystemsService {
|
|
|
10
11
|
export declare class ZRomulatorSystemsService implements IZRomulatorSystemsService {
|
|
11
12
|
private readonly _file;
|
|
12
13
|
private readonly _configs;
|
|
13
|
-
|
|
14
|
+
readonly logger: IZLogger;
|
|
15
|
+
private _logger;
|
|
16
|
+
constructor(_file: IZFileSystemService, _configs: IZRomulatorConfigsService, logger: IZLogger);
|
|
14
17
|
list(req: IZDataRequest): Promise<IZPage<IZRomulatorSystem>>;
|
|
15
18
|
get(id: string): Promise<IZRomulatorSystem>;
|
|
16
19
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zthun/romulator-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A service for your rom directory for managing media and the directory structure.",
|
|
5
5
|
"author": "Anthony Bonta",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"@nestjs/swagger": "^11.2.0",
|
|
27
27
|
"@zthun/crumbtrail-fs": "^2.0.1",
|
|
28
28
|
"@zthun/crumbtrail-nest": "^2.0.1",
|
|
29
|
-
"@zthun/helpful-fn": "^9.
|
|
30
|
-
"@zthun/helpful-query": "^9.
|
|
29
|
+
"@zthun/helpful-fn": "^9.4.0",
|
|
30
|
+
"@zthun/helpful-query": "^9.4.0",
|
|
31
31
|
"@zthun/lumberjacky-log": "^3.0.1",
|
|
32
32
|
"@zthun/lumberjacky-nest": "^3.0.1",
|
|
33
|
-
"@zthun/romulator-client": "^1.
|
|
33
|
+
"@zthun/romulator-client": "^1.2.0",
|
|
34
34
|
"@zthun/webigail-http": "^4.0.3",
|
|
35
35
|
"@zthun/webigail-rest": "^4.0.3",
|
|
36
36
|
"@zthun/webigail-url": "^4.0.3",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"dist"
|
|
57
57
|
],
|
|
58
58
|
"sideEffects": false,
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "8e51e1660617d8aea4be5cd3c2d666e2bf673f52"
|
|
60
60
|
}
|