czon 0.1.0 → 0.1.1
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/.github/workflows/bump-version.yml +112 -0
- package/.github/workflows/ci.yml +64 -0
- package/.github/workflows/pages.yml +61 -0
- package/.github/workflows/publish.yml +81 -0
- package/.husky/pre-commit +1 -0
- package/.prettierignore +14 -0
- package/.prettierrc.json +11 -0
- package/.zen/meta.json +106 -0
- package/.zen/src/ar-SA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ar-SA/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/ar-SA/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/ar-SA/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/ar-SA/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/ar-SA/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/da-DK/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/da-DK/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/da-DK/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/da-DK/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/da-DK/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/da-DK/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/de-DE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/de-DE/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/de-DE/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/de-DE/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/de-DE/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/de-DE/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/en-US/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/en-US/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/en-US/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/en-US/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/en-US/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/en-US/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/es-ES/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/es-ES/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/es-ES/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/es-ES/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/es-ES/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/es-ES/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/es-MX/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/es-MX/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/es-MX/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/es-MX/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/es-MX/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/es-MX/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/fi-FI/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/fi-FI/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/fi-FI/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/fi-FI/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/fi-FI/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/fi-FI/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/fr-FR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/fr-FR/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/fr-FR/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/fr-FR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/fr-FR/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/fr-FR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/hi-IN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/hi-IN/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/hi-IN/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/hi-IN/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/hi-IN/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/hi-IN/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/id-ID/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/id-ID/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/id-ID/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/id-ID/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/id-ID/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/id-ID/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/it-IT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/it-IT/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/it-IT/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/it-IT/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/it-IT/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/it-IT/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/ja-JP/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ja-JP/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/ja-JP/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/ja-JP/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/ja-JP/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/ja-JP/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/ko-KR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ko-KR/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/ko-KR/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/ko-KR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/ko-KR/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/ko-KR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/nl-NL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/nl-NL/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/nl-NL/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/nl-NL/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/nl-NL/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/nl-NL/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/no-NO/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/no-NO/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/no-NO/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/no-NO/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/no-NO/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/no-NO/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/pl-PL/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pl-PL/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/pl-PL/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/pl-PL/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/pl-PL/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/pl-PL/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/pt-BR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pt-BR/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/pt-BR/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/pt-BR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/pt-BR/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/pt-BR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/pt-PT/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/pt-PT/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/pt-PT/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/pt-PT/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/pt-PT/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/pt-PT/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/ru-RU/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/ru-RU/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/ru-RU/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/ru-RU/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/ru-RU/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/ru-RU/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/sv-SE/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/sv-SE/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/sv-SE/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/sv-SE/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/sv-SE/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/sv-SE/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/th-TH/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/th-TH/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/th-TH/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/th-TH/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/th-TH/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/th-TH/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/tr-TR/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/tr-TR/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/tr-TR/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/tr-TR/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/tr-TR/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/tr-TR/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/uk-UA/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/uk-UA/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +79 -0
- package/.zen/src/uk-UA/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/uk-UA/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/uk-UA/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/uk-UA/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/vi-VN/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +121 -0
- package/.zen/src/vi-VN/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +78 -0
- package/.zen/src/vi-VN/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/vi-VN/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +71 -0
- package/.zen/src/vi-VN/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/vi-VN/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +30 -0
- package/.zen/src/zh-Hans/4b2cedd76dddb2a20b1890460735dd38fa65e293a37d6bd15310852ba1c851c4.md +21 -0
- package/.zen/src/zh-Hans/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
- package/.zen/src/zh-Hans/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +81 -0
- package/.zen/src/zh-Hans/59fe7aff1dcf6f4bbbaff1ad2f7c4c5a3d34b99b1d288b78717ee34525c9897b.md +24 -0
- package/.zen/src/zh-Hans/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +74 -0
- package/.zen/src/zh-Hans/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +74 -0
- package/.zen/src/zh-Hans/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +75 -0
- package/.zen/src/zh-Hans/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +31 -0
- package/.zen/src/zh-Hans/c1b0e9eb01d78140c21097187d6395815fd01a6f179af31b7e72532ec6c7c682.md +75 -0
- package/.zen/src/zh-Hans/cbf2fcda767ee28fe49828908c14de2c8edba8f8b7d721743eda767838b70923.md +67 -0
- package/.zen/src/zh-Hans/ec9fa686ad66e28d8d9ee131812bb6f31052185584de0853db1ee8893ebddda3.md +22 -0
- package/.zen/src/zh-Hans/f119cbaf7645c713b1e0fa67abdc1070766c80f94eec9e42108bfa37ef85db43.md +24 -0
- package/.zen/src/zh-Hant/50bf41ac6fd8ec8cd6481fd1114aaf00abed0461fc8e8c81cc0373d38ffa835c.md +123 -0
- package/.zen/src/zh-Hant/579c3a203225b8b7aead541f42381de0619d8bc1d451d0d9c3267dbc74205503.md +81 -0
- package/.zen/src/zh-Hant/6e7ca196ba51235db30218cf9b28f92d35937b09a22411062be088a0086b29ed.md +70 -0
- package/.zen/src/zh-Hant/74541be9d53c64107a548e09847244d52bff803960942cd2bfbd2a8600afb805.md +74 -0
- package/.zen/src/zh-Hant/98a9dd72146a69d155030cb7286ea2d10e0521451de9754cbdfcde46c46f2c71.md +71 -0
- package/.zen/src/zh-Hant/9d0485c244a80b14dcc92ef91cf5ff82220ed774ebb5e09549929ac75200c7bc.md +31 -0
- package/README.md +56 -0
- package/assets/templates/default/layout.html +421 -0
- package/dist/ai/extractMetadataFromMarkdown.d.ts +8 -0
- package/dist/ai/extractMetadataFromMarkdown.d.ts.map +1 -0
- package/dist/ai/extractMetadataFromMarkdown.js +88 -0
- package/dist/ai/extractMetadataFromMarkdown.js.map +1 -0
- package/dist/ai/translateMarkdown.d.ts +8 -0
- package/dist/ai/translateMarkdown.d.ts.map +1 -0
- package/dist/ai/translateMarkdown.js +60 -0
- package/dist/ai/translateMarkdown.js.map +1 -0
- package/dist/build/pipeline.d.ts +6 -0
- package/dist/build/pipeline.d.ts.map +1 -0
- package/dist/build/pipeline.js +180 -0
- package/dist/build/pipeline.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +102 -0
- package/dist/cli.js.map +1 -0
- package/dist/findEntries.d.ts +10 -0
- package/dist/findEntries.d.ts.map +1 -0
- package/dist/findEntries.js +38 -0
- package/dist/findEntries.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/languages.d.ts +2 -0
- package/dist/languages.d.ts.map +1 -0
- package/dist/languages.js +37 -0
- package/dist/languages.js.map +1 -0
- package/dist/metadata.d.ts +14 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +78 -0
- package/dist/metadata.js.map +1 -0
- package/dist/paths.d.ts +6 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -0
- package/dist/process/extractMetadataByAI.d.ts +5 -0
- package/dist/process/extractMetadataByAI.d.ts.map +1 -0
- package/dist/process/extractMetadataByAI.js +31 -0
- package/dist/process/extractMetadataByAI.js.map +1 -0
- package/dist/process/scanSourceFiles.d.ts +5 -0
- package/dist/process/scanSourceFiles.d.ts.map +1 -0
- package/dist/process/scanSourceFiles.js +70 -0
- package/dist/process/scanSourceFiles.js.map +1 -0
- package/dist/process/template.d.ts +5 -0
- package/dist/process/template.d.ts.map +1 -0
- package/dist/process/template.js +207 -0
- package/dist/process/template.js.map +1 -0
- package/dist/services/openai.d.ts +41 -0
- package/dist/services/openai.d.ts.map +1 -0
- package/dist/services/openai.js +54 -0
- package/dist/services/openai.js.map +1 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/convertMarkdownToHtml.d.ts +7 -0
- package/dist/utils/convertMarkdownToHtml.d.ts.map +1 -0
- package/dist/utils/convertMarkdownToHtml.js +94 -0
- package/dist/utils/convertMarkdownToHtml.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +6 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +22 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/sha256.d.ts +2 -0
- package/dist/utils/sha256.d.ts.map +1 -0
- package/dist/utils/sha256.js +7 -0
- package/dist/utils/sha256.js.map +1 -0
- package/docs/test-katex.md +66 -0
- package/docs/test-mermaid.md +105 -0
- package/docs/tricks.md +15 -0
- package/package.json +58 -6
- package/src/ai/extractMetadataFromMarkdown.ts +95 -0
- package/src/ai/translateMarkdown.ts +60 -0
- package/src/build/pipeline.ts +172 -0
- package/src/cli.ts +73 -0
- package/src/findEntries.ts +37 -0
- package/src/index.ts +1 -0
- package/src/languages.ts +37 -0
- package/src/metadata.ts +44 -0
- package/src/paths.ts +7 -0
- package/src/process/extractMetadataByAI.ts +31 -0
- package/src/process/scanSourceFiles.ts +73 -0
- package/src/process/template.ts +222 -0
- package/src/services/openai.ts +92 -0
- package/src/types.ts +37 -0
- package/src/utils/convertMarkdownToHtml.ts +93 -0
- package/src/utils/frontmatter.ts +18 -0
- package/src/utils/sha256.ts +4 -0
- package/test-multilang.js +44 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.buildSite = buildSite;
|
|
37
|
+
const fs = __importStar(require("fs/promises"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const translateMarkdown_1 = require("../ai/translateMarkdown");
|
|
40
|
+
const metadata_1 = require("../metadata");
|
|
41
|
+
const paths_1 = require("../paths");
|
|
42
|
+
const extractMetadataByAI_1 = require("../process/extractMetadataByAI");
|
|
43
|
+
const scanSourceFiles_1 = require("../process/scanSourceFiles");
|
|
44
|
+
const template_1 = require("../process/template");
|
|
45
|
+
const frontmatter_1 = require("../utils/frontmatter");
|
|
46
|
+
/**
|
|
47
|
+
* 验证构建配置
|
|
48
|
+
*/
|
|
49
|
+
async function validateConfig(options) {
|
|
50
|
+
const { verbose = false } = options;
|
|
51
|
+
if (verbose) {
|
|
52
|
+
console.log(`🚀 Starting ZEN build...`);
|
|
53
|
+
if (options.langs && options.langs.length > 0) {
|
|
54
|
+
console.log(`🌐 Target languages: ${options.langs.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
console.log(`🔍 Verbose mode enabled`);
|
|
57
|
+
}
|
|
58
|
+
metadata_1.MetaData.options = options;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 存储母语文件到 .zen/src
|
|
62
|
+
*/
|
|
63
|
+
async function storeNativeFiles() {
|
|
64
|
+
const { options: { verbose }, files, } = metadata_1.MetaData;
|
|
65
|
+
for (const file of metadata_1.MetaData.files) {
|
|
66
|
+
try {
|
|
67
|
+
if (!file.hash)
|
|
68
|
+
throw new Error(`Missing hash`);
|
|
69
|
+
if (!file.metadata?.inferred_lang)
|
|
70
|
+
throw new Error(`Missing inferred language`);
|
|
71
|
+
const filePath = path.join(paths_1.ZEN_SRC_DIR, file.metadata.inferred_lang, file.hash + '.md');
|
|
72
|
+
const originalContent = await fs.readFile(path.join(paths_1.INPUT_DIR, file.path), 'utf-8');
|
|
73
|
+
const enhancedContent = (0, frontmatter_1.updateFrontmatter)(originalContent, {
|
|
74
|
+
title: file.metadata.title,
|
|
75
|
+
summary: file.metadata.summary,
|
|
76
|
+
tags: file.metadata.tags,
|
|
77
|
+
inferred_date: file.metadata.inferred_date,
|
|
78
|
+
inferred_lang: file.metadata.inferred_lang,
|
|
79
|
+
});
|
|
80
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
81
|
+
await fs.writeFile(filePath, enhancedContent, 'utf-8');
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.warn(`⚠️ Failed to store native file ${file.path}:`, error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (verbose && files.length > 0) {
|
|
88
|
+
console.log(`💾 Stored ${files.length} native language files to .zen/src`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 处理翻译
|
|
93
|
+
*/
|
|
94
|
+
async function processTranslations() {
|
|
95
|
+
const { files, options: { langs = [], verbose }, } = metadata_1.MetaData;
|
|
96
|
+
await Promise.all(files.flatMap(async (file) => {
|
|
97
|
+
return Promise.all(langs.map(async (lang) => {
|
|
98
|
+
if (verbose)
|
|
99
|
+
console.info(`📄 Processing file for translation: ${file.path}`);
|
|
100
|
+
if (!file.metadata) {
|
|
101
|
+
console.warn(`⚠️ Missing metadata for file: ${file.path}, skipping translation.`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (verbose)
|
|
105
|
+
console.log(`🌐 Translating to ${lang}...`);
|
|
106
|
+
// 存储翻译文件到 .zen/src/{lang}
|
|
107
|
+
const sourcePath = path.join(paths_1.ZEN_SRC_DIR, file.metadata.inferred_lang, file.hash + '.md'); // 使用已经加强的母语文件路径
|
|
108
|
+
const targetPath = path.join(paths_1.ZEN_SRC_DIR, lang, file.hash + '.md');
|
|
109
|
+
try {
|
|
110
|
+
const content = await fs.readFile(sourcePath, 'utf-8');
|
|
111
|
+
if (file.metadata.inferred_lang === lang) {
|
|
112
|
+
if (verbose)
|
|
113
|
+
console.log(`ℹ️ Skipping translation for ${file.path}, already in target language`);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// 翻译
|
|
118
|
+
// 先检查是否已经有翻译文件存在
|
|
119
|
+
const exists = await fs.access(targetPath).then(() => true, () => false);
|
|
120
|
+
if (exists) {
|
|
121
|
+
if (verbose)
|
|
122
|
+
console.log(`ℹ️ Translation already exists for ${file.path} in ${lang}`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
const translatedContent = await (0, translateMarkdown_1.translateMarkdown)(content, lang);
|
|
127
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
128
|
+
await fs.writeFile(targetPath, translatedContent, 'utf-8');
|
|
129
|
+
if (verbose)
|
|
130
|
+
console.log(`✅ Translated file saved: ${targetPath}`);
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error(`❌ Failed to translate to ${lang}:`, error);
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 构建管道(函数组合)
|
|
140
|
+
*/
|
|
141
|
+
async function buildPipeline(options) {
|
|
142
|
+
// 验证配置
|
|
143
|
+
await validateConfig(options);
|
|
144
|
+
// 清理输出目录
|
|
145
|
+
await fs.rm(paths_1.ZEN_DIST_DIR, { recursive: true, force: true });
|
|
146
|
+
// 确保 .zen/.gitignore 文件
|
|
147
|
+
await fs.mkdir(paths_1.ZEN_DIR, { recursive: true });
|
|
148
|
+
await fs.writeFile(path.join(paths_1.ZEN_DIR, '.gitignore'), 'dist\n', 'utf-8');
|
|
149
|
+
// 扫描源文件
|
|
150
|
+
await (0, scanSourceFiles_1.scanSourceFiles)();
|
|
151
|
+
// 运行 AI 元数据提取
|
|
152
|
+
await (0, extractMetadataByAI_1.extractMetadataByAI)();
|
|
153
|
+
// 存储母语文件
|
|
154
|
+
await storeNativeFiles();
|
|
155
|
+
// 处理翻译
|
|
156
|
+
await processTranslations();
|
|
157
|
+
// 渲染模板
|
|
158
|
+
await (0, template_1.renderTemplates)();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 主构建函数
|
|
162
|
+
*/
|
|
163
|
+
async function buildSite(options) {
|
|
164
|
+
const startTime = Date.now();
|
|
165
|
+
try {
|
|
166
|
+
await (0, metadata_1.loadMetaData)();
|
|
167
|
+
await buildPipeline(options);
|
|
168
|
+
const endTime = Date.now();
|
|
169
|
+
const duration = ((endTime - startTime) / 1000).toFixed(2);
|
|
170
|
+
console.log(`🎉 Build completed in ${duration}s`);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error(`❌ Build failed:`, error);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
await (0, metadata_1.saveMetaData)();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/build/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const clipanion_1 = require("clipanion");
|
|
38
|
+
const dotenv_1 = require("dotenv");
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const pipeline_1 = require("./build/pipeline");
|
|
42
|
+
// 加载 .env 文件中的环境变量
|
|
43
|
+
(0, dotenv_1.config)();
|
|
44
|
+
// 获取版本号 - 从 package.json 读取
|
|
45
|
+
function getVersion() {
|
|
46
|
+
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
47
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
48
|
+
return packageJson.version;
|
|
49
|
+
}
|
|
50
|
+
// Build 命令
|
|
51
|
+
class BuildCommand extends clipanion_1.Command {
|
|
52
|
+
constructor() {
|
|
53
|
+
super(...arguments);
|
|
54
|
+
this.template = clipanion_1.Option.String('-t,--template');
|
|
55
|
+
this.verbose = clipanion_1.Option.Boolean('-v,--verbose');
|
|
56
|
+
this.lang = clipanion_1.Option.Array('--lang', {
|
|
57
|
+
description: 'Target languages for translation (e.g., en-US, ja-JP)',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async execute() {
|
|
61
|
+
try {
|
|
62
|
+
await (0, pipeline_1.buildSite)({
|
|
63
|
+
template: this.template ? path.resolve(this.template) : undefined,
|
|
64
|
+
verbose: this.verbose,
|
|
65
|
+
langs: this.lang,
|
|
66
|
+
});
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.context.stderr.write(`❌ Build failed: ${error}\n`);
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
BuildCommand.paths = [['build']];
|
|
76
|
+
BuildCommand.usage = clipanion_1.Command.Usage({
|
|
77
|
+
description: 'Build documentation site from Markdown files in current directory',
|
|
78
|
+
details: `
|
|
79
|
+
This command builds a documentation site from Markdown files in the current directory.
|
|
80
|
+
The output will be placed in the .zen/dist directory.
|
|
81
|
+
|
|
82
|
+
Examples:
|
|
83
|
+
$ zengen build
|
|
84
|
+
$ zengen build --lang en-US --lang ja-JP (translate to English and Japanese)
|
|
85
|
+
`,
|
|
86
|
+
});
|
|
87
|
+
// 创建 CLI 应用
|
|
88
|
+
const cli = new clipanion_1.Cli({
|
|
89
|
+
binaryName: 'zengen',
|
|
90
|
+
binaryLabel: 'ZEN - A minimalist Markdown documentation site builder',
|
|
91
|
+
binaryVersion: getVersion(),
|
|
92
|
+
});
|
|
93
|
+
// 注册命令
|
|
94
|
+
cli.register(BuildCommand);
|
|
95
|
+
// 运行 CLI
|
|
96
|
+
cli.runExit(process.argv.slice(2), {
|
|
97
|
+
...clipanion_1.Cli.defaultContext,
|
|
98
|
+
stdin: process.stdin,
|
|
99
|
+
stdout: process.stdout,
|
|
100
|
+
stderr: process.stderr,
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAiD;AACjD,mCAAgC;AAChC,uCAAyB;AACzB,2CAA6B;AAC7B,+CAA6C;AAE7C,mBAAmB;AACnB,IAAA,eAAM,GAAE,CAAC;AAET,4BAA4B;AAC5B,SAAS,UAAU;IACjB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,WAAW;AACX,MAAM,YAAa,SAAQ,mBAAO;IAAlC;;QAGE,aAAQ,GAAG,kBAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1C,YAAO,GAAG,kBAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,SAAI,GAAG,kBAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5B,WAAW,EAAE,uDAAuD;SACrE,CAAC,CAAC;IA4BL,CAAC;IAdC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAA,oBAAS,EAAC;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,IAAI;aACjB,CAAC,CAAC;YAEH,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;;AAjCM,kBAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,AAAd,CAAe;AAQpB,kBAAK,GAAG,mBAAO,CAAC,KAAK,CAAC;IAC3B,WAAW,EAAE,mEAAmE;IAChF,OAAO,EAAE;;;;;;;KAOR;CACF,CAAC,AAVU,CAUT;AAkBL,YAAY;AACZ,MAAM,GAAG,GAAG,IAAI,eAAG,CAAC;IAClB,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,wDAAwD;IACrE,aAAa,EAAE,UAAU,EAAE;CAC5B,CAAC,CAAC;AAEH,OAAO;AACP,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAE3B,SAAS;AACT,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACjC,GAAG,eAAG,CAAC,cAAc;IACrB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 使用git命令查找所有Markdown文件
|
|
3
|
+
* 使用git ls-files --others --cached --exclude-standard获取所有文件
|
|
4
|
+
* 然后过滤掉.zen目录和只保留.md文件
|
|
5
|
+
*
|
|
6
|
+
* @param dirPath 要扫描的目录路径
|
|
7
|
+
* @returns Promise<string[]> 返回Markdown文件的相对路径数组
|
|
8
|
+
*/
|
|
9
|
+
export declare const findMarkdownEntries: (dirPath: string) => Promise<string[]>;
|
|
10
|
+
//# sourceMappingURL=findEntries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findEntries.d.ts","sourceRoot":"","sources":["../src/findEntries.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAuB3E,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findMarkdownEntries = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
7
|
+
/**
|
|
8
|
+
* 使用git命令查找所有Markdown文件
|
|
9
|
+
* 使用git ls-files --others --cached --exclude-standard获取所有文件
|
|
10
|
+
* 然后过滤掉.zen目录和只保留.md文件
|
|
11
|
+
*
|
|
12
|
+
* @param dirPath 要扫描的目录路径
|
|
13
|
+
* @returns Promise<string[]> 返回Markdown文件的相对路径数组
|
|
14
|
+
*/
|
|
15
|
+
const findMarkdownEntries = async (dirPath) => {
|
|
16
|
+
try {
|
|
17
|
+
// 使用git命令获取所有文件(包括已跟踪和未跟踪的文件)
|
|
18
|
+
// 在指定的目录下执行git命令
|
|
19
|
+
const { stdout } = await execAsync('git ls-files --others --cached --exclude-standard', {
|
|
20
|
+
cwd: dirPath,
|
|
21
|
+
});
|
|
22
|
+
// 按行分割并过滤
|
|
23
|
+
const files = stdout
|
|
24
|
+
.split('\n')
|
|
25
|
+
.filter(line => line.trim() !== '') // 移除空行
|
|
26
|
+
.filter(file => !file.startsWith('.zen')) // 过滤掉.zen目录下的文件
|
|
27
|
+
.filter(file => file.endsWith('.md')); // 只保留.md文件
|
|
28
|
+
return files;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error('Error finding markdown entries:', error);
|
|
32
|
+
// 如果git命令失败,返回空数组
|
|
33
|
+
// 这可以处理没有git仓库或git不可用的情况
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.findMarkdownEntries = findMarkdownEntries;
|
|
38
|
+
//# sourceMappingURL=findEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findEntries.js","sourceRoot":"","sources":["../src/findEntries.ts"],"names":[],"mappings":";;;AAAA,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC;;;;;;;GAOG;AACI,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAqB,EAAE;IAC9E,IAAI,CAAC;QACH,8BAA8B;QAC9B,iBAAiB;QACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,mDAAmD,EAAE;YACtF,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;QAEH,UAAU;QACV,MAAM,KAAK,GAAG,MAAM;aACjB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO;aAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;aACzD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW;QAEpD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAExD,kBAAkB;QAClB,yBAAyB;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAvBW,QAAA,mBAAmB,uBAuB9B"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,iBAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoCjD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LANGUAGE_NAMES = void 0;
|
|
4
|
+
exports.LANGUAGE_NAMES = {
|
|
5
|
+
// 现有语言
|
|
6
|
+
'zh-Hans': '简体中文',
|
|
7
|
+
'en-US': 'English',
|
|
8
|
+
'ja-JP': '日本語',
|
|
9
|
+
'ko-KR': '한국어',
|
|
10
|
+
'es-ES': 'Español',
|
|
11
|
+
'fr-FR': 'Français',
|
|
12
|
+
'de-DE': 'Deutsch',
|
|
13
|
+
'ru-RU': 'Русский',
|
|
14
|
+
// 补充缺失的项目支持语言
|
|
15
|
+
'pt-PT': 'Português',
|
|
16
|
+
// 欧洲主要语言
|
|
17
|
+
'it-IT': 'Italiano',
|
|
18
|
+
'nl-NL': 'Nederlands',
|
|
19
|
+
'pl-PL': 'Polski',
|
|
20
|
+
'sv-SE': 'Svenska',
|
|
21
|
+
'fi-FI': 'Suomi',
|
|
22
|
+
'da-DK': 'Dansk',
|
|
23
|
+
'no-NO': 'Norsk',
|
|
24
|
+
// 亚洲主要语言
|
|
25
|
+
'zh-Hant': '繁體中文',
|
|
26
|
+
'hi-IN': 'हिन्दी',
|
|
27
|
+
'ar-SA': 'العربية',
|
|
28
|
+
'th-TH': 'ไทย',
|
|
29
|
+
'vi-VN': 'Tiếng Việt',
|
|
30
|
+
'id-ID': 'Bahasa Indonesia',
|
|
31
|
+
// 其他重要语言
|
|
32
|
+
'pt-BR': 'Português (Brasil)',
|
|
33
|
+
'es-MX': 'Español (México)',
|
|
34
|
+
'tr-TR': 'Türkçe',
|
|
35
|
+
'uk-UA': 'Українська',
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAA2B;IACpD,OAAO;IACP,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAElB,cAAc;IACd,OAAO,EAAE,WAAW;IAEpB,SAAS;IACT,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAEhB,SAAS;IACT,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,kBAAkB;IAE3B,SAAS;IACT,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;CACtB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MetaDataStore } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 全局 MetaDataStore 单例
|
|
4
|
+
*/
|
|
5
|
+
export declare const MetaData: MetaDataStore;
|
|
6
|
+
/**
|
|
7
|
+
* 从文件中读取数据,覆盖 store,但是要保持它仍然是同一个对象
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadMetaData(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* 将 MetaData 写入 store
|
|
12
|
+
*/
|
|
13
|
+
export declare function saveMetaData(): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,aAKtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAalD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD"}
|
package/dist/metadata.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MetaData = void 0;
|
|
37
|
+
exports.loadMetaData = loadMetaData;
|
|
38
|
+
exports.saveMetaData = saveMetaData;
|
|
39
|
+
const fs = __importStar(require("fs/promises"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const paths_1 = require("./paths");
|
|
42
|
+
/**
|
|
43
|
+
* 全局 MetaDataStore 单例
|
|
44
|
+
*/
|
|
45
|
+
exports.MetaData = {
|
|
46
|
+
// 稍后覆盖
|
|
47
|
+
version: '1.0.0',
|
|
48
|
+
options: {},
|
|
49
|
+
files: [],
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* 从文件中读取数据,覆盖 store,但是要保持它仍然是同一个对象
|
|
53
|
+
*/
|
|
54
|
+
async function loadMetaData() {
|
|
55
|
+
try {
|
|
56
|
+
await fs.access(paths_1.ZEN_META_PATH);
|
|
57
|
+
const content = await fs.readFile(paths_1.ZEN_META_PATH, 'utf-8');
|
|
58
|
+
const newData = JSON.parse(content);
|
|
59
|
+
// 使用 Object.assign 保持同一个对象引用
|
|
60
|
+
Object.assign(exports.MetaData, newData);
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
// 如果文件不存在,初始化默认值
|
|
64
|
+
exports.MetaData.version = '1.0.0';
|
|
65
|
+
exports.MetaData.files = [];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 将 MetaData 写入 store
|
|
70
|
+
*/
|
|
71
|
+
async function saveMetaData() {
|
|
72
|
+
// 确保 .zen 目录存在
|
|
73
|
+
const zenDir = path.dirname(paths_1.ZEN_META_PATH);
|
|
74
|
+
await fs.mkdir(zenDir, { recursive: true });
|
|
75
|
+
// 保存文件
|
|
76
|
+
await fs.writeFile(paths_1.ZEN_META_PATH, JSON.stringify(exports.MetaData, null, 2), 'utf-8');
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,oCAaC;AAKD,oCAOC;AA3CD,gDAAkC;AAClC,2CAA6B;AAC7B,mCAAwC;AAGxC;;GAEG;AACU,QAAA,QAAQ,GAAkB;IACrC,OAAO;IACP,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;CACV,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,qBAAa,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpC,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,gBAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iBAAiB;QACjB,gBAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,gBAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY;IAChC,eAAe;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,OAAO;IACP,MAAM,EAAE,CAAC,SAAS,CAAC,qBAAa,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAChF,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAAgB,CAAC;AACvC,eAAO,MAAM,OAAO,QAA8B,CAAC;AACnD,eAAO,MAAM,YAAY,QAAwB,CAAC;AAClD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAChD,eAAO,MAAM,aAAa,QAA6B,CAAC"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZEN_META_PATH = exports.ZEN_SRC_DIR = exports.ZEN_DIST_DIR = exports.ZEN_DIR = exports.INPUT_DIR = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
exports.INPUT_DIR = process.cwd();
|
|
6
|
+
exports.ZEN_DIR = (0, path_1.join)(process.cwd(), '.zen');
|
|
7
|
+
exports.ZEN_DIST_DIR = (0, path_1.join)(exports.ZEN_DIR, 'dist');
|
|
8
|
+
exports.ZEN_SRC_DIR = (0, path_1.join)(exports.ZEN_DIR, 'src');
|
|
9
|
+
exports.ZEN_META_PATH = (0, path_1.join)(exports.ZEN_DIR, 'meta.json');
|
|
10
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAEf,QAAA,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAA,OAAO,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AACtC,QAAA,YAAY,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,MAAM,CAAC,CAAC;AACrC,QAAA,WAAW,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,KAAK,CAAC,CAAC;AACnC,QAAA,aAAa,GAAG,IAAA,WAAI,EAAC,eAAO,EAAE,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractMetadataByAI.d.ts","sourceRoot":"","sources":["../../src/process/extractMetadataByAI.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBzD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractMetadataByAI = extractMetadataByAI;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const extractMetadataFromMarkdown_1 = require("../ai/extractMetadataFromMarkdown");
|
|
6
|
+
const metadata_1 = require("../metadata");
|
|
7
|
+
/**
|
|
8
|
+
* 运行 AI 元数据提取
|
|
9
|
+
*/
|
|
10
|
+
async function extractMetadataByAI() {
|
|
11
|
+
const { files } = metadata_1.MetaData;
|
|
12
|
+
if (metadata_1.MetaData.options.verbose)
|
|
13
|
+
console.log(`🤖 Running AI metadata extraction...`);
|
|
14
|
+
console.log(`🤖 Processing ${files.length} files with AI...`);
|
|
15
|
+
await Promise.all(files.map(async (file) => {
|
|
16
|
+
try {
|
|
17
|
+
if (file.metadata) {
|
|
18
|
+
console.info(`ℹ️ Skipping ${file.path}, already has metadata`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const content = await (0, promises_1.readFile)(file.path, 'utf-8');
|
|
22
|
+
file.metadata = await (0, extractMetadataFromMarkdown_1.extractMetadataFromMarkdown)(content);
|
|
23
|
+
console.log(`✅ Extracted AI metadata for ${file.path}`, file.metadata.tokens_used);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error(`⚠️ Failed to process file ${file.path}:`, error);
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
console.log(`✅ AI processing completed for ${files.length} files`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=extractMetadataByAI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractMetadataByAI.js","sourceRoot":"","sources":["../../src/process/extractMetadataByAI.ts"],"names":[],"mappings":";;AAOA,kDAuBC;AA9BD,0CAAuC;AACvC,mFAAgF;AAChF,0CAAuC;AAEvC;;GAEG;AACI,KAAK,UAAU,mBAAmB;IACvC,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAQ,CAAC;IAE3B,IAAI,mBAAQ,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAE9D,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;QACrB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,yDAA2B,EAAC,OAAO,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanSourceFiles.d.ts","sourceRoot":"","sources":["../../src/process/scanSourceFiles.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDrD"}
|