{"_id":"@bad-cards/theseus","_rev":"7-088e4b877de1b1c3ff81c7445798109c","name":"@bad-cards/theseus","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.0":{"private":false,"name":"@bad-cards/theseus","version":"1.0.0","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"typescript":"^5.3.2","@testdeck/mocha":"^0.3.3","ts-node":"^10.9.1"},"scripts":{"test":"mocha --exit --config ./.mocharc.js"},"main":"index.ts","directories":{"lib":"lib"},"gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-CeDdoAgrnwbv83nW884dH5feaKxb25YrB88inJOYsAMT1gsmFYAH1crRyUGGqN1bY9hXGMr8kvT3hRY/AyCLqA==","shasum":"f73529884607f9154759e29b472bebaf18efaf4d","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.0.tgz","fileCount":31,"unpackedSize":839111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdooEfV8sDqTP5n280sf4KHsYeMKecA2JXHoeuKDvoJAIhAK3RjN00psmEof+JSHTd6E6A/nwhzLmHlK02Y/zB4PQm"}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.0_1701222417452_0.7053763093324223"},"_hasShrinkwrap":false},"1.0.1":{"private":false,"name":"@bad-cards/theseus","version":"1.0.1","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"index.ts","directories":{"dist":"dist"},"engines":{"node":"16.x"},"gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-fIEk0tVt9lnx6dbKekwOdqZy/ttBg3Pw0VyiAJm33EUzf+ey0Zjz4i4+mNHqGA+5Yhiqkur9YKGGeQyhGdIhDA==","shasum":"a740783f4b16c81d78791bc24b9578f648fdaaab","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.1.tgz","fileCount":4,"unpackedSize":8103,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDATutVkuLPV/H86JUb+3c3Z37kdl3pjDVgkI8T7njmgAiAK3nsv1QH715oJdOekDm9a5/ZVU1b4j2b4jYqL6sTmuw=="}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.1_1701223649013_0.29046618587464024"},"_hasShrinkwrap":false},"1.0.2":{"private":false,"name":"@bad-cards/theseus","version":"1.0.2","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"index.ts","directories":{"dist":"dist"},"engines":{"node":"16.x"},"gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-uumRFF5IdGgLv+RAdUzKd2ZgNP670PYz2hPLeryAi6l1b69jCQust4RPNw54pxwk/NVd8sFcLk67H83EXex13Q==","shasum":"e118d5b94a8cd33cdebd5a53d96883cfe84c7149","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.2.tgz","fileCount":4,"unpackedSize":8103,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDPPU/TNCIP1eGHuxrHrXC9AM+EQp0TVwynhEhBu6EfgIhAJ1cGxi0gme6vEiML7Oz7JJmJuOFo0s9Fy0jviQwjJ8w"}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.2_1701223690319_0.2903555120701127"},"_hasShrinkwrap":false},"1.0.3":{"private":false,"name":"@bad-cards/theseus","version":"1.0.3","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"dist/index.js","directories":{"dist":"dist"},"engines":{"node":"16.x"},"types":"./dist/index.d.ts","gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.3","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-lkBPXiFF5Lg3adDyyvrAe16E5RKH6vbeql3w9i1L4FrUAT//8zEAqvJrXuatfWpB5D1r8mClCa/1Fkueim+z4g==","shasum":"ec03b45802353f560b3ea8e5db3bea461c9e00e0","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.3.tgz","fileCount":6,"unpackedSize":9107,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKnnbyGqYiJyXlRNqj/hWrGIJVfAymoM0gV+HXXPdTLgIhAMbdf0H7W3omRk+H9nVfPhJ6HH7+5Exl17gN3MmZTo62"}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.3_1701223748848_0.5778281364173157"},"_hasShrinkwrap":false},"1.0.4":{"private":false,"name":"@bad-cards/theseus","version":"1.0.4","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"dist/index.js","directories":{"dist":"dist"},"engines":{"node":"16.x"},"types":"./dist/index.d.ts","gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.4","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-qhhyf+7aLgV9O93V12CM0Rk6Syovq5WGvY624ResRk+IAmyXxjNlTB50Vax+qT1OgxnxcGdWPeAz44wtpuc8lA==","shasum":"43740a43a194356e793aa8ca8b29d6db1941afc5","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.4.tgz","fileCount":67,"unpackedSize":103532,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLRAZLVOUN8HoPpuT0TOLeeADJSy5sUJ9RQ8CuB4fGXgIhAJYB8pOjfb7iySCkR1lL2XuqYZ7MoPKfUjxIeuc1b5kn"}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.4_1701223833979_0.42679118320764653"},"_hasShrinkwrap":false},"1.0.5":{"private":false,"name":"@bad-cards/theseus","version":"1.0.5","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"dist/index.js","directories":{"dist":"dist"},"engines":{"node":"16.x"},"types":"./dist/index.d.ts","gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.5","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-ES0c7lqV1sdXYHDzRJVtHpe11r87bxj2RHitLj8/HPOyS63an8xsUQNG1l/W8yOHaMyUlHt2NdA++B+kSdjndw==","shasum":"2f3eac8e72c97255fdef651edde6378e10027647","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.5.tgz","fileCount":46,"unpackedSize":59480,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkhTT52GQcM3C4SaBMJrD9r1SgO+AlBapCvtl0s1u+qQIgBd8nwhUAXkJLq8GR/G7Y6FTXZA/OEwjg1Y22/vJE2BA="}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.5_1701223865325_0.6082749512645398"},"_hasShrinkwrap":false},"1.0.6":{"private":false,"name":"@bad-cards/theseus","version":"1.0.6","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"dist/index.js","directories":{"dist":"dist"},"engines":{"node":"16.x"},"types":"./dist/index.d.ts","gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.6","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-N+kzhfJrIicvu2vEkQUlVScOVUjZqKq4gkewwFnm3lLXv3Rl5JLlt5QLA3XWeLPoEJMmB5bAw0GNGPyu9Gzfbg==","shasum":"79a9f746a616f778bf1b0f4b2c3bcd3828913544","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.6.tgz","fileCount":46,"unpackedSize":59480,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPaMvehP1GtzRyIYipfv+hfFfVaMLqtSmtqb62WYkUYgIhAOriwXGt6zwp2hh34oGk9vLQkwfP22XACwdmsQO6EiGD"}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.6_1701224167845_0.9996607017190207"},"_hasShrinkwrap":false},"1.0.7":{"private":false,"name":"@bad-cards/theseus","version":"1.0.7","description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","devDependencies":{"@testdeck/mocha":"^0.3.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","eslint":"^8.54.0","eslint-config-prettier":"^8.3.0","husky":"^8.0.3","lint-staged":"^14.0.1","prettier":"3.1.0","ts-node":"^10.9.1","typescript":"^5.3.2"},"scripts":{"prepare":"husky install","build":"tsc --project ./tsconfig.json","test":"mocha --exit --config ./.mocharc.js"},"lint-staged":{"*.ts":["prettier --write","eslint --fix"]},"main":"dist/index.js","directories":{"dist":"dist"},"engines":{"node":"16.x"},"types":"./dist/index.d.ts","gitHead":"037f2347f6de529894c6a59d0db1dbd104f63729","_id":"@bad-cards/theseus@1.0.7","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-xMxXpRQxfgDgXOF7R5I1zs99KEoki8qxIuSKNKxbYV+4gv5u/7nk8kH3x+IMY/n1rr8h/NJ1asbPVML44zalaw==","shasum":"d32321ec826f39b612c8bb278b345656d1a2397e","tarball":"https://registry.npmjs.org/@bad-cards/theseus/-/theseus-1.0.7.tgz","fileCount":46,"unpackedSize":59476,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrwG6OHdkwt+vvXA93KrLOlsguxR7Wn73+Ctqyqdb1WAiAteYgAn7ZIcjJkXXj7hyhvZdX8eQIbEkgNysXimxsuKQ=="}]},"_npmUser":{"name":"badcards-jake","email":"info@bad.cards"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/theseus_1.0.7_1701224229997_0.034727133456959436"},"_hasShrinkwrap":false}},"time":{"created":"2023-11-29T01:46:57.323Z","1.0.0":"2023-11-29T01:46:57.741Z","modified":"2023-11-29T02:17:10.398Z","1.0.1":"2023-11-29T02:07:29.199Z","1.0.2":"2023-11-29T02:08:10.508Z","1.0.3":"2023-11-29T02:09:09.029Z","1.0.4":"2023-11-29T02:10:34.156Z","1.0.5":"2023-11-29T02:11:05.515Z","1.0.6":"2023-11-29T02:16:08.092Z","1.0.7":"2023-11-29T02:17:10.191Z"},"maintainers":[{"name":"badcards-jake","email":"info@bad.cards"}],"description":"Functionality to create and modify data fluently and narratively","author":{"name":"Jake Lauer"},"license":"MIT","readme":"\n<div style=\"text-align: center;\">\n\t<img src=\".assets/logo.png\" alt=\"drawing\" style=\"margin:auto\"/>\n</div>\n\n# Theseus\nTheseus offers fluent state manipulation and management for JavaScript applications, streamlining state changes with clarity and enforceable rules.\n\n## Goals\n- **Clarity in State Management**: Ensure that state changes are transparent and understandable.\n- **Ease of Compliance**: Encourage adherence to best practices with a design that makes it easier to follow rules than to break them.\n- **Smart, Automatic Typing**: Leverage intelligent data typing detection to reduce boilerplate and increase efficiency.\n\n\n## Installation\n```bash\nnpm install theseus\n```\n\n## Quick Start\nA brief introduction on how to get started with Theseus. For example:\n\n```javascript\nimport { Evolver, AsyncEvolver } from 'theseus-library';\n\n// Example of using Evolver\nconst myEvolver = Evolver.as<MyDataType>()\n    .withParamName('myData')\n    .withMutators({...});\n\n// Example of using AsyncEvolver\nconst myAsyncEvolver = AsyncEvolver.build<MyAsyncDataType>()\n    .named('asyncData')\n    .withActions({...});\n```\n\n## Core Concepts\n### Evolvers\nEvolvers in Theseus enable flexible state evolution in JavaScript applications, suitable for complex or asynchronous state manipulation. They follow a one-to-many relationship, where one Evolver applies many Mutators. Evolvers always use mutable data and return the same data type, ensuring consistency and predictability in state changes.\n\n- **`Evolver`**: \n  An Evolver manages synchronous state evolution, integrating multiple Mutators for different aspects of state transformation. It uses mutable data as input and returns the same data type, maintaining state integrity.\n\n\t- **AsyncEvolver**: Asynchronous version of `Evolver`, containing mutators which always return a promise of the Evolver's data type.\n\n- **`Mutator`**:\n  Mutators are functions within an Evolver, each specifying a unique rule for how the state evolves. They define the logic for state changes, ensuring that each modification is controlled and deliberate.\n\n### Refineries\nRefineries in Theseus offer structured data transformation, following a one-to-many relationship where one Refinery manages many Forges. Refineries always use immutable data as input, and output any other type.\n\n- **`RefineryComplex`**: \n  A RefineryComplex manages multiple Refineries, each with their own Forges, enabling interconnected data transformation workflows.\n\n- **`Refinery`**: \n  A Refinery orchestrates data transformation, using multiple Forges to handle complex data processing tasks.\n\n- **`Forge`**:\n  Each Forge in a Refinery performs a specific data transformation with **immutable input**, returning data of **some other type**.\n\n### Flags\nFlags in Theseus provide an efficient way to manage binary state representations like bitwise flags or toggles, handling flag enumerations, offering methods for manipulation, testing, and querying of flag values.\n\n\n\n## Examples - To Do Application\n### ToDoEvolver\nShow a real-world example of using `Evolver` for state management.\n\n```typescript\nimport { Evolver } from 'theseus';\n\n// Evolver for managing a single ToDo\nconst ToDoEvolver = Evolver.as<ToDo>().withParamName(\"list\").withMutators({\n    setTitle: ({mutableList}, newTitle: string) => {\n        mutableList.title = newTitle;\n        return mutableList;\n    },\n    setPriority: ({mutableList}, newPriority: number) => {\n        mutableList.priority = newPriority;\n        return mutableList;\n    },\n    togglePinned: ({mutableList}) => {\n        mutableList.pinned = !mutableList.pinned;\n        return mutableList;\n    },\n    setDescription: ({mutableList}, newDescription: string) => {\n        mutableList.description = newDescription;\n        return mutableList;\n    },\n    addListItem: ({mutableList}, listItem: ListItem) => {\n        mutableList.listItem = mutableList.listItem || [];\n        mutableList.listItem.push(listItem);\n        return mutableList;\n    },\n    removeListItem: ({mutableList}, listItemToRemove: ListItem) => {\n        mutableList.listItem = mutableList.listItem.filter(listItem => listItem !== listItemToRemove);\n        return mutableList;\n    },\n    moveItemToSection: ({mutableList}, itemIndex: number, sectionIndex: number) => {\n        mutableList.itemToSectionIndexMap[itemIndex] = sectionIndex;\n        return mutableList;\n    }\n});\n\n// Evolver for managing a single Section\nconst SectionEvolver = Evolver.as<Section>().withParamName(\"section\").withMutators({\n    setTitle: ({mutableSection}, newTitle: string) => {\n        mutableSection.title = newTitle;\n        return mutableSection;\n    },\n    setType: ({mutableSection}, newType: SectionType) => {\n        mutableSection.type = newType;\n        return mutableSection;\n    },\n    updateOrder: ({mutableSection}, newOrder: number[]) => {\n        // Assuming mutableSection has a property that keeps track of the order of ToDo items\n        mutableSection.itemOrder = newOrder;\n        return mutableSection;\n    },\n    // Additional mutators as needed...\n});\n\n// Usage example\n\nconst todoId = (new URLSearchParams(location.search)).get(\"list-id\");\nconst todo: ToDo = async fetchToDoById(todoId); // Fetch a list from the server\n\nconst updatedToDo = ToDoEvolver.mutate(myToDo)\n    .setTitle('New Title')\n    .togglePinned()\n    .getFinalForm();\n\n```\n\n### Asynchronous State Evolution\nIllustrate the use of `AsyncEvolver` for managing asynchronous state changes.\n\n```javascript\n// Example code here\n```\n\n### Mutating State\nDemonstrate how to define and use a `MutatorSet`.\n\n```javascript\n// Example code here\n```\n\n### Data Transformation with Refineries\nProvide an example of creating and using a `Refinery`.\n\n```javascript\n// Example code here\n```\n\n## API Documentation\nLink to detailed API documentation or include a section that covers the main API methods and their usage.\n\n## Contributing\nInstructions for contributing to the Theseus project, including coding standards, testing practices, and how to submit pull requests.\n\n## License\nSpecify the license under which Theseus is released.\n","readmeFilename":"README.md"}