pi-usereq 0.4.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/.g.conf +20 -0
- package/.github/workflows/release-npm.yml +131 -0
- package/.gitignore +270 -0
- package/CHANGELOG.md +221 -0
- package/LICENSE +674 -0
- package/README.md +260 -0
- package/TODO.md +20 -0
- package/docs/pi.dev/agent-document-manifest.json +6399 -0
- package/docs/pi.dev/coding-agent-docs/compaction.md +394 -0
- package/docs/pi.dev/coding-agent-docs/custom-provider.md +596 -0
- package/docs/pi.dev/coding-agent-docs/development.md +71 -0
- package/docs/pi.dev/coding-agent-docs/extensions.md +2262 -0
- package/docs/pi.dev/coding-agent-docs/images/doom-extension.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/exy.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/interactive-mode.png +0 -0
- package/docs/pi.dev/coding-agent-docs/images/tree-view.png +0 -0
- package/docs/pi.dev/coding-agent-docs/json.md +82 -0
- package/docs/pi.dev/coding-agent-docs/keybindings.md +175 -0
- package/docs/pi.dev/coding-agent-docs/models.md +392 -0
- package/docs/pi.dev/coding-agent-docs/packages.md +218 -0
- package/docs/pi.dev/coding-agent-docs/prompt-templates.md +67 -0
- package/docs/pi.dev/coding-agent-docs/providers.md +195 -0
- package/docs/pi.dev/coding-agent-docs/rpc.md +1377 -0
- package/docs/pi.dev/coding-agent-docs/sdk.md +1124 -0
- package/docs/pi.dev/coding-agent-docs/session.md +412 -0
- package/docs/pi.dev/coding-agent-docs/settings.md +247 -0
- package/docs/pi.dev/coding-agent-docs/shell-aliases.md +13 -0
- package/docs/pi.dev/coding-agent-docs/skills.md +232 -0
- package/docs/pi.dev/coding-agent-docs/terminal-setup.md +106 -0
- package/docs/pi.dev/coding-agent-docs/termux.md +127 -0
- package/docs/pi.dev/coding-agent-docs/themes.md +295 -0
- package/docs/pi.dev/coding-agent-docs/tmux.md +61 -0
- package/docs/pi.dev/coding-agent-docs/tree.md +231 -0
- package/docs/pi.dev/coding-agent-docs/tui.md +887 -0
- package/docs/pi.dev/coding-agent-docs/windows.md +17 -0
- package/docs/pi.dev/mom-docs/artifacts-server.md +475 -0
- package/docs/pi.dev/mom-docs/events.md +307 -0
- package/docs/pi.dev/mom-docs/new.md +970 -0
- package/docs/pi.dev/mom-docs/sandbox.md +153 -0
- package/docs/pi.dev/mom-docs/slack-bot-minimal-guide.md +399 -0
- package/docs/pi.dev/mom-docs/v86.md +319 -0
- package/docs/pi.dev/pods-docs/gml-4.5.md +189 -0
- package/docs/pi.dev/pods-docs/gpt-oss.md +233 -0
- package/docs/pi.dev/pods-docs/implementation-plan.md +183 -0
- package/docs/pi.dev/pods-docs/kimi-k2.md +197 -0
- package/docs/pi.dev/pods-docs/models.md +116 -0
- package/docs/pi.dev/pods-docs/plan.md +166 -0
- package/docs/pi.dev/pods-docs/qwen3-coder.md +132 -0
- package/images/flowchart-bw.png +0 -0
- package/images/flowchart-bw.svg +102 -0
- package/images/flowchart.md +100 -0
- package/images/flowchart.png +0 -0
- package/images/flowchart.svg +3 -0
- package/package.json +46 -0
- package/req/docs/REFERENCES.md +4554 -0
- package/req/docs/REQUIREMENTS.md +475 -0
- package/req/docs/WORKFLOW.md +1059 -0
- package/scripts/debug-extension.ts +497 -0
- package/scripts/lib/extension-debug-harness.ts +450 -0
- package/scripts/lib/recording-extension-api.ts +786 -0
- package/scripts/lib/sdk-smoke.ts +503 -0
- package/scripts/pi-usereq-debug.sh +330 -0
- package/scripts/tool-args-to-params.ts +208 -0
- package/src/cli.ts +349 -0
- package/src/core/agent-tool-json.ts +621 -0
- package/src/core/compress-files.ts +72 -0
- package/src/core/compress-payload.ts +648 -0
- package/src/core/compress.ts +464 -0
- package/src/core/config.ts +272 -0
- package/src/core/doxygen-parser.ts +318 -0
- package/src/core/errors.ts +31 -0
- package/src/core/extension-status.ts +660 -0
- package/src/core/find-constructs.ts +319 -0
- package/src/core/find-payload.ts +915 -0
- package/src/core/generate-markdown.ts +120 -0
- package/src/core/path-context.ts +196 -0
- package/src/core/pi-notify.ts +430 -0
- package/src/core/pi-usereq-tools.ts +140 -0
- package/src/core/prompts.ts +184 -0
- package/src/core/reference-payload.ts +818 -0
- package/src/core/resources.ts +63 -0
- package/src/core/runtime-project-paths.ts +99 -0
- package/src/core/settings-menu.ts +233 -0
- package/src/core/source-analyzer.ts +1721 -0
- package/src/core/static-check.ts +674 -0
- package/src/core/token-counter.ts +729 -0
- package/src/core/tool-runner.ts +717 -0
- package/src/core/utils.ts +185 -0
- package/src/index.ts +2209 -0
- package/src/resources/guidelines/Google_C++_Style_Guide.md +3711 -0
- package/src/resources/guidelines/Google_Python_Style_Guide.md +3709 -0
- package/src/resources/prompts/analyze.md +130 -0
- package/src/resources/prompts/change.md +227 -0
- package/src/resources/prompts/check.md +139 -0
- package/src/resources/prompts/cover.md +219 -0
- package/src/resources/prompts/create.md +104 -0
- package/src/resources/prompts/fix.md +221 -0
- package/src/resources/prompts/flowchart.md +220 -0
- package/src/resources/prompts/implement.md +163 -0
- package/src/resources/prompts/new.md +226 -0
- package/src/resources/prompts/readme.md +182 -0
- package/src/resources/prompts/recreate.md +213 -0
- package/src/resources/prompts/refactor.md +213 -0
- package/src/resources/prompts/references.md +100 -0
- package/src/resources/prompts/renumber.md +119 -0
- package/src/resources/prompts/workflow.md +202 -0
- package/src/resources/prompts/write.md +99 -0
- package/src/resources/sounds/Machine-alert-beep-sound-effect.mp3 +0 -0
- package/src/resources/sounds/Soft-high-tech-notification-sound-effect.mp3 +0 -0
- package/src/resources/templates/Document_Source_Code_in_Doxygen_Style.md +130 -0
- package/src/resources/templates/HDT_Test_Authoring_Guide.md +318 -0
- package/src/resources/templates/Requirements_Template.md +78 -0
- package/tests/attended-results-scenarios.ts +758 -0
- package/tests/attended-results.test.ts +39 -0
- package/tests/cli-command-option-parity.test.ts +815 -0
- package/tests/debug-extension-harness.test.ts +463 -0
- package/tests/extension-registration.test.ts +2006 -0
- package/tests/fixtures/fixture_c.c +361 -0
- package/tests/fixtures/fixture_cpp.cpp +407 -0
- package/tests/fixtures/fixture_csharp.cs +411 -0
- package/tests/fixtures/fixture_elixir.ex +409 -0
- package/tests/fixtures/fixture_go.go +341 -0
- package/tests/fixtures/fixture_haskell.hs +250 -0
- package/tests/fixtures/fixture_java.java +430 -0
- package/tests/fixtures/fixture_javascript.js +383 -0
- package/tests/fixtures/fixture_kotlin.kt +451 -0
- package/tests/fixtures/fixture_lua.lua +276 -0
- package/tests/fixtures/fixture_perl.pl +310 -0
- package/tests/fixtures/fixture_php.php +433 -0
- package/tests/fixtures/fixture_python.py +502 -0
- package/tests/fixtures/fixture_ruby.rb +345 -0
- package/tests/fixtures/fixture_rust.rs +380 -0
- package/tests/fixtures/fixture_scala.scala +398 -0
- package/tests/fixtures/fixture_shell.sh +276 -0
- package/tests/fixtures/fixture_swift.swift +397 -0
- package/tests/fixtures/fixture_typescript.ts +434 -0
- package/tests/fixtures/fixture_zig.zig +295 -0
- package/tests/fixtures_attended_results/project/compress-line-numbers.json +5 -0
- package/tests/fixtures_attended_results/project/compress.json +5 -0
- package/tests/fixtures_attended_results/project/enable-static-check-invalid-command.json +5 -0
- package/tests/fixtures_attended_results/project/enable-static-check-valid.json +5 -0
- package/tests/fixtures_attended_results/project/files-static-check.json +5 -0
- package/tests/fixtures_attended_results/project/find-line-numbers.json +5 -0
- package/tests/fixtures_attended_results/project/find.json +5 -0
- package/tests/fixtures_attended_results/project/get-base-path.json +5 -0
- package/tests/fixtures_attended_results/project/git-check-clean.json +5 -0
- package/tests/fixtures_attended_results/project/git-check-dirty.json +5 -0
- package/tests/fixtures_attended_results/project/git-path.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-create-invalid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-create-valid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-delete-nonexistent.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-delete-valid.json +5 -0
- package/tests/fixtures_attended_results/project/git-wt-name.json +5 -0
- package/tests/fixtures_attended_results/project/references.json +5 -0
- package/tests/fixtures_attended_results/project/static-check.json +5 -0
- package/tests/fixtures_attended_results/project/tokens.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-compress-line-numbers/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-find-line-numbers/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-references/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/files-tokens/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-command/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-dummy/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-pylance/fixture_zig.zig.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_c.c.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_cpp.cpp.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_csharp.cs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_elixir.ex.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_go.go.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_haskell.hs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_java.java.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_javascript.js.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_kotlin.kt.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_lua.lua.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_perl.pl.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_php.php.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_python.py.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_ruby.rb.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_rust.rs.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_scala.scala.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_shell.sh.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_swift.swift.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_typescript.ts.json +5 -0
- package/tests/fixtures_attended_results/standalone/test-static-check-ruff/fixture_zig.zig.json +5 -0
- package/tests/helpers.ts +204 -0
- package/tests/oracle-project.test.ts +63 -0
- package/tests/oracle-standalone.test.ts +48 -0
- package/tests/prompt-rendering.test.ts +66 -0
- package/tests/release-workflow.test.ts +133 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* @file fixture_php.php
|
|
4
|
+
* @brief Comprehensive PHP test fixture for parser validation.
|
|
5
|
+
* @details Covers enums with methods, union/intersection types, readonly
|
|
6
|
+
* properties, constructor promotion, arrow functions, match expressions,
|
|
7
|
+
* first-class callables, attributes, fibers, and named arguments.
|
|
8
|
+
*/
|
|
9
|
+
// Single line comment
|
|
10
|
+
/* Multi-line
|
|
11
|
+
comment */
|
|
12
|
+
namespace App\Models;
|
|
13
|
+
|
|
14
|
+
use App\Contracts\Repository;
|
|
15
|
+
use App\Events\{ModelCreated, ModelDeleted};
|
|
16
|
+
use Psr\Log\LoggerInterface;
|
|
17
|
+
require_once 'config.php';
|
|
18
|
+
|
|
19
|
+
/* ── Constants ────────────────────────────────────────────────────────── */
|
|
20
|
+
|
|
21
|
+
/** @brief Application version string. */
|
|
22
|
+
const VERSION = "1.0";
|
|
23
|
+
|
|
24
|
+
/** @brief Maximum number of query results per page. */
|
|
25
|
+
const MAX_PER_PAGE = 50;
|
|
26
|
+
|
|
27
|
+
/* ── Enum with methods (PHP 8.1) ──────────────────────────────────────── */
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @enum Status
|
|
31
|
+
* @brief Backed enum representing entity lifecycle states.
|
|
32
|
+
*/
|
|
33
|
+
enum Status: string {
|
|
34
|
+
/** @brief Entity is in draft state, not yet visible. */
|
|
35
|
+
case Draft = 'draft';
|
|
36
|
+
/** @brief Entity is published and publicly accessible. */
|
|
37
|
+
case Published = 'published';
|
|
38
|
+
/** @brief Entity is archived and read-only. */
|
|
39
|
+
case Archived = 'archived';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @brief Check if the status represents an active state.
|
|
43
|
+
* @return bool True if the entity is publicly visible.
|
|
44
|
+
*/
|
|
45
|
+
public function isActive(): bool {
|
|
46
|
+
return $this === self::Published;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @brief Get a human-readable label for display.
|
|
51
|
+
* @return string Formatted status label.
|
|
52
|
+
*/
|
|
53
|
+
public function label(): string {
|
|
54
|
+
return match($this) {
|
|
55
|
+
self::Draft => 'Draft',
|
|
56
|
+
self::Published => 'Published',
|
|
57
|
+
self::Archived => 'Archived',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Abstract class with constructor promotion ────────────────────────── */
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @class BaseModel
|
|
66
|
+
* @brief Abstract base model with common persistence operations.
|
|
67
|
+
* @details Uses constructor promotion for compact field declaration.
|
|
68
|
+
*/
|
|
69
|
+
abstract class BaseModel {
|
|
70
|
+
/**
|
|
71
|
+
* @brief Construct a model with promoted properties.
|
|
72
|
+
* @param int $id Unique identifier (readonly after construction).
|
|
73
|
+
* @param \DateTimeImmutable $createdAt Timestamp of creation.
|
|
74
|
+
*/
|
|
75
|
+
public function __construct(
|
|
76
|
+
public readonly int $id,
|
|
77
|
+
public readonly \DateTimeImmutable $createdAt = new \DateTimeImmutable(),
|
|
78
|
+
) {}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @brief Persist the model to the data store.
|
|
82
|
+
* @return bool True if save succeeded.
|
|
83
|
+
*/
|
|
84
|
+
public function save(): bool {
|
|
85
|
+
// Validate before persisting
|
|
86
|
+
if (!$this->validate()) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @brief Validate model state before persistence.
|
|
94
|
+
* @return bool True if model is valid.
|
|
95
|
+
*/
|
|
96
|
+
abstract protected function validate(): bool;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @brief Internal validation helper with type narrowing.
|
|
100
|
+
* @return bool True if entity passes all constraint checks.
|
|
101
|
+
*/
|
|
102
|
+
private static function validateConstraints(): bool {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @brief Convert model to array representation.
|
|
108
|
+
* @return array<string, mixed> Associative array of model properties.
|
|
109
|
+
*/
|
|
110
|
+
abstract public function toArray(): array;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* ── Concrete class with union types ──────────────────────────────────── */
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @class User
|
|
117
|
+
* @extends BaseModel
|
|
118
|
+
* @brief Concrete user entity with union and intersection types.
|
|
119
|
+
*/
|
|
120
|
+
final class User extends BaseModel {
|
|
121
|
+
/** @brief User's display name. */
|
|
122
|
+
private string $name;
|
|
123
|
+
|
|
124
|
+
/** @brief User's email address or null if unverified. */
|
|
125
|
+
private ?string $email;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @brief Construct a User with promoted and explicit properties.
|
|
129
|
+
* @param int $id Unique user ID.
|
|
130
|
+
* @param string $name Display name.
|
|
131
|
+
* @param string|null $email Optional email address.
|
|
132
|
+
*/
|
|
133
|
+
public function __construct(
|
|
134
|
+
int $id,
|
|
135
|
+
string $name,
|
|
136
|
+
?string $email = null,
|
|
137
|
+
) {
|
|
138
|
+
parent::__construct($id);
|
|
139
|
+
$this->name = $name;
|
|
140
|
+
$this->email = $email;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @brief Get the user's display name.
|
|
145
|
+
* @return string The user name.
|
|
146
|
+
*/
|
|
147
|
+
public function getName(): string {
|
|
148
|
+
return $this->name;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @brief Get a value that may be string or int.
|
|
153
|
+
* @return string|int The identifier in either format.
|
|
154
|
+
*/
|
|
155
|
+
public function getIdentifier(): string|int {
|
|
156
|
+
// Return email if available, otherwise numeric ID
|
|
157
|
+
return $this->email ?? $this->id;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @brief Validate user-specific constraints.
|
|
162
|
+
* @return bool True if name is non-empty.
|
|
163
|
+
*/
|
|
164
|
+
protected function validate(): bool {
|
|
165
|
+
return strlen($this->name) > 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @brief Serialize user to array.
|
|
170
|
+
* @return array<string, mixed> User data array.
|
|
171
|
+
*/
|
|
172
|
+
public function toArray(): array {
|
|
173
|
+
return [
|
|
174
|
+
'id' => $this->id,
|
|
175
|
+
'name' => $this->name,
|
|
176
|
+
'email' => $this->email,
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* ── Interface with type hints ────────────────────────────────────────── */
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @interface Repo
|
|
185
|
+
* @brief Generic repository interface for data access patterns.
|
|
186
|
+
*/
|
|
187
|
+
interface Repo {
|
|
188
|
+
/**
|
|
189
|
+
* @brief Retrieve all entities.
|
|
190
|
+
* @return iterable<BaseModel> Collection of models.
|
|
191
|
+
*/
|
|
192
|
+
public function findAll(): iterable;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @brief Find a single entity by ID.
|
|
196
|
+
* @param int $id Entity identifier.
|
|
197
|
+
* @return BaseModel|null The found entity or null.
|
|
198
|
+
*/
|
|
199
|
+
public function findById(int $id): ?BaseModel;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @brief Count entities matching a filter.
|
|
203
|
+
* @param array<string, mixed> $criteria Filter criteria.
|
|
204
|
+
* @return int Number of matching entities.
|
|
205
|
+
*/
|
|
206
|
+
public function count(array $criteria = []): int;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* ── Trait with abstract methods ──────────────────────────────────────── */
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @trait Cacheable
|
|
213
|
+
* @brief Provides caching capabilities for models.
|
|
214
|
+
*/
|
|
215
|
+
trait Cacheable {
|
|
216
|
+
/** @brief Cache TTL in seconds. */
|
|
217
|
+
protected int $cacheTtl = 3600;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @brief Store the current object in cache.
|
|
221
|
+
* @return bool True if caching succeeded.
|
|
222
|
+
*/
|
|
223
|
+
public function cache(): bool {
|
|
224
|
+
// Serialize and store with TTL
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @brief Invalidate the cached version of this object.
|
|
230
|
+
* @return void
|
|
231
|
+
*/
|
|
232
|
+
public function invalidateCache(): void {
|
|
233
|
+
// Remove from cache backend
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @brief Require implementing classes to provide a cache key.
|
|
238
|
+
* @return string The unique cache key.
|
|
239
|
+
*/
|
|
240
|
+
abstract public function cacheKey(): string;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* @trait SoftDeletable
|
|
245
|
+
* @brief Adds soft delete functionality to models.
|
|
246
|
+
*/
|
|
247
|
+
trait SoftDeletable {
|
|
248
|
+
/** @brief Timestamp of soft deletion or null if active. */
|
|
249
|
+
protected ?\DateTimeImmutable $deletedAt = null;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* @brief Mark the entity as soft-deleted.
|
|
253
|
+
* @return void
|
|
254
|
+
*/
|
|
255
|
+
public function softDelete(): void {
|
|
256
|
+
$this->deletedAt = new \DateTimeImmutable();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @brief Check if the entity is currently deleted.
|
|
261
|
+
* @return bool True if soft-deleted.
|
|
262
|
+
*/
|
|
263
|
+
public function isDeleted(): bool {
|
|
264
|
+
return $this->deletedAt !== null;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* ── Class using multiple traits ──────────────────────────────────────── */
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* @class CachedUser
|
|
272
|
+
* @extends User
|
|
273
|
+
* @brief User entity with caching and soft-delete capabilities.
|
|
274
|
+
*/
|
|
275
|
+
final class CachedUser extends User {
|
|
276
|
+
use Cacheable;
|
|
277
|
+
use SoftDeletable;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* @brief Generate a unique cache key for this user.
|
|
281
|
+
* @return string Cache key in format "user:{id}".
|
|
282
|
+
*/
|
|
283
|
+
public function cacheKey(): string {
|
|
284
|
+
return "user:{$this->id}";
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/* ── Attribute (PHP 8.0) ──────────────────────────────────────────────── */
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* @class Route
|
|
292
|
+
* @brief PHP attribute for annotating controller methods with routes.
|
|
293
|
+
*/
|
|
294
|
+
#[\Attribute(\Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)]
|
|
295
|
+
class Route {
|
|
296
|
+
/**
|
|
297
|
+
* @brief Define a route attribute.
|
|
298
|
+
* @param string $path URL path pattern.
|
|
299
|
+
* @param string $method HTTP method (GET, POST, etc.).
|
|
300
|
+
*/
|
|
301
|
+
public function __construct(
|
|
302
|
+
public readonly string $path,
|
|
303
|
+
public readonly string $method = 'GET',
|
|
304
|
+
) {}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* ── Free functions ───────────────────────────────────────────────────── */
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* @function helper
|
|
311
|
+
* @brief Standalone helper returning a boolean result.
|
|
312
|
+
* @return bool Always returns true.
|
|
313
|
+
*/
|
|
314
|
+
function helper(): bool {
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* @function processData
|
|
320
|
+
* @brief Process data using match expression for type dispatching.
|
|
321
|
+
* @param mixed $data Input data of any type.
|
|
322
|
+
* @return string Description of the processed data.
|
|
323
|
+
*/
|
|
324
|
+
function processData(mixed $data): string {
|
|
325
|
+
/* Match expression for exhaustive type handling */
|
|
326
|
+
return match(true) {
|
|
327
|
+
is_string($data) => "string: " . strlen($data),
|
|
328
|
+
is_int($data) => "int: $data",
|
|
329
|
+
is_array($data) => "array: " . count($data),
|
|
330
|
+
$data instanceof BaseModel => "model: " . $data->id,
|
|
331
|
+
default => "unknown",
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* @function applyTransform
|
|
337
|
+
* @brief Higher-order function using arrow function syntax.
|
|
338
|
+
* @param array<int> $items Array of integers.
|
|
339
|
+
* @param callable(int): int $fn Transform function.
|
|
340
|
+
* @return array<int> Transformed array.
|
|
341
|
+
*/
|
|
342
|
+
function applyTransform(array $items, callable $fn): array {
|
|
343
|
+
return array_map(fn(int $x): int => $fn($x), $items);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* @function createMultiplier
|
|
348
|
+
* @brief Create a closure that multiplies its argument.
|
|
349
|
+
* @param int $factor The multiplication factor.
|
|
350
|
+
* @return \Closure(int): int A multiplier closure.
|
|
351
|
+
*/
|
|
352
|
+
function createMultiplier(int $factor): \Closure {
|
|
353
|
+
/* Capture $factor in the returned closure */
|
|
354
|
+
return fn(int $x): int => $x * $factor;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* @function readFileContent
|
|
359
|
+
* @brief Read file contents with comprehensive error handling.
|
|
360
|
+
* @param string $path File system path.
|
|
361
|
+
* @return string|false File contents or false on failure.
|
|
362
|
+
*/
|
|
363
|
+
function readFileContent(string $path): string|false {
|
|
364
|
+
if (!file_exists($path)) {
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
367
|
+
return file_get_contents($path);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* coverage extension block */
|
|
371
|
+
namespace App\Services;
|
|
372
|
+
namespace App\Http;
|
|
373
|
+
namespace App\Domain;
|
|
374
|
+
namespace App\Support;
|
|
375
|
+
interface ServiceContract {}
|
|
376
|
+
interface CacheContract {}
|
|
377
|
+
interface LoggerContract {}
|
|
378
|
+
interface EventContract {}
|
|
379
|
+
trait HandlesEvents {}
|
|
380
|
+
trait TracksChanges {}
|
|
381
|
+
trait AuthorizesRequests {}
|
|
382
|
+
const API_LIMIT = 50;
|
|
383
|
+
const DEFAULT_PAGE = 1;
|
|
384
|
+
const TIMEOUT = 30;
|
|
385
|
+
final class ApiClient {}
|
|
386
|
+
|
|
387
|
+
/* REQ-COVER-SRS-231 START */
|
|
388
|
+
/**
|
|
389
|
+
* @REQ-COVER-SRS-231 block 1
|
|
390
|
+
* @brief Coverage helper construct 1.
|
|
391
|
+
* @details Provides deterministic fixture-level Doxygen coverage block 1.
|
|
392
|
+
* @param value Input value for helper construct 1.
|
|
393
|
+
* @return Output value for helper construct 1.
|
|
394
|
+
*/
|
|
395
|
+
function req_cover_php_1(int $value): int { return $value + 1; }
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* @REQ-COVER-SRS-231 block 2
|
|
399
|
+
* @brief Coverage helper construct 2.
|
|
400
|
+
* @details Provides deterministic fixture-level Doxygen coverage block 2.
|
|
401
|
+
* @param value Input value for helper construct 2.
|
|
402
|
+
* @return Output value for helper construct 2.
|
|
403
|
+
*/
|
|
404
|
+
function req_cover_php_2(int $value): int { return $value + 2; }
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* @REQ-COVER-SRS-231 block 3
|
|
408
|
+
* @brief Coverage helper construct 3.
|
|
409
|
+
* @details Provides deterministic fixture-level Doxygen coverage block 3.
|
|
410
|
+
* @param value Input value for helper construct 3.
|
|
411
|
+
* @return Output value for helper construct 3.
|
|
412
|
+
*/
|
|
413
|
+
function req_cover_php_3(int $value): int { return $value + 3; }
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* @REQ-COVER-SRS-231 block 4
|
|
417
|
+
* @brief Coverage helper construct 4.
|
|
418
|
+
* @details Provides deterministic fixture-level Doxygen coverage block 4.
|
|
419
|
+
* @param value Input value for helper construct 4.
|
|
420
|
+
* @return Output value for helper construct 4.
|
|
421
|
+
*/
|
|
422
|
+
function req_cover_php_4(int $value): int { return $value + 4; }
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* @REQ-COVER-SRS-231 block 5
|
|
426
|
+
* @brief Coverage helper construct 5.
|
|
427
|
+
* @details Provides deterministic fixture-level Doxygen coverage block 5.
|
|
428
|
+
* @param value Input value for helper construct 5.
|
|
429
|
+
* @return Output value for helper construct 5.
|
|
430
|
+
*/
|
|
431
|
+
function req_cover_php_5(int $value): int { return $value + 5; }
|
|
432
|
+
|
|
433
|
+
/* REQ-COVER-SRS-231 END */
|