@nanoforge-dev/schematics 2.1.5-beta.89059f7 → 2.1.5-beta.a008fc6
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.
|
@@ -100,8 +100,8 @@ var MainGenerator = class {
|
|
|
100
100
|
this.endSection();
|
|
101
101
|
return this;
|
|
102
102
|
}
|
|
103
|
-
generateEntities(components, entities) {
|
|
104
|
-
entities.forEach((entity, index) => this.generateEntity(components, entity, index));
|
|
103
|
+
generateEntities(libs, components, entities) {
|
|
104
|
+
entities.forEach((entity, index) => this.generateEntity(libs, components, entity, index));
|
|
105
105
|
return this;
|
|
106
106
|
}
|
|
107
107
|
generateSystems(systems) {
|
|
@@ -157,21 +157,29 @@ var MainGenerator = class {
|
|
|
157
157
|
this.endSection();
|
|
158
158
|
return this;
|
|
159
159
|
}
|
|
160
|
-
generateEntity(components, entity, entityIndex) {
|
|
160
|
+
generateEntity(libs, components, entity, entityIndex) {
|
|
161
161
|
this.writeLine(`const ${entity.id} = registry.spawnEntity();`);
|
|
162
162
|
Object.entries(entity.components).forEach(([componentName, rawParams]) => {
|
|
163
163
|
const originalsParams = components.find(({ name }) => name === componentName)?.paramsNames;
|
|
164
164
|
if (!originalsParams) throw new Error("Missing component in entity or inexistent saved component");
|
|
165
|
-
const params =
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
const params = originalsParams.map((ogParam) => {
|
|
166
|
+
let isAsset = false;
|
|
167
|
+
if (ogParam.startsWith("__RESERVED_ASSET_")) {
|
|
168
|
+
isAsset = true;
|
|
169
|
+
ogParam = ogParam.replace("__RESERVED_ASSET_", "");
|
|
170
|
+
}
|
|
171
|
+
const param = this.editor ? `options.editor.save.entities[${entityIndex}].components["${componentName}"]["${ogParam}"]` : getStringParam(rawParams[ogParam]);
|
|
172
|
+
if (isAsset) return this.getAssetParam(param, libs);
|
|
173
|
+
return param;
|
|
169
174
|
});
|
|
170
175
|
this.writeLine(`registry.addComponent(${entity.id}, new ${componentName}(${params.join(", ")}));`);
|
|
171
176
|
});
|
|
172
177
|
if (this.editor) this.writeLine(`registry.addComponent(${entity.id}, { name: "__RESERVED_entityId", entityId: "${entity.id}" });`);
|
|
173
178
|
this.endSection();
|
|
174
179
|
}
|
|
180
|
+
getAssetParam(param, libs) {
|
|
181
|
+
return `${libs.find((lib) => lib.type === "asset-manager")?.id ?? "assetManagerLibrary"}.getAsset(${param})`;
|
|
182
|
+
}
|
|
175
183
|
getInitFunction(name, type) {
|
|
176
184
|
const baseName = LIBS_FUNCTIONS_NAME[type];
|
|
177
185
|
if (baseName) return `app.${baseName}(${name});`;
|
|
@@ -192,7 +200,7 @@ const generateMain = (options, save) => {
|
|
|
192
200
|
const hasTypes = options.language === "ts";
|
|
193
201
|
const initFunctions = options.initFunctions;
|
|
194
202
|
return (!options.editor ? new MainGenerator() : new MainGenerator(true, join$1("../".repeat(options.outFile ? options.outFile.split("/").length - 1 : 3), options.part))).generateBaseImports(hasTypes).generateLibsImports(save.libraries).generateInitFunctionsImportsIfNeeded(initFunctions).generateComponentsImports(save.components).generateSystemsImports(save.systems).generateMainFunction(hasTypes, (generator) => {
|
|
195
|
-
generator.generateApp(isServer).generateLibsInstances(save.libraries).generateLibsInit(save.libraries).generateInitFunctionIfNeeded(initFunctions, "beforeInit").generateAppInit().generateInitFunctionIfNeeded(initFunctions, "afterInit").generateRegistry(save.libraries).generateInitFunctionIfNeeded(initFunctions, "beforeRegistryInit").generateEntities(save.components, save.entities).generateSystems(save.systems).generateInitFunctionIfNeeded(initFunctions, "afterRegistryInit").generateInitFunctionIfNeeded(initFunctions, "beforeRun").generateAppRun(initFunctions).generateInitFunctionIfNeeded(initFunctions, "afterRun");
|
|
203
|
+
generator.generateApp(isServer).generateLibsInstances(save.libraries).generateLibsInit(save.libraries).generateInitFunctionIfNeeded(initFunctions, "beforeInit").generateAppInit().generateInitFunctionIfNeeded(initFunctions, "afterInit").generateRegistry(save.libraries).generateInitFunctionIfNeeded(initFunctions, "beforeRegistryInit").generateEntities(save.libraries, save.components, save.entities).generateSystems(save.systems).generateInitFunctionIfNeeded(initFunctions, "afterRegistryInit").generateInitFunctionIfNeeded(initFunctions, "beforeRun").generateAppRun(initFunctions).generateInitFunctionIfNeeded(initFunctions, "afterRun");
|
|
196
204
|
}).toString();
|
|
197
205
|
};
|
|
198
206
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-main.factory.js","names":["join","join"],"sources":["../../../src/utils/main/enums.ts","../../../src/utils/path.ts","../../../src/utils/main/save.type.ts","../../../src/utils/main/const.ts","../../../src/utils/main/main-utils.ts","../../../src/utils/main/main.generator.ts","../../../src/utils/main/main-functions.ts","../../../src/libs/part-main/part-main.factory.ts"],"sourcesContent":["export enum InitFunctionEnum {\n BEFORE_INIT = \"beforeInit\",\n AFTER_INIT = \"afterInit\",\n BEFORE_REGISTRY_INIT = \"beforeRegistryInit\",\n AFTER_REGISTRY_INIT = \"afterRegistryInit\",\n BEFORE_RUN = \"beforeRun\",\n AFTER_RUN = \"afterRun\",\n}\n","import { join } from \"path\";\n\nexport const joinRelative = (...paths: [string, ...string[]]): string => {\n const path = join(...paths);\n return path.startsWith(\"./\") || path.startsWith(\"../\") ? path : `./${path}`;\n};\n","export enum SaveLibraryTypeEnum {\n COMPONENT_SYSTEM = \"component-system\",\n GRAPHICS = \"graphics\",\n ASSET_MANAGER = \"asset-manager\",\n NETWORK = \"network\",\n INPUT = \"input\",\n SOUND = \"sound\",\n}\n\nexport interface SaveLibrary {\n id: string;\n type: SaveLibraryTypeEnum | string;\n name: string;\n path: string;\n}\n\nexport interface SaveComponent {\n name: string;\n path: string;\n paramsNames: string[];\n}\n\nexport interface SaveSystem {\n name: string;\n path: string;\n}\n\nexport interface SaveEntity {\n id: string;\n components: Record<string, Record<string, any>>;\n}\n\nexport interface Save {\n libraries: SaveLibrary[];\n components: SaveComponent[];\n systems: SaveSystem[];\n entities: SaveEntity[];\n}\n","import { SaveLibraryTypeEnum } from \"@utils/main/save.type\";\n\nexport const LIBS_FUNCTIONS_NAME: Record<SaveLibraryTypeEnum | string, string> = {\n [SaveLibraryTypeEnum.ASSET_MANAGER]: \"useAssetManager\",\n [SaveLibraryTypeEnum.COMPONENT_SYSTEM]: \"useComponentSystem\",\n [SaveLibraryTypeEnum.GRAPHICS]: \"useGraphics\",\n [SaveLibraryTypeEnum.INPUT]: \"useInput\",\n [SaveLibraryTypeEnum.NETWORK]: \"useNetwork\",\n [SaveLibraryTypeEnum.SOUND]: \"useSound\",\n};\n","export const getStringParam = (value: any): string => {\n if (typeof value === \"string\") return `\"${value}\"`;\n if (typeof value === \"number\") return value.toString();\n if (typeof value === \"boolean\") return value ? \"true\" : \"false\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return \"undefined\";\n};\n","import { joinRelative } from \"@utils/path\";\n\nimport { LIBS_FUNCTIONS_NAME } from \"./const\";\nimport { InitFunctionEnum } from \"./enums\";\nimport { getStringParam } from \"./main-utils\";\nimport {\n type SaveComponent,\n type SaveEntity,\n type SaveLibrary,\n SaveLibraryTypeEnum,\n type SaveSystem,\n} from \"./save.type\";\n\nexport class MainGenerator {\n private buffer = \"\";\n private indentation = 0;\n private readonly editor: boolean;\n private readonly pathToRoot: string;\n\n constructor(editor: boolean = false, pathToRoot: string = \"\") {\n this.editor = editor;\n this.pathToRoot = pathToRoot;\n }\n\n toString(): string {\n return this.buffer;\n }\n\n generateBaseImports(hasTypes: boolean): MainGenerator {\n if (this.editor) {\n if (hasTypes)\n this.writeLine(\n `import { type IEditorRunOptions, NanoforgeFactory } from \"@nanoforge-dev/core-editor\";`,\n );\n else this.writeLine(`import { NanoforgeFactory } from \"@nanoforge-dev/core-editor\";`);\n } else {\n if (hasTypes) this.writeLine(`import { type IRunOptions } from \"@nanoforge-dev/common\";`);\n this.writeLine(`import { NanoforgeFactory } from \"@nanoforge-dev/core\";`);\n }\n\n this.endSection();\n return this;\n }\n\n generateLibsImports(libs: SaveLibrary[]): MainGenerator {\n return this.generateImports(libs, false);\n }\n\n generateComponentsImports(libs: SaveComponent[]): MainGenerator {\n return this.generateImports(libs, true);\n }\n\n generateSystemsImports(libs: SaveSystem[]): MainGenerator {\n return this.generateImports(libs, true);\n }\n\n generateMainFunction(hasTypes: boolean, cb: (generator: MainGenerator) => void): MainGenerator {\n if (this.editor)\n this.writeLine(\n `export async function main(options${hasTypes ? \": IEditorRunOptions\" : \"\"}) {`,\n );\n else this.writeLine(`export async function main(options${hasTypes ? \": IRunOptions\" : \"\"}) {`);\n this.indentation += 1;\n cb(this);\n this.indentation -= 1;\n this.writeLine(\"}\");\n return this;\n }\n\n generateApp(isServer: boolean): MainGenerator {\n this.writeLine(`const app = NanoforgeFactory.create${isServer ? \"Server\" : \"Client\"}();`);\n this.endSection();\n return this;\n }\n\n generateAppInit(): MainGenerator {\n this.writeLine(`await app.init(options);`);\n this.endSection();\n return this;\n }\n\n generateAppRun(hasInitFunctions: boolean): MainGenerator {\n this.writeLine(`await app.run();`);\n if (hasInitFunctions) this.endSection();\n return this;\n }\n\n generateLibsInstances(libs: SaveLibrary[]): MainGenerator {\n libs.forEach(({ id, name }) => this.writeLine(`const ${id} = new ${name}();`));\n this.endSection();\n return this;\n }\n\n generateLibsInit(libs: SaveLibrary[]): MainGenerator {\n libs.forEach(({ id, type }) => this.writeLine(this.getInitFunction(id, type)));\n this.endSection();\n return this;\n }\n\n generateRegistry(libs: SaveLibrary[]): MainGenerator {\n const libName =\n libs.find((lib) => lib.type === SaveLibraryTypeEnum.COMPONENT_SYSTEM)?.id ?? \"ecsLibrary\";\n this.writeLine(`const registry = ${libName}.registry;`);\n this.endSection();\n return this;\n }\n\n generateEntities(components: SaveComponent[], entities: SaveEntity[]): MainGenerator {\n entities.forEach((entity, index) => this.generateEntity(components, entity, index));\n return this;\n }\n\n generateSystems(systems: SaveSystem[]): MainGenerator {\n systems.forEach(({ name }) => this.writeLine(`registry.addSystem(${name});`));\n this.endSection();\n return this;\n }\n\n generateInitFunctionIfNeeded(needed: boolean, func: InitFunctionEnum): MainGenerator {\n if (needed) return this.generateInitFunction(func);\n return this;\n }\n\n generateInitFunctionsImportsIfNeeded(needed: boolean): MainGenerator {\n if (!needed) return this;\n return this.generateImports(\n [\n { name: \"afterInit\", path: \"./init/after-init\" },\n { name: \"afterRegistryInit\", path: \"./init/after-registry-init\" },\n { name: \"afterRun\", path: \"./init/after-run\" },\n { name: \"beforeInit\", path: \"./init/before-init\" },\n { name: \"beforeRegistryInit\", path: \"./init/before-registry-init\" },\n { name: \"beforeRun\", path: \"./init/before-run\" },\n ],\n true,\n );\n }\n\n private generateInitFunction(func: InitFunctionEnum): MainGenerator {\n const params = [\"app\"];\n if (\n [InitFunctionEnum.BEFORE_REGISTRY_INIT, InitFunctionEnum.AFTER_REGISTRY_INIT].includes(func)\n )\n params.push(\"registry\");\n this.writeLine(`await ${func}(${params.join(\", \")});`);\n if (func !== InitFunctionEnum.AFTER_RUN) this.endSection();\n return this;\n }\n\n private generateImports(els: { name: string; path: string }[], relative: boolean): MainGenerator {\n els\n .sort((a, b) => a.path.localeCompare(b.path))\n .forEach(({ name, path }) => {\n path = path.replace(/\\.(?:ts|js)$/, \"\");\n this.writeLine(\n `import { ${name} } from \"${relative ? joinRelative(this.pathToRoot, path) : path}\";`,\n );\n });\n this.endSection();\n return this;\n }\n\n private generateEntity(\n components: SaveComponent[],\n entity: SaveEntity,\n entityIndex: number,\n ): void {\n this.writeLine(`const ${entity.id} = registry.spawnEntity();`);\n Object.entries(entity.components).forEach(([componentName, rawParams]) => {\n const originalsParams = components.find(({ name }) => name === componentName)?.paramsNames;\n if (!originalsParams)\n throw new Error(\"Missing component in entity or inexistent saved component\");\n const params: string[] = !this.editor\n ? Object.values(originalsParams).map((ogParam) => {\n return getStringParam(rawParams[ogParam]);\n })\n : Object.values(originalsParams).map((ogParam) => {\n return `options.editor.save.entities[${entityIndex}].components[\"${componentName}\"][\"${ogParam}\"]`;\n });\n this.writeLine(\n `registry.addComponent(${entity.id}, new ${componentName}(${params.join(\", \")}));`,\n );\n });\n if (this.editor) {\n this.writeLine(\n `registry.addComponent(${entity.id}, { name: \"__RESERVED_entityId\", entityId: \"${entity.id}\" });`,\n );\n }\n this.endSection();\n }\n\n private getInitFunction(name: string, type: SaveLibraryTypeEnum | string): string {\n const baseName = LIBS_FUNCTIONS_NAME[type];\n if (baseName) return `app.${baseName}(${name});`;\n return `app.use(Symbol(\"${type}\"), ${name});`;\n }\n\n private writeLine(text: string, indentation = true): void {\n const line = `${\" \".repeat(indentation ? this.indentation * 2 : 0)}${text}\\n`;\n this.buffer += line;\n }\n\n private endSection(): void {\n this.writeLine(\"\");\n }\n}\n","import { join } from \"path\";\n\nimport { InitFunctionEnum } from \"@utils/main/enums\";\n\nimport { MainGenerator } from \"./main.generator\";\nimport { type Save } from \"./save.type\";\n\nexport interface MainOptions {\n part: \"client\" | \"server\";\n language: \"js\" | \"ts\";\n initFunctions: boolean;\n editor: boolean;\n outFile?: string;\n}\n\nexport const generateMain = (options: MainOptions, save: Save) => {\n const isServer = options.part === \"server\";\n const hasTypes = options.language === \"ts\";\n const initFunctions = options.initFunctions;\n\n return (\n !options.editor\n ? new MainGenerator()\n : new MainGenerator(\n true,\n join(\n \"../\".repeat(options.outFile ? options.outFile.split(\"/\").length - 1 : 3),\n options.part,\n ),\n )\n )\n .generateBaseImports(hasTypes)\n .generateLibsImports(save.libraries)\n .generateInitFunctionsImportsIfNeeded(initFunctions)\n .generateComponentsImports(save.components)\n .generateSystemsImports(save.systems)\n\n .generateMainFunction(hasTypes, (generator) => {\n generator\n .generateApp(isServer)\n\n .generateLibsInstances(save.libraries)\n .generateLibsInit(save.libraries)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_INIT)\n .generateAppInit()\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_INIT)\n\n .generateRegistry(save.libraries)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_REGISTRY_INIT)\n .generateEntities(save.components, save.entities)\n .generateSystems(save.systems)\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_REGISTRY_INIT)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_RUN)\n .generateAppRun(initFunctions)\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_RUN);\n })\n .toString();\n};\n","import { type Path, join, normalize, strings } from \"@angular-devkit/core\";\nimport {\n type Rule,\n type Source,\n type Tree,\n apply,\n asSource,\n mergeWith,\n move,\n template,\n} from \"@angular-devkit/schematics\";\nimport * as fs from \"fs\";\n\nimport { generateMain } from \"@utils/main/main-functions\";\nimport { type Save, SaveLibraryTypeEnum } from \"@utils/main/save.type\";\n\nimport { type PartMainOptions } from \"./part-main.options\";\nimport { type PartMainSchema } from \"./part-main.schema\";\n\nconst transform = (schema: PartMainSchema): PartMainOptions => {\n void schema;\n\n return {};\n};\n\nconst generate = (options: PartMainOptions, path: string, schema: PartMainSchema): Source => {\n const rules = [\n template({\n ...strings,\n ...options,\n }),\n move(normalize(path)),\n ];\n\n return apply(asSource(writeMain(schema, path)), rules);\n};\n\nconst getMainPath = (schema: PartMainSchema): string => {\n if (schema.outFile) return schema.outFile;\n if (schema.editor)\n return join(\".nanoforge/editor\" as Path, schema.part, `main.${schema.language}`);\n return join(schema.part as Path, `main.${schema.language}`);\n};\n\nconst writeMain = (schema: PartMainSchema, path: string) => {\n return (tree: Tree) => {\n let save = getSave(path, schema.part, schema.saveFile);\n\n const resPath = getMainPath(schema);\n\n if (schema.editor) {\n save = getEditorSave(save);\n }\n\n const content = generateMain(schema, save);\n fs.rmSync(join(path as Path, resPath), { force: true });\n tree.create(resPath, content);\n return tree;\n };\n};\n\nconst getSave = (path: string, part: \"client\" | \"server\", saveFile?: string): Save => {\n return JSON.parse(\n fs.readFileSync(saveFile ?? join(path as Path, `.nanoforge/${part}.save.json`), \"utf-8\"),\n ) as Save;\n};\n\nconst getEditorSave = (save: Save): Save => {\n if (save.libraries.some((lib) => lib.type === SaveLibraryTypeEnum.GRAPHICS))\n save.libraries.push({\n id: \"graphicsEditorLibrary\",\n type: \"graphics-editor\",\n name: \"Graphics2DEditorLibrary\",\n path: \"@nanoforge-dev/graphics-2d-editor\",\n });\n\n return save;\n};\n\nexport const main = (schema: PartMainSchema): Rule => {\n const options = transform(schema);\n\n return mergeWith(generate(options, schema.directory, schema));\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"part-main.factory.js","names":["join","join"],"sources":["../../../src/utils/main/enums.ts","../../../src/utils/path.ts","../../../src/utils/main/save.type.ts","../../../src/utils/main/const.ts","../../../src/utils/main/main-utils.ts","../../../src/utils/main/main.generator.ts","../../../src/utils/main/main-functions.ts","../../../src/libs/part-main/part-main.factory.ts"],"sourcesContent":["export enum InitFunctionEnum {\n BEFORE_INIT = \"beforeInit\",\n AFTER_INIT = \"afterInit\",\n BEFORE_REGISTRY_INIT = \"beforeRegistryInit\",\n AFTER_REGISTRY_INIT = \"afterRegistryInit\",\n BEFORE_RUN = \"beforeRun\",\n AFTER_RUN = \"afterRun\",\n}\n","import { join } from \"path\";\n\nexport const joinRelative = (...paths: [string, ...string[]]): string => {\n const path = join(...paths);\n return path.startsWith(\"./\") || path.startsWith(\"../\") ? path : `./${path}`;\n};\n","export enum SaveLibraryTypeEnum {\n COMPONENT_SYSTEM = \"component-system\",\n GRAPHICS = \"graphics\",\n ASSET_MANAGER = \"asset-manager\",\n NETWORK = \"network\",\n INPUT = \"input\",\n SOUND = \"sound\",\n}\n\nexport interface SaveLibrary {\n id: string;\n type: SaveLibraryTypeEnum | string;\n name: string;\n path: string;\n}\n\nexport interface SaveComponent {\n name: string;\n path: string;\n paramsNames: string[];\n}\n\nexport interface SaveSystem {\n name: string;\n path: string;\n}\n\nexport interface SaveEntity {\n id: string;\n components: Record<string, Record<string, any>>;\n}\n\nexport interface Save {\n libraries: SaveLibrary[];\n components: SaveComponent[];\n systems: SaveSystem[];\n entities: SaveEntity[];\n}\n","import { SaveLibraryTypeEnum } from \"@utils/main/save.type\";\n\nexport const LIBS_FUNCTIONS_NAME: Record<SaveLibraryTypeEnum | string, string> = {\n [SaveLibraryTypeEnum.ASSET_MANAGER]: \"useAssetManager\",\n [SaveLibraryTypeEnum.COMPONENT_SYSTEM]: \"useComponentSystem\",\n [SaveLibraryTypeEnum.GRAPHICS]: \"useGraphics\",\n [SaveLibraryTypeEnum.INPUT]: \"useInput\",\n [SaveLibraryTypeEnum.NETWORK]: \"useNetwork\",\n [SaveLibraryTypeEnum.SOUND]: \"useSound\",\n};\n","export const getStringParam = (value: any): string => {\n if (typeof value === \"string\") return `\"${value}\"`;\n if (typeof value === \"number\") return value.toString();\n if (typeof value === \"boolean\") return value ? \"true\" : \"false\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return \"undefined\";\n};\n","import { joinRelative } from \"@utils/path\";\n\nimport { LIBS_FUNCTIONS_NAME } from \"./const\";\nimport { InitFunctionEnum } from \"./enums\";\nimport { getStringParam } from \"./main-utils\";\nimport {\n type SaveComponent,\n type SaveEntity,\n type SaveLibrary,\n SaveLibraryTypeEnum,\n type SaveSystem,\n} from \"./save.type\";\n\nexport class MainGenerator {\n private buffer = \"\";\n private indentation = 0;\n private readonly editor: boolean;\n private readonly pathToRoot: string;\n\n constructor(editor: boolean = false, pathToRoot: string = \"\") {\n this.editor = editor;\n this.pathToRoot = pathToRoot;\n }\n\n toString(): string {\n return this.buffer;\n }\n\n generateBaseImports(hasTypes: boolean): MainGenerator {\n if (this.editor) {\n if (hasTypes)\n this.writeLine(\n `import { type IEditorRunOptions, NanoforgeFactory } from \"@nanoforge-dev/core-editor\";`,\n );\n else this.writeLine(`import { NanoforgeFactory } from \"@nanoforge-dev/core-editor\";`);\n } else {\n if (hasTypes) this.writeLine(`import { type IRunOptions } from \"@nanoforge-dev/common\";`);\n this.writeLine(`import { NanoforgeFactory } from \"@nanoforge-dev/core\";`);\n }\n\n this.endSection();\n return this;\n }\n\n generateLibsImports(libs: SaveLibrary[]): MainGenerator {\n return this.generateImports(libs, false);\n }\n\n generateComponentsImports(libs: SaveComponent[]): MainGenerator {\n return this.generateImports(libs, true);\n }\n\n generateSystemsImports(libs: SaveSystem[]): MainGenerator {\n return this.generateImports(libs, true);\n }\n\n generateMainFunction(hasTypes: boolean, cb: (generator: MainGenerator) => void): MainGenerator {\n if (this.editor)\n this.writeLine(\n `export async function main(options${hasTypes ? \": IEditorRunOptions\" : \"\"}) {`,\n );\n else this.writeLine(`export async function main(options${hasTypes ? \": IRunOptions\" : \"\"}) {`);\n this.indentation += 1;\n cb(this);\n this.indentation -= 1;\n this.writeLine(\"}\");\n return this;\n }\n\n generateApp(isServer: boolean): MainGenerator {\n this.writeLine(`const app = NanoforgeFactory.create${isServer ? \"Server\" : \"Client\"}();`);\n this.endSection();\n return this;\n }\n\n generateAppInit(): MainGenerator {\n this.writeLine(`await app.init(options);`);\n this.endSection();\n return this;\n }\n\n generateAppRun(hasInitFunctions: boolean): MainGenerator {\n this.writeLine(`await app.run();`);\n if (hasInitFunctions) this.endSection();\n return this;\n }\n\n generateLibsInstances(libs: SaveLibrary[]): MainGenerator {\n libs.forEach(({ id, name }) => this.writeLine(`const ${id} = new ${name}();`));\n this.endSection();\n return this;\n }\n\n generateLibsInit(libs: SaveLibrary[]): MainGenerator {\n libs.forEach(({ id, type }) => this.writeLine(this.getInitFunction(id, type)));\n this.endSection();\n return this;\n }\n\n generateRegistry(libs: SaveLibrary[]): MainGenerator {\n const libName =\n libs.find((lib) => lib.type === SaveLibraryTypeEnum.COMPONENT_SYSTEM)?.id ?? \"ecsLibrary\";\n this.writeLine(`const registry = ${libName}.registry;`);\n this.endSection();\n return this;\n }\n\n generateEntities(\n libs: SaveLibrary[],\n components: SaveComponent[],\n entities: SaveEntity[],\n ): MainGenerator {\n entities.forEach((entity, index) => this.generateEntity(libs, components, entity, index));\n return this;\n }\n\n generateSystems(systems: SaveSystem[]): MainGenerator {\n systems.forEach(({ name }) => this.writeLine(`registry.addSystem(${name});`));\n this.endSection();\n return this;\n }\n\n generateInitFunctionIfNeeded(needed: boolean, func: InitFunctionEnum): MainGenerator {\n if (needed) return this.generateInitFunction(func);\n return this;\n }\n\n generateInitFunctionsImportsIfNeeded(needed: boolean): MainGenerator {\n if (!needed) return this;\n return this.generateImports(\n [\n { name: \"afterInit\", path: \"./init/after-init\" },\n { name: \"afterRegistryInit\", path: \"./init/after-registry-init\" },\n { name: \"afterRun\", path: \"./init/after-run\" },\n { name: \"beforeInit\", path: \"./init/before-init\" },\n { name: \"beforeRegistryInit\", path: \"./init/before-registry-init\" },\n { name: \"beforeRun\", path: \"./init/before-run\" },\n ],\n true,\n );\n }\n\n private generateInitFunction(func: InitFunctionEnum): MainGenerator {\n const params = [\"app\"];\n if (\n [InitFunctionEnum.BEFORE_REGISTRY_INIT, InitFunctionEnum.AFTER_REGISTRY_INIT].includes(func)\n )\n params.push(\"registry\");\n this.writeLine(`await ${func}(${params.join(\", \")});`);\n if (func !== InitFunctionEnum.AFTER_RUN) this.endSection();\n return this;\n }\n\n private generateImports(els: { name: string; path: string }[], relative: boolean): MainGenerator {\n els\n .sort((a, b) => a.path.localeCompare(b.path))\n .forEach(({ name, path }) => {\n path = path.replace(/\\.(?:ts|js)$/, \"\");\n this.writeLine(\n `import { ${name} } from \"${relative ? joinRelative(this.pathToRoot, path) : path}\";`,\n );\n });\n this.endSection();\n return this;\n }\n\n private generateEntity(\n libs: SaveLibrary[],\n components: SaveComponent[],\n entity: SaveEntity,\n entityIndex: number,\n ): void {\n this.writeLine(`const ${entity.id} = registry.spawnEntity();`);\n Object.entries(entity.components).forEach(([componentName, rawParams]) => {\n const originalsParams = components.find(({ name }) => name === componentName)?.paramsNames;\n if (!originalsParams)\n throw new Error(\"Missing component in entity or inexistent saved component\");\n const params: string[] = originalsParams.map((ogParam) => {\n let isAsset = false;\n if (ogParam.startsWith(\"__RESERVED_ASSET_\")) {\n isAsset = true;\n ogParam = ogParam.replace(\"__RESERVED_ASSET_\", \"\");\n }\n\n const param = this.editor\n ? `options.editor.save.entities[${entityIndex}].components[\"${componentName}\"][\"${ogParam}\"]`\n : getStringParam(rawParams[ogParam]);\n if (isAsset) return this.getAssetParam(param, libs);\n return param;\n });\n this.writeLine(\n `registry.addComponent(${entity.id}, new ${componentName}(${params.join(\", \")}));`,\n );\n });\n if (this.editor) {\n this.writeLine(\n `registry.addComponent(${entity.id}, { name: \"__RESERVED_entityId\", entityId: \"${entity.id}\" });`,\n );\n }\n this.endSection();\n }\n\n private getAssetParam(param: string, libs: SaveLibrary[]): string {\n const libName =\n libs.find((lib) => lib.type === SaveLibraryTypeEnum.ASSET_MANAGER)?.id ??\n \"assetManagerLibrary\";\n return `${libName}.getAsset(${param})`;\n }\n\n private getInitFunction(name: string, type: SaveLibraryTypeEnum | string): string {\n const baseName = LIBS_FUNCTIONS_NAME[type];\n if (baseName) return `app.${baseName}(${name});`;\n return `app.use(Symbol(\"${type}\"), ${name});`;\n }\n\n private writeLine(text: string, indentation = true): void {\n const line = `${\" \".repeat(indentation ? this.indentation * 2 : 0)}${text}\\n`;\n this.buffer += line;\n }\n\n private endSection(): void {\n this.writeLine(\"\");\n }\n}\n","import { join } from \"path\";\n\nimport { InitFunctionEnum } from \"@utils/main/enums\";\n\nimport { MainGenerator } from \"./main.generator\";\nimport { type Save } from \"./save.type\";\n\nexport interface MainOptions {\n part: \"client\" | \"server\";\n language: \"js\" | \"ts\";\n initFunctions: boolean;\n editor: boolean;\n outFile?: string;\n}\n\nexport const generateMain = (options: MainOptions, save: Save) => {\n const isServer = options.part === \"server\";\n const hasTypes = options.language === \"ts\";\n const initFunctions = options.initFunctions;\n\n return (\n !options.editor\n ? new MainGenerator()\n : new MainGenerator(\n true,\n join(\n \"../\".repeat(options.outFile ? options.outFile.split(\"/\").length - 1 : 3),\n options.part,\n ),\n )\n )\n .generateBaseImports(hasTypes)\n .generateLibsImports(save.libraries)\n .generateInitFunctionsImportsIfNeeded(initFunctions)\n .generateComponentsImports(save.components)\n .generateSystemsImports(save.systems)\n\n .generateMainFunction(hasTypes, (generator) => {\n generator\n .generateApp(isServer)\n\n .generateLibsInstances(save.libraries)\n .generateLibsInit(save.libraries)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_INIT)\n .generateAppInit()\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_INIT)\n\n .generateRegistry(save.libraries)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_REGISTRY_INIT)\n .generateEntities(save.libraries, save.components, save.entities)\n .generateSystems(save.systems)\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_REGISTRY_INIT)\n\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.BEFORE_RUN)\n .generateAppRun(initFunctions)\n .generateInitFunctionIfNeeded(initFunctions, InitFunctionEnum.AFTER_RUN);\n })\n .toString();\n};\n","import { type Path, join, normalize, strings } from \"@angular-devkit/core\";\nimport {\n type Rule,\n type Source,\n type Tree,\n apply,\n asSource,\n mergeWith,\n move,\n template,\n} from \"@angular-devkit/schematics\";\nimport * as fs from \"fs\";\n\nimport { generateMain } from \"@utils/main/main-functions\";\nimport { type Save, SaveLibraryTypeEnum } from \"@utils/main/save.type\";\n\nimport { type PartMainOptions } from \"./part-main.options\";\nimport { type PartMainSchema } from \"./part-main.schema\";\n\nconst transform = (schema: PartMainSchema): PartMainOptions => {\n void schema;\n\n return {};\n};\n\nconst generate = (options: PartMainOptions, path: string, schema: PartMainSchema): Source => {\n const rules = [\n template({\n ...strings,\n ...options,\n }),\n move(normalize(path)),\n ];\n\n return apply(asSource(writeMain(schema, path)), rules);\n};\n\nconst getMainPath = (schema: PartMainSchema): string => {\n if (schema.outFile) return schema.outFile;\n if (schema.editor)\n return join(\".nanoforge/editor\" as Path, schema.part, `main.${schema.language}`);\n return join(schema.part as Path, `main.${schema.language}`);\n};\n\nconst writeMain = (schema: PartMainSchema, path: string) => {\n return (tree: Tree) => {\n let save = getSave(path, schema.part, schema.saveFile);\n\n const resPath = getMainPath(schema);\n\n if (schema.editor) {\n save = getEditorSave(save);\n }\n\n const content = generateMain(schema, save);\n fs.rmSync(join(path as Path, resPath), { force: true });\n tree.create(resPath, content);\n return tree;\n };\n};\n\nconst getSave = (path: string, part: \"client\" | \"server\", saveFile?: string): Save => {\n return JSON.parse(\n fs.readFileSync(saveFile ?? join(path as Path, `.nanoforge/${part}.save.json`), \"utf-8\"),\n ) as Save;\n};\n\nconst getEditorSave = (save: Save): Save => {\n if (save.libraries.some((lib) => lib.type === SaveLibraryTypeEnum.GRAPHICS))\n save.libraries.push({\n id: \"graphicsEditorLibrary\",\n type: \"graphics-editor\",\n name: \"Graphics2DEditorLibrary\",\n path: \"@nanoforge-dev/graphics-2d-editor\",\n });\n\n return save;\n};\n\nexport const main = (schema: PartMainSchema): Rule => {\n const options = transform(schema);\n\n return mergeWith(generate(options, schema.directory, schema));\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED