@mytechtoday/augment-extensions 1.7.0 → 2.3.0
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/README.md +240 -19
- package/augment-extensions/coding-standards/bash/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/bash/metadata.json +21 -0
- package/augment-extensions/coding-standards/c/metadata.json +50 -0
- package/augment-extensions/coding-standards/css/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/css/metadata.json +30 -0
- package/augment-extensions/coding-standards/go/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/go/metadata.json +57 -0
- package/augment-extensions/coding-standards/html/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/html/metadata.json +25 -0
- package/augment-extensions/coding-standards/html-css-js/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/html-css-js/metadata.json +40 -0
- package/augment-extensions/coding-standards/js/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/js/metadata.json +37 -0
- package/augment-extensions/coding-standards/perl/README.md +173 -0
- package/augment-extensions/coding-standards/php/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/php/metadata.json +35 -0
- package/augment-extensions/coding-standards/powershell/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/powershell/metadata.json +33 -0
- package/augment-extensions/coding-standards/python/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/python/metadata.json +38 -0
- package/augment-extensions/coding-standards/react/CHANGELOG.md +51 -0
- package/augment-extensions/coding-standards/react/metadata.json +31 -0
- package/augment-extensions/coding-standards/typescript/CHANGELOG.md +39 -0
- package/augment-extensions/coding-standards/typescript/README.md +248 -19
- package/augment-extensions/coding-standards/typescript/VERSION +2 -0
- package/augment-extensions/coding-standards/typescript/examples/biome.json +199 -0
- package/augment-extensions/coding-standards/typescript/examples/eslint-flat-config.js +166 -0
- package/augment-extensions/coding-standards/typescript/examples/monorepo-config/README.md +47 -0
- package/augment-extensions/coding-standards/typescript/examples/monorepo-config/package.json +37 -0
- package/augment-extensions/coding-standards/typescript/examples/monorepo-config/pnpm-workspace.yaml +5 -0
- package/augment-extensions/coding-standards/typescript/examples/monorepo-config/tsconfig.base.json +50 -0
- package/augment-extensions/coding-standards/typescript/examples/monorepo-config/turbo.json +47 -0
- package/augment-extensions/coding-standards/typescript/examples/vitest-setup.ts +198 -0
- package/augment-extensions/coding-standards/typescript/metadata.json +46 -0
- package/augment-extensions/coding-standards/typescript/module.json +25 -7
- package/augment-extensions/coding-standards/typescript/rules/architecture.md +1096 -0
- package/augment-extensions/coding-standards/typescript/rules/error-handling.md +1174 -0
- package/augment-extensions/coding-standards/typescript/rules/modern-features.md +625 -0
- package/augment-extensions/coding-standards/typescript/rules/monorepo.md +745 -0
- package/augment-extensions/coding-standards/typescript/rules/security-performance.md +850 -0
- package/augment-extensions/coding-standards/typescript/rules/testing.md +918 -0
- package/augment-extensions/coding-standards/typescript/rules/tooling.md +1071 -0
- package/augment-extensions/coding-standards/typescript/rules/type-patterns.md +750 -0
- package/augment-extensions/domain-rules/api-design/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/api-design/metadata.json +32 -0
- package/augment-extensions/domain-rules/database/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/database/metadata.json +50 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/metadata.json +18 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/metadata.json +18 -0
- package/augment-extensions/domain-rules/mcp/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/mcp/metadata.json +42 -0
- package/augment-extensions/domain-rules/security/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/security/metadata.json +33 -0
- package/augment-extensions/domain-rules/seo-sales-marketing/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/seo-sales-marketing/metadata.json +40 -0
- package/augment-extensions/domain-rules/software-architecture/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/software-architecture/metadata.json +55 -0
- package/augment-extensions/domain-rules/wordpress/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/wordpress/metadata.json +42 -0
- package/augment-extensions/domain-rules/wordpress-plugin/CHANGELOG.md +51 -0
- package/augment-extensions/domain-rules/wordpress-plugin/metadata.json +70 -0
- package/augment-extensions/examples/design-patterns/CHANGELOG.md +51 -0
- package/augment-extensions/examples/design-patterns/metadata.json +29 -0
- package/augment-extensions/examples/gutenberg-block-plugin/CHANGELOG.md +51 -0
- package/augment-extensions/examples/gutenberg-block-plugin/metadata.json +26 -0
- package/augment-extensions/examples/rest-api-plugin/CHANGELOG.md +51 -0
- package/augment-extensions/examples/rest-api-plugin/metadata.json +27 -0
- package/augment-extensions/examples/woocommerce-extension/CHANGELOG.md +51 -0
- package/augment-extensions/examples/woocommerce-extension/metadata.json +27 -0
- package/augment-extensions/visual-design/metadata.json +34 -0
- package/augment-extensions/workflows/adr-support/CHANGELOG.md +51 -0
- package/augment-extensions/workflows/adr-support/metadata.json +41 -0
- package/augment-extensions/workflows/beads/CHANGELOG.md +51 -0
- package/augment-extensions/workflows/beads/metadata.json +23 -0
- package/augment-extensions/workflows/beads-integration/CHANGELOG.md +51 -0
- package/augment-extensions/workflows/beads-integration/metadata.json +30 -0
- package/augment-extensions/workflows/database/CHANGELOG.md +51 -0
- package/augment-extensions/workflows/database/metadata.json +30 -0
- package/augment-extensions/workflows/wordpress-plugin/CHANGELOG.md +51 -0
- package/augment-extensions/workflows/wordpress-plugin/metadata.json +41 -0
- package/augment-extensions/writing-standards/literature/shakespeare/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/literature/shakespeare/metadata.json +60 -0
- package/augment-extensions/writing-standards/screenplay/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/monty-python/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/monty-python/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/saturday-night-live/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/comedy-formats/saturday-night-live/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/alfred-hitchcock/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/alfred-hitchcock/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/ari-aster/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/ari-aster/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brad-bird/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brad-bird/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brian-de-palma/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/brian-de-palma/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/buster-keaton/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/buster-keaton/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/christopher-nolan/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/christopher-nolan/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/clint-eastwood/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/clint-eastwood/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/coen-brothers/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/coen-brothers/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/darren-aronofsky/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/darren-aronofsky/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-fincher/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-fincher/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-lynch/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/david-lynch/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/denis-villeneuve/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/denis-villeneuve/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/francis-ford-coppola/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/francis-ford-coppola/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gary-marshall/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gary-marshall/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-a-romero/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-a-romero/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-lucas/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/george-lucas/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/guillermo-del-toro/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/guillermo-del-toro/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gus-van-sant/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/gus-van-sant/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/james-ivory-ismail-merchant/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/james-ivory-ismail-merchant/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jim-jarmusch/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jim-jarmusch/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-carpenter/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-carpenter/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-ford/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-ford/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-huston/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-huston/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-landis/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/john-landis/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jonathan-demme/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/jonathan-demme/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/joseph-l-mankiewicz/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/joseph-l-mankiewicz/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kathryn-bigelow/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kathryn-bigelow/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kelly-reichardt/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kelly-reichardt/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kevin-smith/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/kevin-smith/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/linda-shayne/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/linda-shayne/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/martin-scorsese/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/martin-scorsese/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mel-brooks/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mel-brooks/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/metadata.json +25 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-curtiz/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-curtiz/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-mann/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/michael-mann/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mike-nichols/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/mike-nichols/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/orson-welles/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/orson-welles/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/park-chan-wook/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/park-chan-wook/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/paul-thomas-anderson/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/paul-thomas-anderson/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/penny-marshall/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/penny-marshall/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/peter-bogdanovich/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/peter-bogdanovich/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/quentin-tarantino/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/quentin-tarantino/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/richard-linklater/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/richard-linklater/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/rob-reiner/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/rob-reiner/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-altman/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-altman/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-eggers/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-eggers/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-zemeckis/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/robert-zemeckis/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sam-peckinpah/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sam-peckinpah/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sidney-lumet/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sidney-lumet/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/spike-lee/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/spike-lee/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-donen-gene-kelly/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-donen-gene-kelly/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-kubrick/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/stanley-kubrick/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steve-martin/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steve-martin/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steven-spielberg/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/steven-spielberg/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sydney-pollack/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/sydney-pollack/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/terry-gilliam/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/terry-gilliam/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tim-burton/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tim-burton/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tobe-hooper/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/tobe-hooper/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/wes-anderson/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/wes-anderson/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/william-friedkin/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/directors/william-friedkin/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/blue-ruin/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/blue-ruin/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/films/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/fast-and-furious/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/fast-and-furious/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/harry-potter/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/harry-potter/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/james-bond/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/james-bond/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/john-wick/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/john-wick/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/lord-of-the-rings/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/lord-of-the-rings/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/mcu/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/mcu/metadata.json +25 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/metadata.json +25 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-trek/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-trek/metadata.json +33 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-wars/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/franchises/star-wars/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/metadata.json +50 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/joseph-campbell/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/joseph-campbell/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/narrative-theory/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/bruckheimer-and-simpson/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/bruckheimer-and-simpson/metadata.json +24 -0
- package/augment-extensions/writing-standards/screenplay/cinematic-styles/producers/metadata.json +23 -0
- package/augment-extensions/writing-standards/screenplay/genres/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/genres/metadata.json +43 -0
- package/augment-extensions/writing-standards/screenplay/metadata.json +65 -0
- package/augment-extensions/writing-standards/screenplay/styles/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/styles/metadata.json +38 -0
- package/augment-extensions/writing-standards/screenplay/themes/CHANGELOG.md +51 -0
- package/augment-extensions/writing-standards/screenplay/themes/metadata.json +47 -0
- package/cli/dist/__test_health-checker.d.ts +2 -0
- package/cli/dist/__test_health-checker.d.ts.map +1 -0
- package/cli/dist/__test_health-checker.js +4 -0
- package/cli/dist/__test_health-checker.js.map +1 -0
- package/cli/dist/__test_template-engine.d.ts +2 -0
- package/cli/dist/__test_template-engine.d.ts.map +1 -0
- package/cli/dist/__test_template-engine.js +4 -0
- package/cli/dist/__test_template-engine.js.map +1 -0
- package/cli/dist/cli.js +25 -0
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js +6 -0
- package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts +14 -0
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js +46 -3
- package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts +29 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js +310 -27
- package/cli/dist/commands/generate-shot-list/generator/context-builder.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts +26 -2
- package/cli/dist/commands/generate-shot-list/generator/index.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/index.js +162 -10
- package/cli/dist/commands/generate-shot-list/generator/index.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js +1 -0
- package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts +12 -2
- package/cli/dist/commands/generate-shot-list/generator/types.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/help-text.d.ts +1 -1
- package/cli/dist/commands/generate-shot-list/help-text.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/help-text.js +48 -5
- package/cli/dist/commands/generate-shot-list/help-text.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.d.ts +11 -1
- package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.js +61 -1
- package/cli/dist/commands/generate-shot-list/logger/jsonl-writer.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/parser/docx-parser.d.ts +29 -0
- package/cli/dist/commands/generate-shot-list/parser/docx-parser.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/docx-parser.js +111 -0
- package/cli/dist/commands/generate-shot-list/parser/docx-parser.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.d.ts +18 -0
- package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.js +184 -0
- package/cli/dist/commands/generate-shot-list/parser/finaldraft-parser.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/index.d.ts +4 -3
- package/cli/dist/commands/generate-shot-list/parser/index.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/parser/index.js +54 -3
- package/cli/dist/commands/generate-shot-list/parser/index.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/parser/pdf-parser.d.ts +24 -0
- package/cli/dist/commands/generate-shot-list/parser/pdf-parser.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/pdf-parser.js +84 -0
- package/cli/dist/commands/generate-shot-list/parser/pdf-parser.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/rtf-parser.d.ts +28 -0
- package/cli/dist/commands/generate-shot-list/parser/rtf-parser.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/rtf-parser.js +143 -0
- package/cli/dist/commands/generate-shot-list/parser/rtf-parser.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/parser/types.d.ts +9 -6
- package/cli/dist/commands/generate-shot-list/parser/types.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list/parser/types.js.map +1 -1
- package/cli/dist/commands/generate-shot-list/schema/shot-list.schema.json +341 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts +55 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js +180 -0
- package/cli/dist/commands/generate-shot-list/schema/validator.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/guideline-parser.d.ts +36 -0
- package/cli/dist/commands/generate-shot-list/style/guideline-parser.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/guideline-parser.js +108 -0
- package/cli/dist/commands/generate-shot-list/style/guideline-parser.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/index.d.ts +39 -0
- package/cli/dist/commands/generate-shot-list/style/index.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/index.js +85 -0
- package/cli/dist/commands/generate-shot-list/style/index.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/style-loader.d.ts +35 -0
- package/cli/dist/commands/generate-shot-list/style/style-loader.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/style-loader.js +178 -0
- package/cli/dist/commands/generate-shot-list/style/style-loader.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/style-merger.d.ts +36 -0
- package/cli/dist/commands/generate-shot-list/style/style-merger.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/style-merger.js +123 -0
- package/cli/dist/commands/generate-shot-list/style/style-merger.js.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/types.d.ts +105 -0
- package/cli/dist/commands/generate-shot-list/style/types.d.ts.map +1 -0
- package/cli/dist/commands/generate-shot-list/style/types.js +8 -0
- package/cli/dist/commands/generate-shot-list/style/types.js.map +1 -0
- package/cli/dist/commands/generate-shot-list.d.ts +1 -0
- package/cli/dist/commands/generate-shot-list.d.ts.map +1 -1
- package/cli/dist/commands/generate-shot-list.js +79 -25
- package/cli/dist/commands/generate-shot-list.js.map +1 -1
- package/cli/dist/commands/list.d.ts +1 -0
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +21 -5
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/upgrade.d.ts +15 -0
- package/cli/dist/commands/upgrade.d.ts.map +1 -0
- package/cli/dist/commands/upgrade.js +229 -0
- package/cli/dist/commands/upgrade.js.map +1 -0
- package/cli/dist/commands/use.d.ts +15 -0
- package/cli/dist/commands/use.d.ts.map +1 -0
- package/cli/dist/commands/use.js +180 -0
- package/cli/dist/commands/use.js.map +1 -0
- package/cli/dist/commands/version-info.d.ts +15 -0
- package/cli/dist/commands/version-info.d.ts.map +1 -0
- package/cli/dist/commands/version-info.js +194 -0
- package/cli/dist/commands/version-info.js.map +1 -0
- package/cli/dist/core/compatibility-checker.d.ts +73 -0
- package/cli/dist/core/compatibility-checker.d.ts.map +1 -0
- package/cli/dist/core/compatibility-checker.js +188 -0
- package/cli/dist/core/compatibility-checker.js.map +1 -0
- package/cli/dist/core/index.d.ts +9 -0
- package/cli/dist/core/index.d.ts.map +1 -0
- package/cli/dist/core/index.js +16 -0
- package/cli/dist/core/index.js.map +1 -0
- package/cli/dist/core/module-loader.d.ts +68 -0
- package/cli/dist/core/module-loader.d.ts.map +1 -0
- package/cli/dist/core/module-loader.js +137 -0
- package/cli/dist/core/module-loader.js.map +1 -0
- package/cli/dist/core/version-manager.d.ts +62 -0
- package/cli/dist/core/version-manager.d.ts.map +1 -0
- package/cli/dist/core/version-manager.js +157 -0
- package/cli/dist/core/version-manager.js.map +1 -0
- package/cli/dist/core/version-resolver.d.ts +63 -0
- package/cli/dist/core/version-resolver.d.ts.map +1 -0
- package/cli/dist/core/version-resolver.js +163 -0
- package/cli/dist/core/version-resolver.js.map +1 -0
- package/cli/dist/gui/app.d.ts +17 -0
- package/cli/dist/gui/app.d.ts.map +1 -0
- package/cli/dist/gui/app.js +79 -0
- package/cli/dist/gui/app.js.map +1 -0
- package/cli/dist/gui/components/preview-pane.d.ts +40 -0
- package/cli/dist/gui/components/preview-pane.d.ts.map +1 -0
- package/cli/dist/gui/components/preview-pane.js +90 -0
- package/cli/dist/gui/components/preview-pane.js.map +1 -0
- package/cli/dist/gui/components/search-filter.d.ts +26 -0
- package/cli/dist/gui/components/search-filter.d.ts.map +1 -0
- package/cli/dist/gui/components/search-filter.js +168 -0
- package/cli/dist/gui/components/search-filter.js.map +1 -0
- package/cli/dist/gui/components/status-bar.d.ts +22 -0
- package/cli/dist/gui/components/status-bar.d.ts.map +1 -0
- package/cli/dist/gui/components/status-bar.js +58 -0
- package/cli/dist/gui/components/status-bar.js.map +1 -0
- package/cli/dist/gui/components/tree-navigator.d.ts +30 -0
- package/cli/dist/gui/components/tree-navigator.d.ts.map +1 -0
- package/cli/dist/gui/components/tree-navigator.js +133 -0
- package/cli/dist/gui/components/tree-navigator.js.map +1 -0
- package/cli/dist/gui/components/version-selector.d.ts +27 -0
- package/cli/dist/gui/components/version-selector.d.ts.map +1 -0
- package/cli/dist/gui/components/version-selector.js +110 -0
- package/cli/dist/gui/components/version-selector.js.map +1 -0
- package/cli/dist/gui/hooks/use-version-loader.d.ts +25 -0
- package/cli/dist/gui/hooks/use-version-loader.d.ts.map +1 -0
- package/cli/dist/gui/hooks/use-version-loader.js +116 -0
- package/cli/dist/gui/hooks/use-version-loader.js.map +1 -0
- package/cli/dist/gui/index.d.ts +15 -0
- package/cli/dist/gui/index.d.ts.map +1 -0
- package/cli/dist/gui/index.js +39 -0
- package/cli/dist/gui/index.js.map +1 -0
- package/cli/dist/gui/layouts/main-layout.d.ts +14 -0
- package/cli/dist/gui/layouts/main-layout.d.ts.map +1 -0
- package/cli/dist/gui/layouts/main-layout.js +205 -0
- package/cli/dist/gui/layouts/main-layout.js.map +1 -0
- package/cli/dist/gui/state/navigation-state.d.ts +39 -0
- package/cli/dist/gui/state/navigation-state.d.ts.map +1 -0
- package/cli/dist/gui/state/navigation-state.js +151 -0
- package/cli/dist/gui/state/navigation-state.js.map +1 -0
- package/cli/dist/gui/state/selection-state.d.ts +36 -0
- package/cli/dist/gui/state/selection-state.d.ts.map +1 -0
- package/cli/dist/gui/state/selection-state.js +132 -0
- package/cli/dist/gui/state/selection-state.js.map +1 -0
- package/cli/dist/gui/theme.d.ts +50 -0
- package/cli/dist/gui/theme.d.ts.map +1 -0
- package/cli/dist/gui/theme.js +73 -0
- package/cli/dist/gui/theme.js.map +1 -0
- package/cli/dist/utils/help.d.ts +13 -0
- package/cli/dist/utils/help.d.ts.map +1 -0
- package/cli/dist/utils/help.js +137 -0
- package/cli/dist/utils/help.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +8 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -1
- package/cli/dist/utils/module-system.js +38 -3
- package/cli/dist/utils/module-system.js.map +1 -1
- package/cli/dist/utils/validate-versioning.d.ts +43 -0
- package/cli/dist/utils/validate-versioning.d.ts.map +1 -0
- package/cli/dist/utils/validate-versioning.js +258 -0
- package/cli/dist/utils/validate-versioning.js.map +1 -0
- package/package.json +11 -1
|
@@ -49,13 +49,17 @@ const util_1 = require("util");
|
|
|
49
49
|
const appendFile = (0, util_1.promisify)(fs.appendFile);
|
|
50
50
|
const mkdir = (0, util_1.promisify)(fs.mkdir);
|
|
51
51
|
const access = (0, util_1.promisify)(fs.access);
|
|
52
|
+
const stat = (0, util_1.promisify)(fs.stat);
|
|
53
|
+
const rename = (0, util_1.promisify)(fs.rename);
|
|
52
54
|
/**
|
|
53
55
|
* JSONL Writer class
|
|
54
56
|
*/
|
|
55
57
|
class JSONLWriter {
|
|
56
|
-
constructor(filePath) {
|
|
58
|
+
constructor(filePath, maxFileSize = 10 * 1024 * 1024, maxBackups = 5) {
|
|
57
59
|
this.writeQueue = Promise.resolve();
|
|
58
60
|
this.filePath = filePath;
|
|
61
|
+
this.maxFileSize = maxFileSize;
|
|
62
|
+
this.maxBackups = maxBackups;
|
|
59
63
|
}
|
|
60
64
|
/**
|
|
61
65
|
* Initialize the writer (create directory if needed)
|
|
@@ -70,6 +74,58 @@ class JSONLWriter {
|
|
|
70
74
|
await mkdir(dir, { recursive: true });
|
|
71
75
|
}
|
|
72
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if file rotation is needed
|
|
79
|
+
*/
|
|
80
|
+
async shouldRotate() {
|
|
81
|
+
try {
|
|
82
|
+
const stats = await stat(this.filePath);
|
|
83
|
+
return stats.size >= this.maxFileSize;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// File doesn't exist yet
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Rotate log files
|
|
92
|
+
*/
|
|
93
|
+
async rotateFiles() {
|
|
94
|
+
try {
|
|
95
|
+
// Delete oldest backup if we're at max backups
|
|
96
|
+
const oldestBackup = `${this.filePath}.${this.maxBackups}`;
|
|
97
|
+
try {
|
|
98
|
+
await access(oldestBackup);
|
|
99
|
+
await fs.promises.unlink(oldestBackup);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// File doesn't exist, that's fine
|
|
103
|
+
}
|
|
104
|
+
// Rotate existing backups
|
|
105
|
+
for (let i = this.maxBackups - 1; i >= 1; i--) {
|
|
106
|
+
const oldPath = `${this.filePath}.${i}`;
|
|
107
|
+
const newPath = `${this.filePath}.${i + 1}`;
|
|
108
|
+
try {
|
|
109
|
+
await access(oldPath);
|
|
110
|
+
await rename(oldPath, newPath);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// File doesn't exist, skip
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Rotate current file to .1
|
|
117
|
+
try {
|
|
118
|
+
await access(this.filePath);
|
|
119
|
+
await rename(this.filePath, `${this.filePath}.1`);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// File doesn't exist, that's fine
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error('Failed to rotate log files:', error);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
73
129
|
/**
|
|
74
130
|
* Write a log entry to the JSONL file
|
|
75
131
|
*
|
|
@@ -79,6 +135,10 @@ class JSONLWriter {
|
|
|
79
135
|
// Queue the write to ensure sequential writes
|
|
80
136
|
this.writeQueue = this.writeQueue.then(async () => {
|
|
81
137
|
try {
|
|
138
|
+
// Check if rotation is needed
|
|
139
|
+
if (await this.shouldRotate()) {
|
|
140
|
+
await this.rotateFiles();
|
|
141
|
+
}
|
|
82
142
|
// Convert entry to JSON and add newline
|
|
83
143
|
const line = JSON.stringify(entry) + '\n';
|
|
84
144
|
// Append to file atomically
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl-writer.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/logger/jsonl-writer.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"jsonl-writer.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/logger/jsonl-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Parser, Screenplay } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Parser for Microsoft Word (.doc, .docx) format
|
|
4
|
+
*
|
|
5
|
+
* Extracts text from Word documents and delegates to PlainTextParser for screenplay parsing.
|
|
6
|
+
* Requires mammoth library for DOCX extraction.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DOCXParser implements Parser {
|
|
9
|
+
private plainTextParser;
|
|
10
|
+
private mammoth;
|
|
11
|
+
constructor();
|
|
12
|
+
getName(): string;
|
|
13
|
+
canParse(content: string | Buffer, filePath?: string): boolean;
|
|
14
|
+
parse(content: string | Buffer): Promise<Screenplay>;
|
|
15
|
+
/**
|
|
16
|
+
* Convert HTML from mammoth to screenplay-formatted text
|
|
17
|
+
* Maps HTML styles to screenplay elements:
|
|
18
|
+
* - <h1>, <h2> → Scene headings
|
|
19
|
+
* - <strong>, <b> with ALL CAPS → Character names
|
|
20
|
+
* - Indented paragraphs → Dialogue
|
|
21
|
+
* - Regular paragraphs → Action
|
|
22
|
+
*/
|
|
23
|
+
private convertHtmlToScreenplayText;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Helper function to read DOCX file and parse it
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseDOCXFile(filePath: string): Promise<Screenplay>;
|
|
29
|
+
//# sourceMappingURL=docx-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-parser.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/docx-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG7C;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,MAAM;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAM;;IAerB,OAAO,IAAI,MAAM;IAIjB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAWxD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C1D;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;CAsBpC;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAKzE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DOCXParser = void 0;
|
|
4
|
+
exports.parseDOCXFile = parseDOCXFile;
|
|
5
|
+
const plaintext_parser_1 = require("./plaintext-parser");
|
|
6
|
+
/**
|
|
7
|
+
* Parser for Microsoft Word (.doc, .docx) format
|
|
8
|
+
*
|
|
9
|
+
* Extracts text from Word documents and delegates to PlainTextParser for screenplay parsing.
|
|
10
|
+
* Requires mammoth library for DOCX extraction.
|
|
11
|
+
*/
|
|
12
|
+
class DOCXParser {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.plainTextParser = new plaintext_parser_1.PlainTextParser();
|
|
15
|
+
// Lazy load mammoth to avoid bundling issues
|
|
16
|
+
try {
|
|
17
|
+
this.mammoth = require('mammoth');
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
throw new Error('mammoth library is required for DOCX parsing. Install it with: npm install mammoth');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
getName() {
|
|
24
|
+
return 'DOCX';
|
|
25
|
+
}
|
|
26
|
+
canParse(content, filePath) {
|
|
27
|
+
// Check file extension
|
|
28
|
+
if (filePath && /\.(docx?|doc)$/i.test(filePath)) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
// Check for DOCX magic number (PK zip archive)
|
|
32
|
+
const contentStr = typeof content === 'string' ? content : content.toString('binary');
|
|
33
|
+
return contentStr.startsWith('PK\x03\x04');
|
|
34
|
+
}
|
|
35
|
+
async parse(content) {
|
|
36
|
+
// Convert string to Buffer if needed
|
|
37
|
+
const buffer = typeof content === 'string'
|
|
38
|
+
? Buffer.from(content, 'binary')
|
|
39
|
+
: content;
|
|
40
|
+
try {
|
|
41
|
+
// Extract HTML with styles preserved
|
|
42
|
+
const result = await this.mammoth.convertToHtml({ buffer });
|
|
43
|
+
const html = result.value;
|
|
44
|
+
if (!html || html.trim().length === 0) {
|
|
45
|
+
throw new Error('DOCX contains no extractable content');
|
|
46
|
+
}
|
|
47
|
+
// Parse HTML to extract screenplay elements with style information
|
|
48
|
+
const text = this.convertHtmlToScreenplayText(html);
|
|
49
|
+
if (!text || text.trim().length === 0) {
|
|
50
|
+
throw new Error('DOCX contains no extractable text');
|
|
51
|
+
}
|
|
52
|
+
// Parse extracted text as plain text screenplay
|
|
53
|
+
const screenplay = this.plainTextParser.parse(text);
|
|
54
|
+
// Update format metadata
|
|
55
|
+
screenplay.format = 'docx';
|
|
56
|
+
screenplay.metadata = {
|
|
57
|
+
...screenplay.metadata,
|
|
58
|
+
format: 'docx',
|
|
59
|
+
originalFormat: 'docx',
|
|
60
|
+
extractedText: true,
|
|
61
|
+
extractedHtml: true,
|
|
62
|
+
messages: result.messages,
|
|
63
|
+
};
|
|
64
|
+
return screenplay;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error instanceof Error) {
|
|
68
|
+
throw new Error(`Failed to parse DOCX: ${error.message}`);
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Convert HTML from mammoth to screenplay-formatted text
|
|
75
|
+
* Maps HTML styles to screenplay elements:
|
|
76
|
+
* - <h1>, <h2> → Scene headings
|
|
77
|
+
* - <strong>, <b> with ALL CAPS → Character names
|
|
78
|
+
* - Indented paragraphs → Dialogue
|
|
79
|
+
* - Regular paragraphs → Action
|
|
80
|
+
*/
|
|
81
|
+
convertHtmlToScreenplayText(html) {
|
|
82
|
+
const lines = [];
|
|
83
|
+
// Simple HTML parser - extract text from tags
|
|
84
|
+
// Remove HTML tags but preserve structure
|
|
85
|
+
let text = html
|
|
86
|
+
.replace(/<h[12]>(.*?)<\/h[12]>/gi, '\n$1\n') // Headings as scene headings
|
|
87
|
+
.replace(/<strong>(.*?)<\/strong>/gi, '$1') // Preserve bold text
|
|
88
|
+
.replace(/<b>(.*?)<\/b>/gi, '$1') // Preserve bold text
|
|
89
|
+
.replace(/<p[^>]*>(.*?)<\/p>/gi, '\n$1\n') // Paragraphs
|
|
90
|
+
.replace(/<br\s*\/?>/gi, '\n') // Line breaks
|
|
91
|
+
.replace(/<[^>]+>/g, '') // Remove remaining tags
|
|
92
|
+
.replace(/ /g, ' ') // Replace
|
|
93
|
+
.replace(/&/g, '&') // Replace &
|
|
94
|
+
.replace(/</g, '<') // Replace <
|
|
95
|
+
.replace(/>/g, '>') // Replace >
|
|
96
|
+
.replace(/"/g, '"') // Replace "
|
|
97
|
+
.trim();
|
|
98
|
+
return text;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.DOCXParser = DOCXParser;
|
|
102
|
+
/**
|
|
103
|
+
* Helper function to read DOCX file and parse it
|
|
104
|
+
*/
|
|
105
|
+
async function parseDOCXFile(filePath) {
|
|
106
|
+
const fs = require('fs').promises;
|
|
107
|
+
const buffer = await fs.readFile(filePath);
|
|
108
|
+
const parser = new DOCXParser();
|
|
109
|
+
return parser.parse(buffer);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=docx-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-parser.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/docx-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Parser, Screenplay } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Parser for Final Draft XML (.fdx) format
|
|
4
|
+
*
|
|
5
|
+
* Final Draft is the industry-standard professional screenwriting software.
|
|
6
|
+
* The .fdx format is XML-based with specific paragraph types for screenplay elements.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FinalDraftParser implements Parser {
|
|
9
|
+
private xmlParser;
|
|
10
|
+
constructor();
|
|
11
|
+
getName(): string;
|
|
12
|
+
canParse(content: string, filePath?: string): boolean;
|
|
13
|
+
parse(content: string): Screenplay;
|
|
14
|
+
private extractText;
|
|
15
|
+
private parseSceneHeading;
|
|
16
|
+
private parseElement;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=finaldraft-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finaldraft-parser.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/finaldraft-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAsD,MAAM,SAAS,CAAC;AAGjG;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,MAAM;IAC7C,OAAO,CAAC,SAAS,CAAY;;IAY7B,OAAO,IAAI,MAAM;IAIjB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IA8FlC,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,YAAY;CAuCrB"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FinalDraftParser = void 0;
|
|
4
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
5
|
+
/**
|
|
6
|
+
* Parser for Final Draft XML (.fdx) format
|
|
7
|
+
*
|
|
8
|
+
* Final Draft is the industry-standard professional screenwriting software.
|
|
9
|
+
* The .fdx format is XML-based with specific paragraph types for screenplay elements.
|
|
10
|
+
*/
|
|
11
|
+
class FinalDraftParser {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.xmlParser = new fast_xml_parser_1.XMLParser({
|
|
14
|
+
ignoreAttributes: false,
|
|
15
|
+
attributeNamePrefix: '@_',
|
|
16
|
+
textNodeName: '#text',
|
|
17
|
+
parseAttributeValue: true,
|
|
18
|
+
trimValues: true,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
getName() {
|
|
22
|
+
return 'FinalDraft';
|
|
23
|
+
}
|
|
24
|
+
canParse(content, filePath) {
|
|
25
|
+
// Check file extension
|
|
26
|
+
if (filePath && /\.fdx$/i.test(filePath)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
// Check for Final Draft XML structure
|
|
30
|
+
return content.includes('<FinalDraft') && content.includes('</FinalDraft>');
|
|
31
|
+
}
|
|
32
|
+
parse(content) {
|
|
33
|
+
const parsed = this.xmlParser.parse(content);
|
|
34
|
+
if (!parsed.FinalDraft) {
|
|
35
|
+
throw new Error('Invalid Final Draft XML: Missing FinalDraft root element');
|
|
36
|
+
}
|
|
37
|
+
const fdx = parsed.FinalDraft;
|
|
38
|
+
const content_elem = fdx.Content;
|
|
39
|
+
if (!content_elem || !content_elem.Paragraph) {
|
|
40
|
+
throw new Error('Invalid Final Draft XML: Missing Content or Paragraph elements');
|
|
41
|
+
}
|
|
42
|
+
// Extract title and author from TitlePage if available
|
|
43
|
+
let title = 'Untitled';
|
|
44
|
+
let author;
|
|
45
|
+
if (fdx.TitlePage && fdx.TitlePage.Content && fdx.TitlePage.Content.Paragraph) {
|
|
46
|
+
const titleParas = Array.isArray(fdx.TitlePage.Content.Paragraph)
|
|
47
|
+
? fdx.TitlePage.Content.Paragraph
|
|
48
|
+
: [fdx.TitlePage.Content.Paragraph];
|
|
49
|
+
for (const para of titleParas) {
|
|
50
|
+
const type = para['@_Type'];
|
|
51
|
+
const text = this.extractText(para);
|
|
52
|
+
if (type === 'Title' && text) {
|
|
53
|
+
title = text;
|
|
54
|
+
}
|
|
55
|
+
else if (type === 'Authors' && text) {
|
|
56
|
+
author = text;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Parse paragraphs into scenes
|
|
61
|
+
const paragraphs = Array.isArray(content_elem.Paragraph)
|
|
62
|
+
? content_elem.Paragraph
|
|
63
|
+
: [content_elem.Paragraph];
|
|
64
|
+
const scenes = [];
|
|
65
|
+
let currentScene = null;
|
|
66
|
+
let lineNumber = 0;
|
|
67
|
+
for (const para of paragraphs) {
|
|
68
|
+
const type = para['@_Type'];
|
|
69
|
+
const text = this.extractText(para);
|
|
70
|
+
lineNumber++;
|
|
71
|
+
if (!text)
|
|
72
|
+
continue;
|
|
73
|
+
if (type === 'Scene Heading') {
|
|
74
|
+
// Start new scene
|
|
75
|
+
if (currentScene) {
|
|
76
|
+
currentScene.endLine = lineNumber - 1;
|
|
77
|
+
scenes.push(currentScene);
|
|
78
|
+
}
|
|
79
|
+
const heading = this.parseSceneHeading(text);
|
|
80
|
+
currentScene = {
|
|
81
|
+
number: scenes.length + 1,
|
|
82
|
+
heading,
|
|
83
|
+
elements: [],
|
|
84
|
+
startLine: lineNumber,
|
|
85
|
+
endLine: lineNumber,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
else if (currentScene) {
|
|
89
|
+
// Add element to current scene
|
|
90
|
+
const element = this.parseElement(type, text, lineNumber);
|
|
91
|
+
if (element) {
|
|
92
|
+
currentScene.elements.push(element);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Add final scene
|
|
97
|
+
if (currentScene) {
|
|
98
|
+
currentScene.endLine = lineNumber;
|
|
99
|
+
scenes.push(currentScene);
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
title,
|
|
103
|
+
author,
|
|
104
|
+
scenes,
|
|
105
|
+
format: 'finaldraft',
|
|
106
|
+
metadata: {
|
|
107
|
+
format: 'finaldraft',
|
|
108
|
+
totalScenes: scenes.length,
|
|
109
|
+
parsedAt: new Date().toISOString(),
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
extractText(para) {
|
|
114
|
+
if (!para.Text)
|
|
115
|
+
return '';
|
|
116
|
+
const texts = Array.isArray(para.Text) ? para.Text : [para.Text];
|
|
117
|
+
return texts
|
|
118
|
+
.map((t) => {
|
|
119
|
+
if (typeof t === 'string')
|
|
120
|
+
return t;
|
|
121
|
+
if (t['#text'])
|
|
122
|
+
return t['#text'];
|
|
123
|
+
return '';
|
|
124
|
+
})
|
|
125
|
+
.join('')
|
|
126
|
+
.trim();
|
|
127
|
+
}
|
|
128
|
+
parseSceneHeading(text) {
|
|
129
|
+
// Match INT/EXT. LOCATION - TIME
|
|
130
|
+
const match = text.match(/^(INT\.|EXT\.|INT\/EXT\.|EXT\/INT\.)\s+(.+?)(?:\s+-\s+(.+))?$/i);
|
|
131
|
+
if (match) {
|
|
132
|
+
const intExt = match[1].replace('.', '').toUpperCase();
|
|
133
|
+
return {
|
|
134
|
+
intExt,
|
|
135
|
+
location: match[2].trim(),
|
|
136
|
+
timeOfDay: match[3]?.trim() || '',
|
|
137
|
+
raw: text,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// Default to INT if no match
|
|
141
|
+
return {
|
|
142
|
+
intExt: 'INT',
|
|
143
|
+
location: text,
|
|
144
|
+
timeOfDay: '',
|
|
145
|
+
raw: text,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
parseElement(type, text, line) {
|
|
149
|
+
switch (type) {
|
|
150
|
+
case 'Action':
|
|
151
|
+
return { type: 'action', text, line, column: 0 };
|
|
152
|
+
case 'Character':
|
|
153
|
+
return {
|
|
154
|
+
type: 'dialogue',
|
|
155
|
+
dialogue: { character: { name: text }, speech: '' },
|
|
156
|
+
text: text,
|
|
157
|
+
line,
|
|
158
|
+
column: 0
|
|
159
|
+
};
|
|
160
|
+
case 'Dialogue':
|
|
161
|
+
return {
|
|
162
|
+
type: 'dialogue',
|
|
163
|
+
dialogue: { character: { name: '' }, speech: text },
|
|
164
|
+
text: text,
|
|
165
|
+
line,
|
|
166
|
+
column: 0
|
|
167
|
+
};
|
|
168
|
+
case 'Parenthetical':
|
|
169
|
+
return {
|
|
170
|
+
type: 'dialogue',
|
|
171
|
+
dialogue: { character: { name: '' }, parenthetical: text, speech: '' },
|
|
172
|
+
text: text,
|
|
173
|
+
line,
|
|
174
|
+
column: 0
|
|
175
|
+
};
|
|
176
|
+
case 'Transition':
|
|
177
|
+
return { type: 'transition', text, line, column: 0 };
|
|
178
|
+
default:
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.FinalDraftParser = FinalDraftParser;
|
|
184
|
+
//# sourceMappingURL=finaldraft-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finaldraft-parser.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/finaldraft-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,15 @@ export declare const createParser: ParserFactory;
|
|
|
11
11
|
/**
|
|
12
12
|
* Detect format from file extension
|
|
13
13
|
*/
|
|
14
|
-
export declare function detectFormatFromExtension(filename: string): 'fountain' | 'markdown' | 'plaintext' | null;
|
|
14
|
+
export declare function detectFormatFromExtension(filename: string): 'fountain' | 'markdown' | 'plaintext' | 'finaldraft' | 'pdf' | 'docx' | 'rtf' | null;
|
|
15
15
|
/**
|
|
16
16
|
* Detect format from content analysis
|
|
17
|
+
* Handles both text-based and binary format detection
|
|
17
18
|
*/
|
|
18
|
-
export declare function detectFormatFromContent(content: string): 'fountain' | 'markdown' | 'plaintext';
|
|
19
|
+
export declare function detectFormatFromContent(content: string | Buffer): 'fountain' | 'markdown' | 'plaintext' | 'finaldraft' | 'pdf' | 'docx' | 'rtf';
|
|
19
20
|
/**
|
|
20
21
|
* Auto-detect format and create appropriate parser
|
|
21
22
|
*/
|
|
22
|
-
export declare function createParserAuto(filename: string, content: string): Parser;
|
|
23
|
+
export declare function createParserAuto(filename: string, content: string | Buffer): Parser;
|
|
23
24
|
export * from './types';
|
|
24
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAShD;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aAmB1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAuBhJ;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CA8E/I;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAUnF;AAGD,cAAc,SAAS,CAAC"}
|
|
@@ -26,6 +26,10 @@ exports.createParserAuto = createParserAuto;
|
|
|
26
26
|
const fountain_parser_1 = require("./fountain-parser");
|
|
27
27
|
const markdown_parser_1 = require("./markdown-parser");
|
|
28
28
|
const plaintext_parser_1 = require("./plaintext-parser");
|
|
29
|
+
const finaldraft_parser_1 = require("./finaldraft-parser");
|
|
30
|
+
const pdf_parser_1 = require("./pdf-parser");
|
|
31
|
+
const docx_parser_1 = require("./docx-parser");
|
|
32
|
+
const rtf_parser_1 = require("./rtf-parser");
|
|
29
33
|
/**
|
|
30
34
|
* Create parser for specified format
|
|
31
35
|
*/
|
|
@@ -37,6 +41,14 @@ const createParser = (format) => {
|
|
|
37
41
|
return new markdown_parser_1.MarkdownParser();
|
|
38
42
|
case 'plaintext':
|
|
39
43
|
return new plaintext_parser_1.PlainTextParser();
|
|
44
|
+
case 'finaldraft':
|
|
45
|
+
return new finaldraft_parser_1.FinalDraftParser();
|
|
46
|
+
case 'pdf':
|
|
47
|
+
return new pdf_parser_1.PDFParser();
|
|
48
|
+
case 'docx':
|
|
49
|
+
return new docx_parser_1.DOCXParser();
|
|
50
|
+
case 'rtf':
|
|
51
|
+
return new rtf_parser_1.RTFParser();
|
|
40
52
|
default:
|
|
41
53
|
throw new Error(`Unknown format: ${format}`);
|
|
42
54
|
}
|
|
@@ -55,15 +67,53 @@ function detectFormatFromExtension(filename) {
|
|
|
55
67
|
return 'markdown';
|
|
56
68
|
case 'txt':
|
|
57
69
|
return 'plaintext';
|
|
70
|
+
case 'fdx':
|
|
71
|
+
return 'finaldraft';
|
|
72
|
+
case 'pdf':
|
|
73
|
+
return 'pdf';
|
|
74
|
+
case 'doc':
|
|
75
|
+
case 'docx':
|
|
76
|
+
return 'docx';
|
|
77
|
+
case 'rtf':
|
|
78
|
+
return 'rtf';
|
|
58
79
|
default:
|
|
59
80
|
return null;
|
|
60
81
|
}
|
|
61
82
|
}
|
|
62
83
|
/**
|
|
63
84
|
* Detect format from content analysis
|
|
85
|
+
* Handles both text-based and binary format detection
|
|
64
86
|
*/
|
|
65
87
|
function detectFormatFromContent(content) {
|
|
66
|
-
|
|
88
|
+
// Convert Buffer to string for signature checking
|
|
89
|
+
const contentStr = typeof content === 'string' ? content : content.toString('binary');
|
|
90
|
+
// Check for binary format signatures first
|
|
91
|
+
// PDF signature: %PDF-
|
|
92
|
+
if (contentStr.startsWith('%PDF-')) {
|
|
93
|
+
return 'pdf';
|
|
94
|
+
}
|
|
95
|
+
// RTF signature: {\rtf
|
|
96
|
+
if (contentStr.startsWith('{\\rtf')) {
|
|
97
|
+
return 'rtf';
|
|
98
|
+
}
|
|
99
|
+
// DOCX signature: PK (ZIP archive)
|
|
100
|
+
// DOCX files are ZIP archives containing XML files
|
|
101
|
+
if (contentStr.startsWith('PK\x03\x04')) {
|
|
102
|
+
// Further check for DOCX-specific content
|
|
103
|
+
// Look for word/ directory or [Content_Types].xml
|
|
104
|
+
if (contentStr.includes('word/') || contentStr.includes('[Content_Types].xml')) {
|
|
105
|
+
return 'docx';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Final Draft XML signature: <?xml with <FinalDraft>
|
|
109
|
+
if (contentStr.trimStart().startsWith('<?xml')) {
|
|
110
|
+
// Check if it contains FinalDraft root element
|
|
111
|
+
if (contentStr.includes('<FinalDraft')) {
|
|
112
|
+
return 'finaldraft';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Text-based format detection
|
|
116
|
+
const lines = contentStr.split('\n');
|
|
67
117
|
// Check for Fountain markers
|
|
68
118
|
let fountainScore = 0;
|
|
69
119
|
let markdownScore = 0;
|
|
@@ -91,10 +141,11 @@ function detectFormatFromContent(content) {
|
|
|
91
141
|
}
|
|
92
142
|
}
|
|
93
143
|
// Determine format based on scores
|
|
94
|
-
|
|
144
|
+
// Lower thresholds to be more sensitive to format indicators
|
|
145
|
+
if (fountainScore > markdownScore && fountainScore >= 3) {
|
|
95
146
|
return 'fountain';
|
|
96
147
|
}
|
|
97
|
-
if (markdownScore
|
|
148
|
+
if (markdownScore >= 3) {
|
|
98
149
|
return 'markdown';
|
|
99
150
|
}
|
|
100
151
|
// Default to plaintext
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Parser, Screenplay } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Parser for PDF (.pdf) format
|
|
4
|
+
*
|
|
5
|
+
* Extracts text from PDF files and delegates to PlainTextParser for screenplay parsing.
|
|
6
|
+
* Requires pdf-parse library for text extraction.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PDFParser implements Parser {
|
|
9
|
+
private plainTextParser;
|
|
10
|
+
private pdfParse;
|
|
11
|
+
constructor();
|
|
12
|
+
getName(): string;
|
|
13
|
+
canParse(content: string, filePath?: string): boolean;
|
|
14
|
+
parse(content: string | Buffer): Promise<Screenplay>;
|
|
15
|
+
/**
|
|
16
|
+
* Async parse method for PDF files
|
|
17
|
+
*/
|
|
18
|
+
parseAsync(content: string | Buffer): Promise<Screenplay>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Helper function to read PDF file and parse it
|
|
22
|
+
*/
|
|
23
|
+
export declare function parsePDFFile(filePath: string): Promise<Screenplay>;
|
|
24
|
+
//# sourceMappingURL=pdf-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-parser.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/parser/pdf-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG7C;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAM;;IAetB,OAAO,IAAI,MAAM;IAIjB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAU/C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsC1D;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAGhE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAKxE"}
|