@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 CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import "../dist/main.mjs";
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 _ref, gamesFolder, folders, systems, sourceOptions, source, data, count;
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
- _ref = _state.sent(), gamesFolder = _ref.contents.gamesFolder;
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 _ref, gamesFolder, folders, systems, sourceOptions, source, data, count;
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
- _ref = _state.sent(), gamesFolder = _ref.contents.gamesFolder;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAA,yBAAMA,GAAN,SAAMA,yBAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,yBAAAA,CAAAA;AAGX,IAAAC,kBAAA,CAAA,IAAA,EAIAC,YAJA,MAAA,CAAA;AAKD,CAAA;;;QALgBC,IAAM,EAAA,QAAA;AAAUC,QAAAA,UAAAA,EAAY;;;QAC9BC,OAAS,EAAA;;;QACVA,OAAS,EAAA;;;;;;;;;;;;;;;;;;;;;;;;ACLhB,IAAA,IAAA,iBAAA,WAAA;AAAeC,IAAAA,SAAAA,IAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA;;AAAAA,IAAAA,eAAAA,CAAAA,IAAAA,EAAAA,IAAAA,EAAAA;;YACNC,GAAAA,EAAAA,aAAAA;mBAAd,SAAcA,WAAAA,GAAAA;gBACZ,OAAOC,OAAAA,CAAQC,WAAW,aAAe,EAAA,WAAA,CAAA;AAC3C;;;YAEcC,GAAAA,EAAAA,SAAAA;mBAAd,SAAcA,OAAAA,GAAAA;AACZ,gBAAA,OAAOF,OAAQF,CANGA,IAMEC,CAAAA,WAAW,EAAI,EAAA,SAAA,CAAA;AACrC;;;AAPoBD,IAAAA,OAAAA,IAAAA;AAQrB,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;ACFM,IAAA,qBAAA,iBAAA,WAAA;AAAeK,IAAAA,SAAAA,qBAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,qBAAAA,CAAAA;;AAAAA,IAAAA,eAAAA,CAAAA,qBAAAA,EAAAA,IAAAA,EAAAA;;YACNC,GAAAA,EAAAA,KAAAA;mBAAd,SAAcA,GAAAA,GAAAA;gBACZ,OAAO;oBAFWD,qBAGME,CAAAA,KAAK,GAAGC,KAAK,EAAA;oBAHnBH,qBAIMI,CAAAA,KAAK,GAAGD,KAAK;AACpC,iBAAA;AACH;;;YAEeE,GAAAA,EAAAA,QAAAA;AAAf,YAAA,KAAA,EAAA,SAAeA,OAAOC,EAAsB,EAAA;gBAC1C,IAAMC,IAAAA,GAAOV,QAAQF,IAAKI,CAAAA,OAAO,IAAI,EAAC,CAAK,OAAHO,EAAG,EAAA,OAAA,CAAA,CAAA;AAC3C,gBAAA,OAAO,IAAIE,uBAA0BF,EAAAA,CAAAA,EAAE,CAACA,EAAAA,CAAAA,CAAIC,IAAI,CAACA,IAAAA,CAAAA;AACnD;;;YAEcL,GAAAA,EAAAA,OAAAA;mBAAd,SAAcA,KAAAA,GAAAA;AACZ,gBAAA,OAAOF,qBAAsBK,CAAAA,MAAM,CAACI,oBAAmBC,CAAAA,KAAK,EACzDC,IAAI,CAAC,iBACLC,WAAW,CAAC,2DACZC,MAAM,CAAC,WACPC,QAAQ,CAACC,8BAA8Bd,GAAG,EAAA,CAAA;AAC/C;;;YAEcG,GAAAA,EAAAA,OAAAA;mBAAd,SAAcA,KAAAA,GAAAA;AACZ,gBAAA,OAAOJ,qBAAsBK,CAAAA,MAAM,CAACI,oBAAmBO,CAAAA,KAAK,EACzDL,IAAI,CAAC,kBACLC,WAAW,CAAC,2DACZC,MAAM,CAAC,SACPC,QAAQ,CAACG,8BAA8BhB,GAAG,EAAA,CAAA;AAC/C;;;AA3BoBD,IAAAA,OAAAA,qBAAAA;AA4BrB,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTM,IAAMkB,sBAAyBC,GAAAA,MAAAA,CAAO,SAAW,CAAA;AASjD,IAAA,wBAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,wBAAAA,CAGQ,OAAuC,EAAA;AAH/CA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,wBAAAA,CAAAA;AACX,QAAA9B,kBAAA,CAAA,IAAA,EAAQ+B,WAAR,MAAA,CAAA;AAGE,QAAA,IAAI,CAACA,OAAO,GAAG,IAAIC,eAAe,0BAA4BD,EAAAA,OAAAA,CAAAA;;AAJrDD,IAAAA,eAAAA,CAAAA,wBAAAA,EAAAA;;YAOEG,GAAAA,EAAAA,MAAAA;AAAb,YAAA,KAAA,EAAA,SAAaA,KAAKC,GAAkB,EAAA;;AAC5BC,oBAAAA,IAAAA,IAAAA,EACAC,IACFC,EAAAA,GAAAA,EAGE5B,OACA6B,EAAAA,OAAAA,EAGAC,QAEAC,IACAC,EAAAA,KAAAA;;;;gCAZAN,IAAOO,GAAAA,YAAAA,CAAa,CAAGR,EAAAA,GAAAA,CAAIC,IAAI,CAAA;gCAC/BC,IAAOM,GAAAA,YAAAA,CAAaC,QAAUT,EAAAA,GAAAA,CAAIE,IAAI,CAAA;AACxCC,gCAAAA,GAAAA,GAAM,2BAAC,CAA+CD,MAApBD,CAAAA,IAAAA,EAAK,iBAAoB,MAALC,CAAAA,IAAAA,CAAAA;AAC1D,gCAAA,IAAI,CAACL,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAE3DJ,gCAAAA,OAAAA,GAAUC,sBAAsBC,GAAG,EAAA;AACnC2B,gCAAAA,OAAAA,GAAU,IAAIS,+BACjBC,EAAAA,CAAAA,MAAM,CAAC,IAAIC,qBACXpC,KAAK,EAAA;gCACF0B,MAAS,GAAA,IAAIW,kBAAqCzC,OAAS6B,EAAAA,OAAAA,CAAAA;AAEpD,gCAAA,OAAA;;AAAMC,oCAAAA,MAAAA,CAAOY,QAAQ,CAACjB,GAAAA;;;gCAA7BM,IAAO,GAAA,MAAA,CAAA,IAAA,EAAA;AACC,gCAAA,OAAA;;AAAMD,oCAAAA,MAAAA,CAAOE,KAAK,CAACP,GAAAA;;;gCAA3BO,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA;gCAEdJ,GAAM,GAAC,mBAAgDI,MAA9BD,CAAAA,IAAAA,CAAKY,MAAM,EAAC,kBAAA,CAAA,CAAwB,OAANX,KAAM,EAAA,QAAA,CAAA;AAC7D,gCAAA,IAAI,CAACV,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAEjE,gCAAA,OAAA;;AAAO,oCAAA,IAAIwC,eACRb,IAAI,CAACA,MACLC,KAAK,CAACA,OACN5B,KAAK;;;;AACV,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAEayC,GAAAA,EAAAA,KAAAA;AAAb,YAAA,KAAA,EAAA,SAAaA,IACXtC,EAAsB,EAAA;;AAEhBuC,oBAAAA,IAAAA,MAAAA,EACFlB,GACApC,EAAAA,QAAAA,EAIIuD,MACAC,EAAAA,IAAAA,EAICC,CAKHC,EAAAA,MAAAA;;;;AAhBS,gCAAA,OAAA;;oCAAM,IAAI,CAACC,KAAK,CAAC5C,EAAAA;;;gCAA1BuC,MAAS,GAAA,MAAA,CAAA,IAAA,EAAA;gCACXlB,GAAM,GAAC,mDAAsD,CAAA,MAAA,CAAHrB,EAAG,EAAA,GAAA,CAAA;AAC7Df,gCAAAA,QAAAA,GAAgB,EAAC;;;;;;;;;AAGnB,gCAAA,IAAI,CAAC8B,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAClD,gCAAA,OAAA;;AAAMgD,oCAAAA,QAAAA,CAASN,OAAOtC,IAAI;;;gCAAnCuC,MAAS,GAAA,MAAA,CAAA,IAAA,EAAA;gCACTC,IAAOD,GAAAA,MAAAA,CAAOM,QAAQ,CAAC,OAAA,CAAA;gCAC7B7D,QAAW8D,GAAAA,IAAAA,CAAKC,KAAK,CAACP,IAAAA,CAAAA;AACtBpB,gCAAAA,GAAAA,GAAM,oCAAC,CAAsD,MAAlBmB,CAAAA,MAAAA,CAAOS,UAAU,EAAC,SAAA,CAAA;AAC7D,gCAAA,IAAI,CAAClC,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;;;;;;AAC1D6C,gCAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA;gCACPrB,GAAM6B,GAAAA,WAAAA,CAAYR,GAAGtD,OAAO;AAC5B,gCAAA,IAAI,CAAC2B,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBsB,EAAAA,CAAAA,OAAO,EAAG/D,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;;;;;;gCAGhE8C,MAAS,GAAA,IAAIzC,0BAChBkD,IAAI,CAACb,QACLtD,QAAQ,CAACA,UACTY,KAAK,EAAA;AAER,gCAAA,OAAA;;AAAOwD,oCAAAA,OAAAA,CAAQ9D,OAAO,CAACoD,MAAAA;;;;AACzB,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAEaW,GAAAA,EAAAA,QAAAA;mBAAb,SAAaA,MAAAA,CACXtD,EAAsB,EACtBuD,MAA2C,EAAA;;wBAErChB,MAEFlB,EAAAA,GAAAA,EAGEmC,IACAf,EAAAA,IAAAA,EASGC,CACDe,EAAAA,KAAAA;;;;AAhBO,gCAAA,OAAA;;oCAAM,IAAI,CAACnB,GAAG,CAAItC,EAAAA;;;gCAA3BuC,MAAS,GAAA,MAAA,CAAA,IAAA,EAAA;gCAEXlB,GAAM,GAAC,yBAA2B,MAAHrB,CAAAA,EAAAA,CAAAA;AACnC,gCAAA,IAAI,CAACe,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAE3D2D,gCAAAA,IAAAA,GAAO,cAAKjB,CAAAA,EAAAA,EAAAA,MAAAA,CAAOtD,QAAQ,EAAKsE,OAAOtE,QAAQ,CAAA;gCAC/CwD,IAAOM,GAAAA,IAAAA,CAAKW,SAAS,CAACF,IAAAA,CAAAA;;;;;;;;;AAG1B,gCAAA,OAAA;;oCAAMG,KAAMC,CAAAA,OAAAA,CAAQrB,MAAOtC,CAAAA,IAAI,CAAG,EAAA;wCAAE4D,SAAW,EAAA;AAAK,qCAAA;;;AAApD,gCAAA,MAAA,CAAA,IAAA,EAAA;AACA,gCAAA,OAAA;;oCAAMC,SAAUvB,CAAAA,MAAAA,CAAOtC,IAAI,EAAEwC,IAAAA;;;AAA7B,gCAAA,MAAA,CAAA,IAAA,EAAA;AACA,gCAAA,OAAA;;AAAO,oCAAA,IAAIvC,0BACRkD,IAAI,CAACb,QACLtD,QAAQ,CAACuE,MACT3D,KAAK;;;AACD6C,gCAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA;AACDe,gCAAAA,KAAAA,GAAQP,WAAYR,CAAAA,CAAAA,CAAAA;AAC1BrB,gCAAAA,GAAAA,GAAM,sBAAC,CAAkC,MAAZkB,CAAAA,MAAAA,CAAOtC,IAAI,CAAA;AACxC,gCAAA,IAAI,CAACc,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmB4B,EAAAA,CAAAA,KAAK,EAAGrE,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAClEwB,gCAAAA,GAAAA,GAAMoC,MAAMrE,OAAO;AACnB,gCAAA,IAAI,CAAC2B,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmB4B,EAAAA,CAAAA,KAAK,EAAGrE,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAClE,gCAAA,OAAA;;oCAAOwD,OAAQU,CAAAA,MAAM,CAAC,IAAIC,4BAA6BP,CAAAA,KAAAA,CAAAA;;;;;;;;AAE3D,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAEcb,GAAAA,EAAAA,OAAAA;AAAd,YAAA,KAAA,EAAA,SAAcA,MAAM5C,EAAsB,EAAA;;AACpCqB,oBAAAA,IAAAA,GAAAA,EAEE5B,OACA8C,EAAAA,MAAAA;;wBAHFlB,GAAM,GAAC,kCAAoC,MAAHrB,CAAAA,EAAAA,CAAAA;AAC5C,wBAAA,IAAI,CAACe,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAC3DJ,wBAAAA,OAAAA,GAAUC,sBAAsBC,GAAG,EAAA;wBACnC4C,MAAS0B,GAAAA,IAAAA,CAAKxE,SAAS,SAACyE,CAAAA,EAAAA;AAAMA,4BAAAA,OAAAA,CAAAA,CAAElE,EAAE,KAAKA,EAAAA;;AAE7C,wBAAA,IAAIuC,UAAU,IAAM,EAAA;4BAClBlB,GAAM,GAAC,0BAA4B,MAAHrB,CAAAA,EAAAA,CAAAA;AAChC,4BAAA,IAAI,CAACe,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmB4B,EAAAA,CAAAA,KAAK,EAAGrE,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAClE,4BAAA,OAAA;;gCAAOwD,OAAQU,CAAAA,MAAM,CAAC,IAAII,iBAAkB9C,CAAAA,GAAAA,CAAAA;;AAC9C;wBAEAA,GAAM,GAAC,UAAa,CAAA,MAAA,CAAHrB,EAAG,EAAA,SAAA,CAAA;AACpB,wBAAA,IAAI,CAACe,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAEjE,wBAAA,OAAA;;AAAO0C,4BAAAA;;;AACT,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;AAvGWzB,IAAAA,OAAAA,wBAAAA;AAwGZ,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtHM,IAAA,2BAAA,iBAAA,WAAA;AAAMsD,IAAAA,SAAAA,2BAAAA,CAET,QACoD,EAAA;AAH3CA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,2BAAAA,CAAAA;;aAGQC,QAAAA,GAAAA,QAAAA;;AAHRD,IAAAA,eAAAA,CAAAA,2BAAAA,EAAAA;;YAOEnD,GAAAA,EAAAA,MAAAA;mBADb,SACaA,IAAAA,CACX,KAAkC,EAAA;;AAE5BqD,oBAAAA,IAAAA,OAAAA;;AAAAA,wBAAAA,OAAAA,GAAU,IAAIC,mBAAAA,EAAAA,CAAsBC,KAAK,CAACA,OAAO3E,KAAK,EAAA;AAC5D,wBAAA,OAAA;;AAAO,4BAAA,IAAI,CAACwE,QAAQ,CAACpD,IAAI,CAACqD,OAAAA;;;AAC5B,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAoBahB,GAAAA,EAAAA,QAAAA;AAlBb,YAAA,KAAA,EAAA,SAkBaA,MACX,CAAyBmB,cAAkC,EAC3D,OAA0C,EAAA;;;AAE1C,wBAAA,OAAA;;AAAO,4BAAA,IAAI,CAACJ,QAAQ,CAACf,MAAM,CAACmB,cAAgBC,EAAAA,OAAAA;;;AAC9C,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAQapC,GAAAA,EAAAA,KAAAA;mBANb,SAMaA,GAAAA,CACX,cAA2D,EAAA;;;;;AAEpD,gCAAA,OAAA;;AAAM,oCAAA,IAAI,CAAC+B,QAAQ,CAAC/B,GAAG,CAACmC,cAAAA;;;AAA/B,gCAAA,OAAA;;AAAO,oCAAA,MAAA,CAAA,IAAA;;;;AACT,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;AAjDWL,IAAAA,OAAAA,2BAAAA;AAkDZ,CAAA,EAAA;;;;;;;;;;;;QAnCGlF,IAAM,EAAA,QAAA;QACNmB,IAAM,EAAA,gBAAA;QACNC,WAAa,EAAA;;;QAGbpB,IAAMH,EAAAA;;;iBAIF4F,cAAe,CAAA;QACjBC,SAAW,EAAA,IAAA;QACXC,SAAW,EAAA,IAAA;QACXC,qBAAuB,EAAA,KAAA;QACvBC,kBAAoB,EAAA,KAAA;QACpBC,uBAAyB,EAAA;AAC3B,KAAA,CAAA,CAAA;;;;;;;;;;;;QAUA9F,IAAM,EAAA,QAAA;QACNmB,IAAM,EAAA,gBAAA;QACNC,WAAa,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDV,IAAA,uBAAM2E,GAAN,SAAMA,uBAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,uBAAAA,CAAAA;AAA0B,CAAA;;;QAPrCC,OAAS,EAAA;AAACC,YAAAA,iBAAAA;AAAmBC,YAAAA;AAAc,SAAA;QAC3CC,WAAa,EAAA;AAACjB,YAAAA;AAA4B,SAAA;QAC1CkB,SAAW,EAAA;AACT,YAAA;gBAAEC,OAAS3E,EAAAA,sBAAAA;gBAAwB4E,QAAU1E,EAAAA;AAAyB;AACvE,SAAA;QACD2E,OAAS,EAAA;AAAC7E,YAAAA;AAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZnC,IAAM8E,SAAY,GAAA,8BAAA;AAElB,SAASC,WAAAA,GAAAA;IACP,OAAO,SAACC,GAAGC,EAAIC,EAAAA,UAAAA,EAAAA;AACbC,QAAAA,OAAAA,CAAQC,cAAc,CAACN,SAAW,EAAA,IAAA,EAAMI,WAAWG,KAAK,CAAA;AAC1D,KAAA;AACF;AAEA,SAASC,cAAcC,MAAW,EAAA;AAChC,IAAA,OAAOA,UAAU,IAAQJ,IAAAA,OAAAA,CAAQK,WAAW,CAACV,WAAWS,MAAY,CAAA,KAAA,IAAA;AACtE;AAEA;;IAGO,IAAeE,qBAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,qBAAAA,GAAAA;AAAAA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,qBAAAA,CAAAA;;AAAAA,IAAAA,eAAAA,CAAAA,qBAAAA,EAAAA,IAAAA,EAAAA;;YAUNC,GAAAA,EAAAA,KAAAA;;;;;;;;AAFb,MACD,SACcA,GAAAA,GAAAA;AACZ,gBAAA,OAAO,IAAIC,uBAAAA,EAAAA,CACRvG,EAAE,CAAC,KACHwG,CAAAA,CAAAA,OAAO,EACPnG,CAAAA,IAAI,CAAC,+BAAA,CAAA,CACLoG,KAAK,CAAC,SACNA,CAAAA,CAAAA,KAAK,CAAC,KAAA,CAAA,CACNA,KAAK,CAAC,gBACNA,CAAAA,CAAAA,KAAK,CAAC,mCAAA,CAAA,CACNA,KAAK,CAAC,OACNC,CAAAA,CAAAA,UAAU,CAAC,CAAA,CAAA,CACXC,YAAY,CAAC,UAAA,CAAA;AAClB;;;YAUcC,GAAAA,EAAAA,MAAAA;;;;;;;AAFb,MACD,SACcA,IAAAA,GAAAA;AACZ,gBAAA,OAAO,IAAIL,uBAAAA,EAAAA,CACRvG,EAAE,CAAC,MACHwG,CAAAA,CAAAA,OAAO,EACPnG,CAAAA,IAAI,CAAC,qCAAA,CAAA,CACLoG,KAAK,CAAC,gBACNA,CAAAA,CAAAA,KAAK,CAAC,eAAA,CAAA,CACNA,KAAK,CAAC,MACNA,CAAAA,CAAAA,KAAK,CAAC,WAAA,CAAA,CACNA,KAAK,CAAC,cACNC,CAAAA,CAAAA,UAAU,CAAC,CAAA,CAAA,CACXC,YAAY,CAAC,UAAA,CAAA;AAClB;;;YAUcE,GAAAA,EAAAA,KAAAA;;;;;;;AAFb,MACD,SACcA,GAAAA,GAAAA;gBACZ,OAAO,IAAIN,0BACRvG,EAAE,CAAC,OACHwG,OAAO,EAAA,CACPnG,IAAI,CAAC,aACLoG,CAAAA,CAAAA,KAAK,CAAC,KACNA,CAAAA,CAAAA,KAAK,CAAC,UAAA,CAAA,CACNA,KAAK,CAAC,qBACNC,UAAU,CAAC,CACXC,CAAAA,CAAAA,YAAY,CAAC,UAAA,CAAA;AAClB;;;YAUcG,GAAAA,EAAAA,IAAAA;;;;;;;AAFb,MACD,SACcA,EAAAA,GAAAA;gBACZ,OAAO,IAAIP,0BACRvG,EAAE,CAAC,MACHwG,OAAO,EAAA,CACPnG,IAAI,CAAC,mBACLoG,CAAAA,CAAAA,KAAK,CAAC,UACNA,CAAAA,CAAAA,KAAK,CAAC,SAAA,CAAA,CACNC,UAAU,CAAC,GACXC,YAAY,CAAC,UACbA,CAAAA,CAAAA,YAAY,CAAC,SAAA,CAAA;AAClB;;;YAUcI,GAAAA,EAAAA,KAAAA;;;;;;;AAFb,MACD,SACcA,GAAAA,GAAAA;gBACZ,OAAO,IAAIR,0BACRvG,EAAE,CAAC,OACHwG,OAAO,EAAA,CACPnG,IAAI,CAAC,cAAA,CAAA,CACLoG,KAAK,CAAC,KAAA,CAAA,CACNA,KAAK,CAAC,YAAA,CAAA,CACNC,UAAU,CAAC,CAAA,CAAA,CACXC,YAAY,CAAC,SAAA,CAAA;AAClB;;;YAUcK,GAAAA,EAAAA,MAAAA;;;;;;;AAFb,MACD,SACcA,IAAAA,GAAAA;gBACZ,OAAO,IAAIT,uBACRvG,EAAAA,CAAAA,EAAE,CAAC,MAAA,CAAA,CACHwG,OAAO,EAAA,CACPnG,IAAI,CAAC,gBACLoG,CAAAA,CAAAA,KAAK,CAAC,MAAA,CAAA,CACNA,KAAK,CAAC,cAAA,CAAA,CACNC,UAAU,CAAC,CACXC,CAAAA,CAAAA,YAAY,CAAC,UAAA,CAAA,CACbA,YAAY,CAAC,SACbA,CAAAA,CAAAA,YAAY,CAAC,SAAA,CAAA;AAClB;;;YAUcM,GAAAA,EAAAA,QAAAA;;;;;;;AAFb,MACD,SACcA,OAAAA,GAAAA;AACZ,gBAAA,OAAO,IAAIV,uBAAAA,EAAAA,CACRvG,EAAE,CAAC,QACHwG,CAAAA,CAAAA,OAAO,EACPnG,CAAAA,IAAI,CAAC,iBAAA,CAAA,CACLoG,KAAK,CAAC,QACNA,CAAAA,CAAAA,KAAK,CAAC,IAAA,CAAA,CACNA,KAAK,CAAC,KACNA,CAAAA,CAAAA,KAAK,CAAC,MAAA,CAAA,CACNC,UAAU,CAAC,CACXC,CAAAA,CAAAA,YAAY,CAAC,SAAA,CAAA,CACbA,YAAY,CAAC,SAAA,CAAA;AAClB;;;YAWcO,GAAAA,EAAAA,MAAAA;;;;;;;;;MAAd,SAAcA,KAAKlH,EAAU,EAAA;AAC3B,gBAAA,IAAMmH,MAASd,GA9JGA,qBA8JkB,CAACrG,EAAG,CAAA;AAExC,gBAAA,IAAIkG,cAAciB,MAAS,CAAA,EAAA;oBACzB,OAAOA,MAAAA,EAAAA;AACT;gBAEA,OAAO,IAAA;AACT;;;AArKoBd,IAAAA,OAAAA,qBAAAA;AAsKrB,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3JM,IAAMe,sBAAyBvG,GAAAA,MAAAA,CAAO,6BAA+B,CAAA;AAQrE,IAAA,wBAAA,iBAAA,WAAA;AAAMwG,IAAAA,SAAAA,wBAAAA,CAIT,KAC2C,EAC3C,QACoD,EACpD,MAA+C,EAAA;AARtCA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,wBAAAA,CAAAA;;;;AACX,QAAArI,kBAAA,CAAA,IAAA,EAAQ+B,WAAR,MAAA,CAAA;aAImBuG,KAAAA,GAAAA,KAAAA;aAEAjD,QAAAA,GAAAA,QAAAA;aACckD,MAAAA,GAAAA,MAAAA;AAE/B,QAAA,IAAI,CAACxG,OAAO,GAAG,IAAIC,eAAe,0BAA4BuG,EAAAA,MAAAA,CAAAA;;AAVrDF,IAAAA,eAAAA,CAAAA,wBAAAA,EAAAA;;YAaEpG,GAAAA,EAAAA,MAAAA;AAAb,YAAA,KAAA,EAAA,SAAaA,KAAKC,GAAkB,EAAA;;AAC5BC,oBAAAA,IAAAA,IAAAA,EACAC,IACFC,EAAAA,GAAAA,EAGIpC,QACAuI,EAAAA,WAAAA,EACAC,QACFC,EAAAA,OAAAA,EAEAC,GAGAC,EAAAA,aAAAA,EACAC,OAEAC,EAAAA,OAAAA,EAUAC,aAIAxG,EAAAA,MAAAA,EAKAC,IACAC,EAAAA,KAAAA;;;;gCApCAN,IAAOO,GAAAA,YAAAA,CAAa,CAAGR,EAAAA,GAAAA,CAAIC,IAAI,CAAA;gCAC/BC,IAAOM,GAAAA,YAAAA,CAAaC,QAAUT,EAAAA,GAAAA,CAAIE,IAAI,CAAA;AACxCC,gCAAAA,GAAAA,GAAM,2BAAgDD,CAAAA,MAAAA,CAApBD,IAAK,EAAA,eAAA,CAAA,CAAoB,OAALC,IAAK,EAAA,GAAA,CAAA;AAC/D,gCAAA,IAAI,CAACL,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAE5C,gCAAA,OAAA;;AAAM,oCAAA,IAAI,CAACwE,QAAQ,CAAC/B,GAAG,CAACnC,qBAAmBC,KAAK;;;AAA7DnB,gCAAAA,QAAAA,GAAa,MAAbA,CAAAA,IAAAA,EAAAA,CAAAA,QAAAA;AACAuI,gCAAAA,WAAAA,GAAgBvI,QAAhBuI,CAAAA,WAAAA;gCACAC,QAAahH,GAAAA,6BAAAA,CAA8B+G,WAAW,EAAtDC,CAAAA,QAAAA;AACFC,gCAAAA,OAAAA,GAAUhG,aAAa+F,QAAUD,EAAAA,WAAAA,CAAAA;gCAEjCG,GAAMK,GAAAA,UAAAA,CAAWN,OAASO,EAAAA,OAAAA,CAAQC,GAAG,CAAA;gCAC3C7G,GAAM,GAAC,0BAA6B,MAAJsG,CAAAA,GAAAA,CAAAA;AAChC,gCAAA,IAAI,CAAC5G,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;gCAC3D+H,aAAgB,GAAA;oCAAED,GAAAA,EAAAA;AAAI,iCAAA;AACZ,gCAAA,OAAA;;AAAM,oCAAA,IAAI,CAACL,KAAK,CAACtF,MAAM,CAAC,IAAM4F,EAAAA,aAAAA;;;gCAAxCC,OAAU,GAAA,MAAA,CAAA,IAAA,EAAA;gCAEVC,OAAUD,GAAAA,OAAAA,CACbM,GAAG,CAAC,SAACC,MAAAA,EAAAA;AAAWA,oCAAAA,OAAAA,MAAAA,CAAOC,IAAI;AAC3BF,iCAAAA,CAAAA,CAAAA,GAAG,CAAC,SAACE,IAAAA,EAAAA;2CAASC,QAASD,CAAAA,IAAAA,CAAAA;AACvBF,iCAAAA,CAAAA,CAAAA,GAAG,CAAC,SAACI,IAAAA,EAAAA;AAASlC,oCAAAA,OAAAA,qBAAAA,CAAsBa,IAAI,CAACqB,IAAAA,CAAAA;AACzCC,iCAAAA,CAAAA,CAAAA,MAAM,CAAC,SAACrB,MAAAA,EAAAA;2CAAWA,MAAU,IAAA,IAAA;AAC7BgB,iCAAAA,CAAAA,CAAAA,GAAG,CAAC,SAAChB,MAAAA,EAAAA;AAAWA,oCAAAA,OAAAA,MAAAA,CAAOtH,KAAK,EAAA;;AAE/BwB,gCAAAA,GAAAA,GAAM,QAAC,CAAuB,MAAfyG,CAAAA,OAAAA,CAAQ1F,MAAM,EAAC,UAAA,CAAA;AAC9B,gCAAA,IAAI,CAACrB,OAAO,CAACa,GAAG,CAAC,IAAIC,gBAAmBC,EAAAA,CAAAA,IAAI,EAAG1C,CAAAA,OAAO,CAACiC,GAAAA,CAAAA,CAAKxB,KAAK,EAAA,CAAA;AAE3DkI,gCAAAA,aAAAA,GAAgB,IAAIhG,+BAAAA,EAAAA,CACvBC,MAAM,CAAC,IAAIC,iBAAAA,CAAAA;AAAmB,oCAAA,IAAA;AAAM,oCAAA,MAAA;AAAQ,oCAAA;oCAC5CpC,KAAK,EAAA;gCAEF0B,MAAS,GAAA,IAAIW,kBACjB4F,OACAC,EAAAA,aAAAA,CAAAA;AAGW,gCAAA,OAAA;;AAAMxG,oCAAAA,MAAAA,CAAOY,QAAQ,CAACjB,GAAAA;;;gCAA7BM,IAAO,GAAA,MAAA,CAAA,IAAA,EAAA;AACC,gCAAA,OAAA;;AAAMD,oCAAAA,MAAAA,CAAOE,KAAK,CAACP,GAAAA;;;gCAA3BO,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA;AAEd,gCAAA,OAAA;;AAAO,oCAAA,IAAIY,eACRb,IAAI,CAACA,MACLC,KAAK,CAACA,OACN5B,KAAK;;;;AACV,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;YAEayC,GAAAA,EAAAA,KAAAA;AAAb,YAAA,KAAA,EAAA,SAAaA,IAAItC,EAAU,EAAA;;wBACnBL,GACAwH,EAAAA,MAAAA;;;;AADM,gCAAA,OAAA;;AAAM,oCAAA,IAAI,CAAClG,IAAI,CAAC,IAAIsD,sBAAsB1E,KAAK,EAAA;;;gCAArDF,GAAM,GAAA,MAAA,CAAA,IAAA,EAAA;AACNwH,gCAAAA,MAAAA,GAASlD,IAAKtE,CAAAA,GAAAA,CAAI6B,IAAI,EAAE,SAAC2F,MAAAA,EAAAA;AAAWA,oCAAAA,OAAAA,MAAAA,CAAOnH,EAAE,KAAKA,EAAAA;;AAExD,gCAAA,IAAI,CAACmH,MAAQ,EAAA;AACX,oCAAA,MAAM,IAAIhD,iBAAAA,CAAkB,iCAAC,CAAoC,OAAHnE,EAAG,EAAA,GAAA,CAAA,CAAA;AACnE;AAEA,gCAAA,OAAA;;AAAOmH,oCAAAA;;;;AACT,iBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;;;;AAnEWE,IAAAA,OAAAA,wBAAAA;AAoEZ,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChGM,IAAA,2BAAA,iBAAA,WAAA;AAAMoB,IAAAA,SAAAA,2BAAAA,CAET,QACoD,EAAA;AAH3CA,QAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,2BAAAA,CAAAA;;aAGQC,QAAAA,GAAAA,QAAAA;;AAHRD,IAAAA,aAAAA,CAAAA,2BAAAA,EAAAA;;YAOJxH,GAAAA,EAAAA,MAAAA;mBADP,SACOA,IAAAA,CACL,KAAkC,EAAA;gBAElC,OAAO,IAAI,CAACyH,QAAQ,CAACzH,IAAI,CAAC,IAAIsD,mBAAsBC,EAAAA,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CAAO3E,KAAK,EAAA,CAAA;AACxE;;;YAQOyC,GAAAA,EAAAA,KAAAA;mBANP,SAMOA,GAAAA,CAAI,cAA+C,EAAA;AACxD,gBAAA,OAAO,IAAI,CAACoG,QAAQ,CAACpG,GAAG,CAACmC,cAAAA,CAAAA;AAC3B;;;AArBWgE,IAAAA,OAAAA,2BAAAA;AAsBZ,CAAA,EAAA;;;;;;;;;;;;QARGvJ,IAAM,EAAA,iBAAA;QACNmB,IAAM,EAAA,gBAAA;QACNC,WAAa,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRV,IAAA,uBAAMqI,GAAN,SAAMA,uBAAAA,GAAAA;AAAAA,IAAAA,mBAAAA,CAAAA,IAAAA,EAAAA,uBAAAA,CAAAA;AAA0B,CAAA;;;QANrCzD,OAAS,EAAA;AAACD,YAAAA,uBAAAA;AAAyBE,YAAAA,iBAAAA;AAAmBC,YAAAA;AAAc,SAAA;QACpEC,WAAa,EAAA;AAACoD,YAAAA;AAA4B,SAAA;QAC1CnD,SAAW,EAAA;AACT,YAAA;gBAAEC,OAAS6B,EAAAA,sBAAAA;gBAAwB5B,QAAU6B,EAAAA;AAAyB;AACvE;;;;ACfH,wCAAqC,SAAA,iBAAA,CAAA,QAAA,EAAA,WAAA,EAAA;;;;;;;;;;;AAM9B,IAAA,gBAAMuB,GAAN,SAAMA,gBAAAA,GAAAA;AAAAA,IAAAA,iBAAAA,CAAAA,IAAAA,EAAAA,gBAAAA,CAAAA;AAAmB,CAAA;;;QADtB1D,OAAS,EAAA;AAACyD,YAAAA,uBAAAA;AAAyB1D,YAAAA;AAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDrE,IAAM4D,IAAO,GAAA,IAAA;AAEZ,CAAA,WAAA;;AACOC,QAAAA,IAAAA,GAAAA,EAIAvG,MAMAwG,EAAAA,QAAAA;;;;AAVM,oBAAA,OAAA;;AAAMC,wBAAAA,WAAAA,CAAYjJ,MAAM,CAAC6I,gBAAAA;;;oBAA/BE,GAAM,GAAA,MAAA,CAAA,IAAA,EAAA;AACZA,oBAAAA,GAAAA,CAAIG,eAAe,CAAC,KAAA,CAAA;AACpBH,oBAAAA,GAAAA,CAAII,UAAU,EAAA;oBAER3G,MAAS,GAAA,IAAI4G,eAChBC,EAAAA,CAAAA,QAAQ,CAAC,eAAA,CAAA,CACTC,cAAc,CAAC,mBACfC,CAAAA,CAAAA,UAAU,CAAC,GAAA,CAAA,CACXzJ,KAAK,EAAA;oBAEFkJ,QAAW,GAAA,WAAA;+BAAMQ,aAAcC,CAAAA,cAAc,CAACV,GAAKvG,EAAAA,MAAAA,CAAAA;;oBACzDgH,aAAcE,CAAAA,KAAK,CAAC,UAAA,EAAYX,GAAKC,EAAAA,QAAAA,CAAAA;AAErC,oBAAA,OAAA;;AAAMD,wBAAAA,GAAAA,CAAIY,MAAM,CAACb,IAAAA;;;AAAjB,oBAAA,MAAA,CAAA,IAAA,EAAA;;;;;;AACF,KAAA,CAAA,EAAA;AAAA,CAAA,GAAA"}
@@ -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
- constructor(_file: IZFileSystemService, _configs: IZRomulatorConfigsService);
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.1.0",
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.3.0",
30
- "@zthun/helpful-query": "^9.3.0",
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.1.0",
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": "52bd432dd2df0980d450b20de58d7f58c6d0da94"
59
+ "gitHead": "8e51e1660617d8aea4be5cd3c2d666e2bf673f52"
60
60
  }