mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2026-02-04 09:31:23 +01:00
* chore: add npm + vite for progressive enhancement * fix: update Dockerfile to copy only the dist folder contents * fix: update Dockerfile to use multi-stage build for optimized production image * fix: correct nginx config file copy command in Dockerfile * chore: add netlify configuration for build and redirects * fix: add NODE_VERSION to environment in Netlify configuration * remove wrong dist folder * Update package.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore: split public and src * migrating all util files from js to ts * feat: Implement HeightmapGenerator and Voronoi module - Added HeightmapGenerator class for generating heightmaps with various tools (Hill, Pit, Range, Trough, Strait, etc.). - Introduced Voronoi class for creating Voronoi diagrams using Delaunator. - Updated index.html to include new modules. - Created index.ts to manage module imports. - Enhanced arrayUtils and graphUtils with type definitions and improved functionality. - Added utility functions for generating grids and calculating Voronoi cells. * chore: add GitHub Actions workflow for deploying to GitHub Pages * fix: update branch name in GitHub Actions workflow from 'main' to 'master' * chore: update package.json to specify Node.js engine version and remove unused launch.json * Initial plan * Update copilot guidelines to reflect NPM/Vite/TypeScript migration Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com> * Update src/modules/heightmap-generator.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/utils/graphUtils.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/modules/heightmap-generator.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: Add TIME and ERROR variables to global scope in HeightmapGenerator * fix: Update base path in vite.config.ts for Netlify deployment * refactor: Migrate features to a new module and remove legacy script reference * refactor: Update feature interfaces and improve type safety in FeatureModule * refactor: Add documentation for markupPack and defineGroups methods in FeatureModule * refactor: Remove legacy ocean-layers.js and migrate functionality to ocean-layers.ts * refactor: Remove river-generator.js script reference and migrate river generation logic to river-generator.ts * refactor: Remove river-generator.js reference and add biomes module * refactor: Migrate lakes functionality to lakes.ts and update related interfaces * refactor: clean up global variable declarations and improve type definitions * refactor: update shoreline calculation and improve type imports in PackedGraph * fix: e2e tests * chore: add biome for linting/formatting * chore: add linting workflow using Biome * refactor: improve code readability by standardizing string quotes and simplifying function calls --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Azgaar <maxganiev@yandex.com> Co-authored-by: Azgaar <azgaar.fmg@yandex.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com>
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
// replaceAll
|
|
if (String.prototype.replaceAll === undefined) {
|
|
String.prototype.replaceAll = function (
|
|
str: string | RegExp,
|
|
newStr: string | ((substring: string, ...args: any[]) => string),
|
|
): string {
|
|
if (Object.prototype.toString.call(str).toLowerCase() === "[object regexp]")
|
|
return this.replace(str as RegExp, newStr as any);
|
|
return this.replace(new RegExp(str, "g"), newStr as any);
|
|
};
|
|
}
|
|
|
|
// flat
|
|
if (Array.prototype.flat === undefined) {
|
|
Array.prototype.flat = function <T>(this: T[], depth?: number): any[] {
|
|
return (this as Array<unknown>).reduce(
|
|
(acc: any[], val: unknown) =>
|
|
Array.isArray(val)
|
|
? acc.concat((val as any).flat(depth))
|
|
: acc.concat(val),
|
|
[],
|
|
);
|
|
};
|
|
}
|
|
|
|
// at
|
|
if (Array.prototype.at === undefined) {
|
|
Array.prototype.at = function <T>(this: T[], index: number): T | undefined {
|
|
if (index < 0) index += this.length;
|
|
if (index < 0 || index >= this.length) return undefined;
|
|
return this[index];
|
|
};
|
|
}
|
|
|
|
// readable stream iterator: https://bugs.chromium.org/p/chromium/issues/detail?id=929585#c10
|
|
if ((ReadableStream.prototype as any)[Symbol.asyncIterator] === undefined) {
|
|
(ReadableStream.prototype as any)[Symbol.asyncIterator] = async function* <R>(
|
|
this: ReadableStream<R>,
|
|
): AsyncGenerator<R, void, unknown> {
|
|
const reader = this.getReader();
|
|
try {
|
|
while (true) {
|
|
const { done, value } = await reader.read();
|
|
if (done) return;
|
|
yield value;
|
|
}
|
|
} finally {
|
|
reader.releaseLock();
|
|
}
|
|
};
|
|
}
|
|
|
|
declare global {
|
|
interface String {
|
|
replaceAll(
|
|
searchValue: string | RegExp,
|
|
replaceValue: string | ((substring: string, ...args: any[]) => string),
|
|
): string;
|
|
}
|
|
|
|
interface Array<T> {
|
|
flat(depth?: number): T[];
|
|
at(index: number): T | undefined;
|
|
}
|
|
|
|
interface ReadableStream<R> {
|
|
[Symbol.asyncIterator](): AsyncIterableIterator<R>;
|
|
}
|
|
}
|