├── .gitignore ├── data ├── Prop__z50 │ ├── Backpack.png │ ├── Backpack__z-35__w10.png │ └── edge-cases │ │ ├── Backpack__z20__tClothing__vSanta.png │ │ └── Backpack__z-35__tClothing__vSanta.png ├── Body__z20 │ ├── Green__w10.png │ ├── Grey__w10.png │ └── Robot__w5.png ├── Clothing__z30 │ ├── Camo__w10.png │ ├── Santa__w10.png │ └── Eye suite__w10.png ├── Face__z40 │ ├── Old Face__w10.png │ ├── Zap Face__w10.png │ ├── Old Face__z-15.png │ ├── Robot Face__w20.png │ ├── Robot Face__z-15.png │ └── Zap Face__z-15.png └── Background__z10 │ ├── Blue__w5.png │ ├── Orange__w10.png │ └── Navy Blue__w10.png ├── custom ├── inputs │ └── example-input.ts ├── generators │ └── example-generator.ts ├── exporters │ └── example-exporter.ts └── renderers │ └── example-renderer.ts ├── package.json ├── tsconfig.json ├── LICENSE ├── index.ts └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn-error.log 3 | 4 | cache/_temp 5 | output 6 | dist -------------------------------------------------------------------------------- /data/Prop__z50/Backpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Prop__z50/Backpack.png -------------------------------------------------------------------------------- /data/Body__z20/Green__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Body__z20/Green__w10.png -------------------------------------------------------------------------------- /data/Body__z20/Grey__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Body__z20/Grey__w10.png -------------------------------------------------------------------------------- /data/Body__z20/Robot__w5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Body__z20/Robot__w5.png -------------------------------------------------------------------------------- /data/Clothing__z30/Camo__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Clothing__z30/Camo__w10.png -------------------------------------------------------------------------------- /data/Face__z40/Old Face__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Old Face__w10.png -------------------------------------------------------------------------------- /data/Face__z40/Zap Face__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Zap Face__w10.png -------------------------------------------------------------------------------- /data/Background__z10/Blue__w5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Background__z10/Blue__w5.png -------------------------------------------------------------------------------- /data/Clothing__z30/Santa__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Clothing__z30/Santa__w10.png -------------------------------------------------------------------------------- /data/Face__z40/Old Face__z-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Old Face__z-15.png -------------------------------------------------------------------------------- /data/Face__z40/Robot Face__w20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Robot Face__w20.png -------------------------------------------------------------------------------- /data/Face__z40/Robot Face__z-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Robot Face__z-15.png -------------------------------------------------------------------------------- /data/Face__z40/Zap Face__z-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Face__z40/Zap Face__z-15.png -------------------------------------------------------------------------------- /data/Background__z10/Orange__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Background__z10/Orange__w10.png -------------------------------------------------------------------------------- /data/Clothing__z30/Eye suite__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Clothing__z30/Eye suite__w10.png -------------------------------------------------------------------------------- /data/Background__z10/Navy Blue__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Background__z10/Navy Blue__w10.png -------------------------------------------------------------------------------- /data/Prop__z50/Backpack__z-35__w10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Prop__z50/Backpack__z-35__w10.png -------------------------------------------------------------------------------- /data/Prop__z50/edge-cases/Backpack__z20__tClothing__vSanta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Prop__z50/edge-cases/Backpack__z20__tClothing__vSanta.png -------------------------------------------------------------------------------- /data/Prop__z50/edge-cases/Backpack__z-35__tClothing__vSanta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hashlips-lab/art-engine-template/HEAD/data/Prop__z50/edge-cases/Backpack__z-35__tClothing__vSanta.png -------------------------------------------------------------------------------- /custom/inputs/example-input.ts: -------------------------------------------------------------------------------- 1 | import InputInterface, { 2 | InputInitPropsInterface, 3 | } from "@hashlips-lab/art-engine/dist/common/inputs/input.interface"; 4 | 5 | interface ExampleCustomInterface { 6 | example: string; 7 | } 8 | 9 | export class ExampleInput implements InputInterface { 10 | public async init(props: InputInitPropsInterface): Promise {} 11 | 12 | public async load(): Promise { 13 | return { example: "Hello World" }; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@hashlips-lab/art-engine-template", 3 | "version": "0.0.0", 4 | "license": "MIT", 5 | "contributors": [ 6 | "Daniel Eugene Botha ", 7 | "Marco Lipparini " 8 | ], 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/hashlips-lab/art-engine-template.git" 12 | }, 13 | "private": true, 14 | "scripts": { 15 | "start": "rm -rf ./dist && tsc && node dist/index.js", 16 | "build": "rm -rf ./dist && tsc" 17 | }, 18 | "dependencies": { 19 | "@hashlips-lab/art-engine": "^2.0.0-alpha7", 20 | "typescript": "^5.1.6" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "display": "Default", 4 | "exclude": ["node_modules", "dist", "build", "node_modules", "__test__"], 5 | "include": ["."], 6 | "compilerOptions": { 7 | "target": "ESNext", 8 | "module": "commonjs", 9 | "composite": false, 10 | "declaration": true, 11 | "declarationMap": true, 12 | "esModuleInterop": true, 13 | "forceConsistentCasingInFileNames": true, 14 | "inlineSources": false, 15 | "isolatedModules": true, 16 | "moduleResolution": "node", 17 | "noUnusedLocals": false, 18 | "noUnusedParameters": false, 19 | "preserveWatchOutput": true, 20 | "skipLibCheck": true, 21 | "strict": true, 22 | "resolveJsonModule": true, 23 | "outDir": "./dist" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /custom/generators/example-generator.ts: -------------------------------------------------------------------------------- 1 | import GeneratorInterface, { 2 | GeneratorInitPropsInterface, 3 | ItemsAttributes, 4 | } from "@hashlips-lab/art-engine/dist/common/generators/generator.interface"; 5 | import InputsManager from "@hashlips-lab/art-engine/dist/utils/managers/inputs/inputs.manager"; 6 | 7 | interface ExampleCustomInterface { 8 | example: string; 9 | } 10 | 11 | export class ExampleGenerator 12 | implements GeneratorInterface 13 | { 14 | inputsManager!: InputsManager; 15 | 16 | public async init(props: GeneratorInitPropsInterface): Promise { 17 | this.inputsManager = props.inputsManager; 18 | } 19 | 20 | public async generate(): Promise> { 21 | const inputData = this.inputsManager.get("any_existing_input_key"); 22 | const items = { 23 | 1: [ 24 | { 25 | kind: "AnyUniqueGeneratorDataIdentifier@v1", 26 | data: { 27 | example: inputData.example, 28 | }, 29 | }, 30 | ], 31 | }; 32 | return items; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 HashLips Lab 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /custom/exporters/example-exporter.ts: -------------------------------------------------------------------------------- 1 | import * as path from "path"; 2 | import * as fs from "fs"; 3 | import ExporterInterface, { 4 | ExporterInitPropsInterface, 5 | } from "@hashlips-lab/art-engine/dist/common/exporters/exporter.interface"; 6 | import ItemsDataManager from "@hashlips-lab/art-engine/dist/utils/managers/items-data/items-data.manager"; 7 | import { ItemPropertiesInterface } from "@hashlips-lab/art-engine/dist/utils/managers/items-data/items-data.interface"; 8 | 9 | export class ExampleExporter implements ExporterInterface { 10 | private rendersGetter!: ItemsDataManager["getRenders"]; 11 | private outputPath!: string; 12 | 13 | public async init(props: ExporterInitPropsInterface) { 14 | this.rendersGetter = props.rendersGetter; 15 | this.outputPath = props.outputPath; 16 | } 17 | 18 | public async export(): Promise { 19 | for (const [itemUid, renders] of Object.entries(this.rendersGetter())) { 20 | // @ts-ignore 21 | let attributes = renders.find( 22 | (render: ItemPropertiesInterface) => 23 | "AnyUniqueRenderDataIdentifier@v1" === render.kind 24 | ); 25 | 26 | if (attributes) { 27 | fs.copyFileSync( 28 | attributes?.data.path, 29 | path.join(path.join(this.outputPath), `${itemUid}.txt`) 30 | ); 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | const { 2 | ArtEngine, 3 | inputs, 4 | generators, 5 | renderers, 6 | exporters, 7 | } = require("@hashlips-lab/art-engine"); 8 | 9 | const BASE_PATH = __dirname; 10 | 11 | const ae = new ArtEngine({ 12 | cachePath: `${BASE_PATH}/../cache`, 13 | outputPath: `${BASE_PATH}/../output`, 14 | useCache: false, 15 | 16 | inputs: { 17 | apes: new inputs.ImageLayersInput({ 18 | assetsBasePath: `${BASE_PATH}/../data`, 19 | }), 20 | }, 21 | 22 | generators: [ 23 | new generators.ImageLayersAttributesGenerator({ 24 | dataSet: "apes", 25 | startIndex: 1, 26 | endIndex: 10, 27 | }), 28 | ], 29 | 30 | renderers: [ 31 | new renderers.ItemAttributesRenderer({ 32 | name: (itemUid: string) => `Ape ${itemUid}`, 33 | description: (attributes: any) => { 34 | return `This is a token with "${attributes["Background"][0]}" as Background`; 35 | }, 36 | }), 37 | new renderers.ImageLayersRenderer({ 38 | width: 2048, 39 | height: 2048, 40 | }), 41 | ], 42 | 43 | exporters: [ 44 | new exporters.ImagesExporter(), 45 | new exporters.Erc721MetadataExporter({ 46 | imageUriPrefix: "ipfs://__CID__/", 47 | }), 48 | new exporters.SolMetadataExporter({ 49 | imageUriPrefix: "ipfs://__CID__/", 50 | symbol: "APES", 51 | sellerFeeBasisPoints: 200, 52 | collectionName: "The Apes", 53 | creators: [ 54 | { 55 | address: "__SOLANA_WALLET_ADDRESS_HERE__", 56 | share: 100, 57 | }, 58 | ], 59 | }), 60 | ], 61 | }); 62 | 63 | (async () => { 64 | await ae.run(); 65 | await ae.printPerformance(); 66 | })(); 67 | -------------------------------------------------------------------------------- /custom/renderers/example-renderer.ts: -------------------------------------------------------------------------------- 1 | import * as path from "path"; 2 | import * as fs from "fs"; 3 | import RendererInterface, { 4 | ItemsRenders, 5 | RendererInitPropsInterface, 6 | } from "@hashlips-lab/art-engine/dist/common/renderers/renderer.interface"; 7 | import ItemsDataManager from "@hashlips-lab/art-engine/dist/utils/managers/items-data/items-data.manager"; 8 | import { CACHE } from "@hashlips-lab/art-engine"; 9 | import { ItemPropertiesInterface } from "@hashlips-lab/art-engine/dist/utils/managers/items-data/items-data.interface"; 10 | 11 | interface ExampleCustomInterface { 12 | path: string; 13 | } 14 | 15 | export class ExampleRenderer 16 | implements RendererInterface 17 | { 18 | attributesGetter!: ItemsDataManager["getAttributes"]; 19 | tempRenderDir!: string; 20 | 21 | constructor() {} 22 | 23 | public async init(props: RendererInitPropsInterface): Promise { 24 | this.attributesGetter = props.attributesGetter; 25 | this.tempRenderDir = path.join( 26 | props.cachePath, 27 | CACHE.RENDERERS_TEMP_CACHE_DIR, 28 | "words" 29 | ); 30 | } 31 | 32 | public async render(): Promise> { 33 | const renders: ItemsRenders = {}; 34 | 35 | for (const [itemUid, attributes] of Object.entries( 36 | this.attributesGetter() 37 | )) { 38 | if (!fs.existsSync(this.tempRenderDir)) { 39 | fs.mkdirSync(this.tempRenderDir); 40 | } 41 | // @ts-ignore 42 | const supportedAssets = attributes.filter( 43 | (attribute: ItemPropertiesInterface) => 44 | "AnyUniqueGeneratorDataIdentifier@v1" === attribute.kind 45 | ); 46 | 47 | if (supportedAssets.length > 0) { 48 | const outputPath = path.join(this.tempRenderDir, `${itemUid}.json`); 49 | fs.writeFileSync( 50 | outputPath, 51 | JSON.stringify(supportedAssets[0].data, null, 2) 52 | ); 53 | 54 | renders[itemUid] = [ 55 | { 56 | kind: "AnyUniqueRenderDataIdentifier@v1", 57 | data: { 58 | path: outputPath, 59 | }, 60 | }, 61 | ]; 62 | } 63 | } 64 | 65 | return renders; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@hashlips-lab/art-engine@^2.0.0-alpha7": 6 | version "2.0.0-alpha7" 7 | resolved "https://registry.yarnpkg.com/@hashlips-lab/art-engine/-/art-engine-2.0.0-alpha7.tgz#66cb44315f86ff744e30bf263bdd70b768ae9901" 8 | integrity sha512-84COX931yal2VnOqMybPm7ZWX0vedfNhKiG4dv42XuTesb86NHhvulKh6pnu8Ezyvs8ZcS3BlTTNLDJ51O/tGA== 9 | dependencies: 10 | random-seed "^0.3.0" 11 | sharp "0.31.1" 12 | 13 | base64-js@^1.3.1: 14 | version "1.5.1" 15 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 16 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 17 | 18 | bl@^4.0.3: 19 | version "4.1.0" 20 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 21 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 22 | dependencies: 23 | buffer "^5.5.0" 24 | inherits "^2.0.4" 25 | readable-stream "^3.4.0" 26 | 27 | buffer@^5.5.0: 28 | version "5.7.1" 29 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 30 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 31 | dependencies: 32 | base64-js "^1.3.1" 33 | ieee754 "^1.1.13" 34 | 35 | chownr@^1.1.1: 36 | version "1.1.4" 37 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 38 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 39 | 40 | color-convert@^2.0.1: 41 | version "2.0.1" 42 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 43 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 44 | dependencies: 45 | color-name "~1.1.4" 46 | 47 | color-name@^1.0.0, color-name@~1.1.4: 48 | version "1.1.4" 49 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 50 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 51 | 52 | color-string@^1.9.0: 53 | version "1.9.1" 54 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" 55 | integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== 56 | dependencies: 57 | color-name "^1.0.0" 58 | simple-swizzle "^0.2.2" 59 | 60 | color@^4.2.3: 61 | version "4.2.3" 62 | resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" 63 | integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== 64 | dependencies: 65 | color-convert "^2.0.1" 66 | color-string "^1.9.0" 67 | 68 | decompress-response@^6.0.0: 69 | version "6.0.0" 70 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 71 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 72 | dependencies: 73 | mimic-response "^3.1.0" 74 | 75 | deep-extend@^0.6.0: 76 | version "0.6.0" 77 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 78 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 79 | 80 | detect-libc@^2.0.0, detect-libc@^2.0.1: 81 | version "2.0.1" 82 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 83 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 84 | 85 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 86 | version "1.4.4" 87 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 88 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 89 | dependencies: 90 | once "^1.4.0" 91 | 92 | expand-template@^2.0.3: 93 | version "2.0.3" 94 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 95 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 96 | 97 | fs-constants@^1.0.0: 98 | version "1.0.0" 99 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 100 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 101 | 102 | github-from-package@0.0.0: 103 | version "0.0.0" 104 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 105 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 106 | 107 | ieee754@^1.1.13: 108 | version "1.2.1" 109 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 110 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 111 | 112 | inherits@^2.0.3, inherits@^2.0.4: 113 | version "2.0.4" 114 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 115 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 116 | 117 | ini@~1.3.0: 118 | version "1.3.8" 119 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 120 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 121 | 122 | is-arrayish@^0.3.1: 123 | version "0.3.2" 124 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 125 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 126 | 127 | json-stringify-safe@^5.0.1: 128 | version "5.0.1" 129 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 130 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 131 | 132 | lru-cache@^6.0.0: 133 | version "6.0.0" 134 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 135 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 136 | dependencies: 137 | yallist "^4.0.0" 138 | 139 | mimic-response@^3.1.0: 140 | version "3.1.0" 141 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 142 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 143 | 144 | minimist@^1.2.0, minimist@^1.2.3: 145 | version "1.2.8" 146 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 147 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 148 | 149 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 150 | version "0.5.3" 151 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 152 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 153 | 154 | napi-build-utils@^1.0.1: 155 | version "1.0.2" 156 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 157 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 158 | 159 | node-abi@^3.3.0: 160 | version "3.33.0" 161 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f" 162 | integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog== 163 | dependencies: 164 | semver "^7.3.5" 165 | 166 | node-addon-api@^5.0.0: 167 | version "5.1.0" 168 | resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" 169 | integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== 170 | 171 | once@^1.3.1, once@^1.4.0: 172 | version "1.4.0" 173 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 174 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 175 | dependencies: 176 | wrappy "1" 177 | 178 | prebuild-install@^7.1.1: 179 | version "7.1.1" 180 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 181 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 182 | dependencies: 183 | detect-libc "^2.0.0" 184 | expand-template "^2.0.3" 185 | github-from-package "0.0.0" 186 | minimist "^1.2.3" 187 | mkdirp-classic "^0.5.3" 188 | napi-build-utils "^1.0.1" 189 | node-abi "^3.3.0" 190 | pump "^3.0.0" 191 | rc "^1.2.7" 192 | simple-get "^4.0.0" 193 | tar-fs "^2.0.0" 194 | tunnel-agent "^0.6.0" 195 | 196 | pump@^3.0.0: 197 | version "3.0.0" 198 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 199 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 200 | dependencies: 201 | end-of-stream "^1.1.0" 202 | once "^1.3.1" 203 | 204 | random-seed@^0.3.0: 205 | version "0.3.0" 206 | resolved "https://registry.yarnpkg.com/random-seed/-/random-seed-0.3.0.tgz#d945f2e1f38f49e8d58913431b8bf6bb937556cd" 207 | integrity sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA== 208 | dependencies: 209 | json-stringify-safe "^5.0.1" 210 | 211 | rc@^1.2.7: 212 | version "1.2.8" 213 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 214 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 215 | dependencies: 216 | deep-extend "^0.6.0" 217 | ini "~1.3.0" 218 | minimist "^1.2.0" 219 | strip-json-comments "~2.0.1" 220 | 221 | readable-stream@^3.1.1, readable-stream@^3.4.0: 222 | version "3.6.2" 223 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 224 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 225 | dependencies: 226 | inherits "^2.0.3" 227 | string_decoder "^1.1.1" 228 | util-deprecate "^1.0.1" 229 | 230 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 231 | version "5.2.1" 232 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 233 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 234 | 235 | semver@^7.3.5, semver@^7.3.7: 236 | version "7.3.8" 237 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 238 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 239 | dependencies: 240 | lru-cache "^6.0.0" 241 | 242 | sharp@0.31.1: 243 | version "0.31.1" 244 | resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.31.1.tgz#b2f7076d381a120761aa93700cadefcf90a22458" 245 | integrity sha512-GR8M1wBwOiFKLkm9JPun27OQnNRZdHfSf9VwcdZX6UrRmM1/XnOrLFTF0GAil+y/YK4E6qcM/ugxs80QirsHxg== 246 | dependencies: 247 | color "^4.2.3" 248 | detect-libc "^2.0.1" 249 | node-addon-api "^5.0.0" 250 | prebuild-install "^7.1.1" 251 | semver "^7.3.7" 252 | simple-get "^4.0.1" 253 | tar-fs "^2.1.1" 254 | tunnel-agent "^0.6.0" 255 | 256 | simple-concat@^1.0.0: 257 | version "1.0.1" 258 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 259 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 260 | 261 | simple-get@^4.0.0, simple-get@^4.0.1: 262 | version "4.0.1" 263 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 264 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 265 | dependencies: 266 | decompress-response "^6.0.0" 267 | once "^1.3.1" 268 | simple-concat "^1.0.0" 269 | 270 | simple-swizzle@^0.2.2: 271 | version "0.2.2" 272 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 273 | integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== 274 | dependencies: 275 | is-arrayish "^0.3.1" 276 | 277 | string_decoder@^1.1.1: 278 | version "1.3.0" 279 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 280 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 281 | dependencies: 282 | safe-buffer "~5.2.0" 283 | 284 | strip-json-comments@~2.0.1: 285 | version "2.0.1" 286 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 287 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 288 | 289 | tar-fs@^2.0.0, tar-fs@^2.1.1: 290 | version "2.1.1" 291 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 292 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 293 | dependencies: 294 | chownr "^1.1.1" 295 | mkdirp-classic "^0.5.2" 296 | pump "^3.0.0" 297 | tar-stream "^2.1.4" 298 | 299 | tar-stream@^2.1.4: 300 | version "2.2.0" 301 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 302 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 303 | dependencies: 304 | bl "^4.0.3" 305 | end-of-stream "^1.4.1" 306 | fs-constants "^1.0.0" 307 | inherits "^2.0.3" 308 | readable-stream "^3.1.1" 309 | 310 | tunnel-agent@^0.6.0: 311 | version "0.6.0" 312 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 313 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 314 | dependencies: 315 | safe-buffer "^5.0.1" 316 | 317 | typescript@^5.1.6: 318 | version "5.1.6" 319 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" 320 | integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== 321 | 322 | util-deprecate@^1.0.1: 323 | version "1.0.2" 324 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 325 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 326 | 327 | wrappy@1: 328 | version "1.0.2" 329 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 330 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 331 | 332 | yallist@^4.0.0: 333 | version "4.0.0" 334 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 335 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 336 | --------------------------------------------------------------------------------