apisec-code-bolt 0.1.0__py3-none-any.whl

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.
Files changed (111) hide show
  1. apisec_code_bolt/__init__.py +42 -0
  2. apisec_code_bolt/__main__.py +11 -0
  3. apisec_code_bolt/analysis/__init__.py +96 -0
  4. apisec_code_bolt/analysis/analyzer.py +2309 -0
  5. apisec_code_bolt/analysis/binding_tracker.py +341 -0
  6. apisec_code_bolt/analysis/call_graph.py +1197 -0
  7. apisec_code_bolt/analysis/call_graph_types.py +332 -0
  8. apisec_code_bolt/analysis/call_resolver.py +988 -0
  9. apisec_code_bolt/analysis/capability_tagger.py +322 -0
  10. apisec_code_bolt/analysis/config_scanner.py +197 -0
  11. apisec_code_bolt/analysis/data_flow.py +1883 -0
  12. apisec_code_bolt/analysis/dependency_extractor.py +959 -0
  13. apisec_code_bolt/analysis/flow_analysis.py +1406 -0
  14. apisec_code_bolt/analysis/hof_catalog.py +61 -0
  15. apisec_code_bolt/analysis/integration_detector.py +1399 -0
  16. apisec_code_bolt/analysis/literal_scanner.py +300 -0
  17. apisec_code_bolt/analysis/path_normalizer.py +55 -0
  18. apisec_code_bolt/analysis/read_site_detector.py +310 -0
  19. apisec_code_bolt/analysis/request_patterns.py +162 -0
  20. apisec_code_bolt/analysis/sensitivity_classifier.py +224 -0
  21. apisec_code_bolt/analysis/sink_evidence.py +333 -0
  22. apisec_code_bolt/analysis/url_prefix_resolver.py +338 -0
  23. apisec_code_bolt/cli/__init__.py +5 -0
  24. apisec_code_bolt/cli/exit_codes.py +17 -0
  25. apisec_code_bolt/cli/main.py +1069 -0
  26. apisec_code_bolt/cloud/__init__.py +1 -0
  27. apisec_code_bolt/cloud/apisec_client.py +118 -0
  28. apisec_code_bolt/cloud/client.py +255 -0
  29. apisec_code_bolt/core/__init__.py +75 -0
  30. apisec_code_bolt/core/config.py +528 -0
  31. apisec_code_bolt/core/credentials.py +65 -0
  32. apisec_code_bolt/core/discovery.py +433 -0
  33. apisec_code_bolt/core/log_format.py +115 -0
  34. apisec_code_bolt/core/manifest.py +1009 -0
  35. apisec_code_bolt/core/repo.py +280 -0
  36. apisec_code_bolt/core/state.py +59 -0
  37. apisec_code_bolt/core/telemetry.py +451 -0
  38. apisec_code_bolt/core/types.py +587 -0
  39. apisec_code_bolt/fingerprinting/__init__.py +1 -0
  40. apisec_code_bolt/frameworks/__init__.py +29 -0
  41. apisec_code_bolt/frameworks/_jwt_common.py +50 -0
  42. apisec_code_bolt/frameworks/auth_helpers.py +437 -0
  43. apisec_code_bolt/frameworks/base.py +608 -0
  44. apisec_code_bolt/frameworks/dotnet/__init__.py +17 -0
  45. apisec_code_bolt/frameworks/dotnet/_path_helpers.py +43 -0
  46. apisec_code_bolt/frameworks/dotnet/aspnet_plugin.py +2546 -0
  47. apisec_code_bolt/frameworks/dotnet/grpc_plugin.py +559 -0
  48. apisec_code_bolt/frameworks/dotnet/jwt_config_extractor.py +545 -0
  49. apisec_code_bolt/frameworks/dotnet/legacy_aspnet_plugin.py +732 -0
  50. apisec_code_bolt/frameworks/dotnet/refit_plugin.py +374 -0
  51. apisec_code_bolt/frameworks/dotnet/wcf_plugin.py +1239 -0
  52. apisec_code_bolt/frameworks/java/__init__.py +6 -0
  53. apisec_code_bolt/frameworks/java/_annotations.py +167 -0
  54. apisec_code_bolt/frameworks/java/_constraints.py +128 -0
  55. apisec_code_bolt/frameworks/java/graphql_plugin.py +287 -0
  56. apisec_code_bolt/frameworks/java/jaxrs_plugin.py +748 -0
  57. apisec_code_bolt/frameworks/java/jwt_config_extractor.py +361 -0
  58. apisec_code_bolt/frameworks/java/micronaut_plugin.py +1059 -0
  59. apisec_code_bolt/frameworks/java/spring_plugin.py +1293 -0
  60. apisec_code_bolt/frameworks/js/__init__.py +8 -0
  61. apisec_code_bolt/frameworks/js/express_plugin.py +391 -0
  62. apisec_code_bolt/frameworks/js/fastify_plugin.py +381 -0
  63. apisec_code_bolt/frameworks/js/graphql_plugin.py +198 -0
  64. apisec_code_bolt/frameworks/js/nestjs_plugin.py +423 -0
  65. apisec_code_bolt/frameworks/python/__init__.py +19 -0
  66. apisec_code_bolt/frameworks/python/celery_plugin.py +393 -0
  67. apisec_code_bolt/frameworks/python/click_plugin.py +427 -0
  68. apisec_code_bolt/frameworks/python/django_plugin.py +867 -0
  69. apisec_code_bolt/frameworks/python/fastapi/__init__.py +28 -0
  70. apisec_code_bolt/frameworks/python/fastapi/plugin.py +1390 -0
  71. apisec_code_bolt/frameworks/python/flask_plugin.py +205 -0
  72. apisec_code_bolt/frameworks/python/graphql_plugin.py +274 -0
  73. apisec_code_bolt/frameworks/python/prefect_plugin.py +251 -0
  74. apisec_code_bolt/frameworks/python/webhook_plugin.py +255 -0
  75. apisec_code_bolt/parsing/__init__.py +62 -0
  76. apisec_code_bolt/parsing/base.py +554 -0
  77. apisec_code_bolt/parsing/csharp/__init__.py +5 -0
  78. apisec_code_bolt/parsing/csharp/language_services.py +203 -0
  79. apisec_code_bolt/parsing/csharp/literals.py +72 -0
  80. apisec_code_bolt/parsing/csharp/parser.py +1158 -0
  81. apisec_code_bolt/parsing/csharp/type_resolver.py +568 -0
  82. apisec_code_bolt/parsing/js/__init__.py +5 -0
  83. apisec_code_bolt/parsing/js/language_services.py +118 -0
  84. apisec_code_bolt/parsing/js/parser.py +622 -0
  85. apisec_code_bolt/parsing/jvm/__init__.py +7 -0
  86. apisec_code_bolt/parsing/jvm/language_services.py +270 -0
  87. apisec_code_bolt/parsing/jvm/parser.py +774 -0
  88. apisec_code_bolt/parsing/jvm/type_resolver.py +422 -0
  89. apisec_code_bolt/parsing/python/__init__.py +150 -0
  90. apisec_code_bolt/parsing/python/cbv_extractor.py +606 -0
  91. apisec_code_bolt/parsing/python/constant_resolver.py +500 -0
  92. apisec_code_bolt/parsing/python/cross_file_resolver.py +1054 -0
  93. apisec_code_bolt/parsing/python/dynamic_route_detector.py +532 -0
  94. apisec_code_bolt/parsing/python/expression_utils.py +221 -0
  95. apisec_code_bolt/parsing/python/extraction_types.py +271 -0
  96. apisec_code_bolt/parsing/python/language_services.py +487 -0
  97. apisec_code_bolt/parsing/python/parameter_analyzer.py +789 -0
  98. apisec_code_bolt/parsing/python/parser.py +719 -0
  99. apisec_code_bolt/parsing/python/path_resolver.py +576 -0
  100. apisec_code_bolt/parsing/python/router_registry.py +806 -0
  101. apisec_code_bolt/parsing/python/type_resolver.py +730 -0
  102. apisec_code_bolt/parsing/python/visitors.py +1544 -0
  103. apisec_code_bolt/parsing/services.py +544 -0
  104. apisec_code_bolt/query/__init__.py +1 -0
  105. apisec_code_bolt/query/ast_cache.py +182 -0
  106. apisec_code_bolt/query/executor.py +283 -0
  107. apisec_code_bolt/query/handlers.py +832 -0
  108. apisec_code_bolt-0.1.0.dist-info/METADATA +230 -0
  109. apisec_code_bolt-0.1.0.dist-info/RECORD +111 -0
  110. apisec_code_bolt-0.1.0.dist-info/WHEEL +4 -0
  111. apisec_code_bolt-0.1.0.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: apisec-code-bolt
3
+ Version: 0.1.0
4
+ Summary: Static analysis probe for extracting architectural metadata from codebases
5
+ Project-URL: Homepage, https://apisec.ai
6
+ Project-URL: Documentation, https://docs.apisec.ai/code-bolt
7
+ Project-URL: Repository, https://github.com/apisec-inc/apisec-code-bolt
8
+ Author-email: APIsec <engineering@apisec.ai>
9
+ License: Proprietary
10
+ Keywords: api,security,static-analysis,vulnerability
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Security
19
+ Classifier: Topic :: Software Development :: Quality Assurance
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: click>=8.1.0
23
+ Requires-Dist: httpx>=0.26.0
24
+ Requires-Dist: javalang>=0.13.0
25
+ Requires-Dist: libcst>=1.1.0
26
+ Requires-Dist: networkx>=3.2
27
+ Requires-Dist: pathspec>=0.12.0
28
+ Requires-Dist: pydantic-settings>=2.1.0
29
+ Requires-Dist: pydantic>=2.5.0
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: rich>=13.7.0
32
+ Requires-Dist: tree-sitter-c-sharp>=0.23
33
+ Requires-Dist: tree-sitter-javascript>=0.23
34
+ Requires-Dist: tree-sitter-typescript>=0.23
35
+ Requires-Dist: tree-sitter>=0.23
36
+ Requires-Dist: typing-extensions>=4.9.0
37
+ Provides-Extra: dev
38
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
39
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
40
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
41
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
42
+ Requires-Dist: ruff>=0.6; extra == 'dev'
43
+ Provides-Extra: semgrep
44
+ Requires-Dist: semgrep>=1.50.0; extra == 'semgrep'
45
+ Description-Content-Type: text/markdown
46
+
47
+ # apisec-code-bolt
48
+
49
+ Static analysis probe for extracting architectural metadata from codebases.
50
+
51
+ ## Overview
52
+
53
+ apisec-code-bolt analyzes source code to extract:
54
+
55
+ - **Routes/Endpoints** — HTTP routes, parameters, request/response types
56
+ - **Data Flows** — How data moves from entry points to sinks
57
+ - **Authentication** — Auth schemes, dependencies, role requirements
58
+ - **Integrations** — External services, databases, APIs
59
+ - **Dependencies** — Package dependencies and versions
60
+
61
+ The output is a structured **manifest** that can be uploaded to the APIsec cloud
62
+ for vulnerability analysis. **Raw source code never leaves your environment.**
63
+
64
+ ## Installation
65
+
66
+ ```bash
67
+ pip install apisec-code-bolt
68
+ ```
69
+
70
+ ## Quick Start
71
+
72
+ ```bash
73
+ # Analyze a project and upload to cloud
74
+ apisec-code-bolt analyze /path/to/project
75
+
76
+ # Analyze and save manifest locally
77
+ apisec-code-bolt analyze . --output manifest.json --no-upload
78
+
79
+ # With framework hints
80
+ apisec-code-bolt analyze . --frameworks fastapi,sqlalchemy
81
+ ```
82
+
83
+ ## Supported Languages & Frameworks
84
+
85
+ ### Currently Supported
86
+
87
+ | Language | Frameworks |
88
+ |----------|-----------|
89
+ | Python | FastAPI |
90
+ | Java | Spring Boot |
91
+
92
+ ### Planned
93
+
94
+ | Language | Frameworks |
95
+ |----------|-----------|
96
+ | Python | Flask, Django |
97
+ | Java | Micronaut, Quarkus |
98
+ | Kotlin | Spring Boot, Ktor |
99
+ | JavaScript/TypeScript | Express, NestJS |
100
+
101
+ ## Configuration
102
+
103
+ Create a `.codebolt.yaml` file in your project root:
104
+
105
+ ```yaml
106
+ analysis:
107
+ file_discovery:
108
+ exclude_patterns:
109
+ - "tests/**"
110
+ - "**/migrations/**"
111
+ max_files: 10000
112
+
113
+ data_flow:
114
+ mode: inter_procedural
115
+ max_depth: 10
116
+
117
+ cloud:
118
+ enabled: true
119
+ api_url: https://api.apisec.ai
120
+
121
+ output:
122
+ format: json
123
+ ```
124
+
125
+ ## Commands
126
+
127
+ ### analyze
128
+
129
+ Analyze a codebase and generate a manifest.
130
+
131
+ ```bash
132
+ apisec-code-bolt analyze [PATH] [OPTIONS]
133
+
134
+ Options:
135
+ -o, --output FILE Save manifest to file
136
+ --no-upload Skip uploading to cloud
137
+ --format [json|yaml] Output format
138
+ --config FILE Path to config file
139
+ --frameworks TEXT Comma-separated framework hints
140
+ --exclude TEXT Glob patterns to exclude
141
+ --max-files INTEGER Maximum files to analyze
142
+ --timeout INTEGER Analysis timeout in seconds
143
+ ```
144
+
145
+ ### auth
146
+
147
+ Authenticate with the APIsec cloud.
148
+
149
+ ```bash
150
+ apisec-code-bolt auth [API_KEY] [OPTIONS]
151
+
152
+ Options:
153
+ --check Check if already authenticated
154
+ --logout Remove stored credentials
155
+ ```
156
+
157
+ ### answer
158
+
159
+ Answer verification queries (for air-gapped environments).
160
+
161
+ ```bash
162
+ apisec-code-bolt answer [OPTIONS]
163
+
164
+ Options:
165
+ -q, --questions FILE Input questions file (required)
166
+ -o, --output FILE Output answers file
167
+ -r, --repo PATH Repository path
168
+ --timeout INTEGER Query timeout in seconds
169
+ ```
170
+
171
+ ## Architecture
172
+
173
+ ```
174
+ apisec-code-bolt/
175
+ ├── cli/ # Command-line interface
176
+ ├── core/ # Types, config, manifest schema
177
+ ├── parsing/ # Language-specific parsers
178
+ │ ├── python/ # LibCST-based Python parser
179
+ │ └── jvm/ # Java/Kotlin via subprocess
180
+ ├── frameworks/ # Framework plugins
181
+ │ ├── python/ # FastAPI, Flask, Django
182
+ │ └── java/ # Spring Boot, Micronaut
183
+ ├── analysis/ # Call graph, data flow
184
+ ├── fingerprinting/ # Integration detection
185
+ ├── query/ # Query API executor
186
+ └── cloud/ # Cloud communication
187
+ ```
188
+
189
+ ## Development
190
+
191
+ ### Setup
192
+
193
+ ```bash
194
+ # Clone and install in development mode
195
+ git clone https://github.com/apisec-inc/apisec-code-bolt.git
196
+ cd apisec-code-bolt
197
+ pip install -e ".[dev]"
198
+ ```
199
+
200
+ ### Running Tests
201
+
202
+ ```bash
203
+ pytest
204
+ ```
205
+
206
+ ### Type Checking
207
+
208
+ ```bash
209
+ mypy src/apisec_code_bolt
210
+ ```
211
+
212
+ ### Linting
213
+
214
+ ```bash
215
+ ruff check src/
216
+ black --check src/
217
+ ```
218
+
219
+ ## Privacy
220
+
221
+ apisec-code-bolt is designed with privacy as a core principle:
222
+
223
+ - **No raw code egress** — Source code never leaves your environment
224
+ - **Metadata only** — The manifest contains structural information, not code
225
+ - **Outbound only** — Only makes outbound HTTPS calls to upload manifests
226
+ - **Air-gapped support** — Can run completely offline with file-based workflow
227
+
228
+ ## License
229
+
230
+ Proprietary. Copyright © APIsec.
@@ -0,0 +1,111 @@
1
+ apisec_code_bolt/__init__.py,sha256=u4Cc8Oqu_SH3Z7FebosXpNYG33Wx6uGVBW1KHtIsPp4,881
2
+ apisec_code_bolt/__main__.py,sha256=u_VEfSt0sWytQN9CKZpPJoNOvKTNt4BnEnRIVPDgAdM,171
3
+ apisec_code_bolt/analysis/__init__.py,sha256=7RQWQNaz3CHP5NUhKrOAC2kBwKWi-BitlR9s5QpxTs0,2036
4
+ apisec_code_bolt/analysis/analyzer.py,sha256=-g8GjWgMCjcxMmGpk46omyHXREjGlsOXWgT8x_ICYI4,96775
5
+ apisec_code_bolt/analysis/binding_tracker.py,sha256=q6OdInM173Mb63_NXPjvz6tEJRaRYf6fQEFNOpEvM_Q,12778
6
+ apisec_code_bolt/analysis/call_graph.py,sha256=niv9cc5xDz62QO5YN-V2vJbTlr54wABTFCYSONVhkEk,43956
7
+ apisec_code_bolt/analysis/call_graph_types.py,sha256=Z2wXQOX1jlng6hAq09gfl89fc1m40CEYHe9s-T522Vk,8353
8
+ apisec_code_bolt/analysis/call_resolver.py,sha256=idlLsfYtbaBxr377acN39xU9nscU1R90YDGa67UQ_mc,35563
9
+ apisec_code_bolt/analysis/capability_tagger.py,sha256=qAC77SFA-L44Tvp8YvyBcjviisuv15WeQEyapz2s9SA,10595
10
+ apisec_code_bolt/analysis/config_scanner.py,sha256=dBmBF5KkRrLUQF3DbObCKl-5vkZ4EHgnfMw8yw0bSo8,6342
11
+ apisec_code_bolt/analysis/data_flow.py,sha256=I6QJJzEi-0p4iPZu1s__dMqaAWvTGrfjP_aQzOMyCOc,70147
12
+ apisec_code_bolt/analysis/dependency_extractor.py,sha256=7zgMT9SzZiYKMM7of4IkPUskkgTHsoixumcWysSK7Z4,38620
13
+ apisec_code_bolt/analysis/flow_analysis.py,sha256=hsr2lT_eLclLR-JB1btlLFk0FMVSmj_S3b77NGiKtkk,49946
14
+ apisec_code_bolt/analysis/hof_catalog.py,sha256=rJBuavNyUTdymAnkHl5VcC-DEDgy3jog5NQPG70FhN0,2056
15
+ apisec_code_bolt/analysis/integration_detector.py,sha256=-p-1Uz-X8cCudk1pDZTPV6MAuFBplWdIX-xFn5FoiVo,59917
16
+ apisec_code_bolt/analysis/literal_scanner.py,sha256=7cLm1NgQ36hD7jwy2vdUOETrrFZ_dncg_rnTIVnU_Kk,11287
17
+ apisec_code_bolt/analysis/path_normalizer.py,sha256=kkUUbBmnj9ClkKDBSpWVQQ9sauIZC1crg-cXwumEB1w,1567
18
+ apisec_code_bolt/analysis/read_site_detector.py,sha256=qVG8dvmsusv8JsIc3lFVmLSQQuIC0auHa_GONnHVx8c,13530
19
+ apisec_code_bolt/analysis/request_patterns.py,sha256=egeUoVjfZBvwr5-QzspkbQIXnwZMbsN_8JDwhgcN93Y,6104
20
+ apisec_code_bolt/analysis/sensitivity_classifier.py,sha256=tqLGHcNqDFI0LPWrOL7cJKjVUTjTj4HoKSu7YVQrtyw,7834
21
+ apisec_code_bolt/analysis/sink_evidence.py,sha256=XHM9m8NP9WcN2bJGh0_ETaZ30jCv2Fg-E6pAMJBnGvo,10585
22
+ apisec_code_bolt/analysis/url_prefix_resolver.py,sha256=Niabnxo10C4rXv3gWKVTbHeO_DbP6rPkXRHwsBOsPKg,14362
23
+ apisec_code_bolt/cli/__init__.py,sha256=OZVi4_o84jc5dmhNBTcaW5BH7ts3B1pw6jBz1djUfnM,93
24
+ apisec_code_bolt/cli/exit_codes.py,sha256=JfALjyphcsCp88FEYGcGjdo_AKfeLARogoBB7hJw69s,588
25
+ apisec_code_bolt/cli/main.py,sha256=iGUDiG5bT9ZjNW-sFUf3oYQsaLdZb7pi74zBcLQL_iE,34229
26
+ apisec_code_bolt/cloud/__init__.py,sha256=Urv9lBf0ZM6-woLURoqHXf7V1H6ZujKyrPtDX82gjgE,68
27
+ apisec_code_bolt/cloud/apisec_client.py,sha256=YtovfwGOmDrhzEJtMhQDbI97oJiIinxGbblB6TKqxLM,3650
28
+ apisec_code_bolt/cloud/client.py,sha256=DmGLpCItlN3dgLFq1ZdFrERGX4UhfPolItOdtQWgu2M,8139
29
+ apisec_code_bolt/core/__init__.py,sha256=H8Ntein5W2Jy19mMfaA3MmGpSMBAO_a7pg8Dth4XACI,1463
30
+ apisec_code_bolt/core/config.py,sha256=NLAJS3xLnMxTWHlwhLb9_qPa0bEmLXc4WVrqO9Qqq6Q,13804
31
+ apisec_code_bolt/core/credentials.py,sha256=_VmyrIE3kBloxlQgKHEIrkGuxaYEu7n8EeFeCuWgYmQ,1838
32
+ apisec_code_bolt/core/discovery.py,sha256=E8DXmXVwoUuf7dlpPuFxZH0N5RdBrTE1qsksA0TugXo,13267
33
+ apisec_code_bolt/core/log_format.py,sha256=s3VBzLOcW0lGACc7JY2ju8Z3jz85IJZvDrKOxV9EGDo,3884
34
+ apisec_code_bolt/core/manifest.py,sha256=e7Unwt-kHWnHHdMTSlKpmXCHlFexpiMvFtX5PvUJSFo,32831
35
+ apisec_code_bolt/core/repo.py,sha256=aAZzcroIGI3JeZNFHgjRnr4SpKAMOJDcgxvCd_08GT4,8581
36
+ apisec_code_bolt/core/state.py,sha256=-8zQ-bryxqyA0DL3V8dOiY9-esWLAj0ZA4IrN85DWEc,1778
37
+ apisec_code_bolt/core/telemetry.py,sha256=GiPph8cF7tE83QvsHImducLEgMIskqHPHbb2xJjeHWs,13983
38
+ apisec_code_bolt/core/types.py,sha256=IvldtC4uhYFjThcQD-U0Cn4SdRUTVCWB5uGqYKfkd04,15820
39
+ apisec_code_bolt/fingerprinting/__init__.py,sha256=9c4ezkjdzbowjOGtGunP0GdnuoKXuTMSvrHTpTcp3kk,59
40
+ apisec_code_bolt/frameworks/__init__.py,sha256=wCZfcQjRJKBOlcfmWw9nliahJbD0NSd0_ezTSndJNi0,641
41
+ apisec_code_bolt/frameworks/_jwt_common.py,sha256=rCB-SLWGODKmNa2_uoKmNApEmOkGfsbDw1CUpXvMm9o,1542
42
+ apisec_code_bolt/frameworks/auth_helpers.py,sha256=O4WH28OmrXcDiklcQeKYViOjRQ0VW6-ziZbuyrKtKDs,17756
43
+ apisec_code_bolt/frameworks/base.py,sha256=IlY59PlegEUCzilwIzNJagknuhPfmn6Z4g44AmMEXSQ,18799
44
+ apisec_code_bolt/frameworks/dotnet/__init__.py,sha256=sK6XClzukDhci905qp1h3trqKYKVgXmIy3JNzZ4qHnw,478
45
+ apisec_code_bolt/frameworks/dotnet/_path_helpers.py,sha256=jA3VeJa7kybc0I0IYuskOrtOMe5LKAQIeOwuaPz3WKk,1400
46
+ apisec_code_bolt/frameworks/dotnet/aspnet_plugin.py,sha256=pwNPCrEeQncwEdKUyRMbbcQDC7Ttn3ZCi0j1HojizL8,106471
47
+ apisec_code_bolt/frameworks/dotnet/grpc_plugin.py,sha256=h12nrOQprLLxI7dldG1-O6OP3dhKLbYED3PCMIe4BGY,21798
48
+ apisec_code_bolt/frameworks/dotnet/jwt_config_extractor.py,sha256=zGAxmNP2eVfCrtiRNeQ9YHVsqBLx2rYMNc-Ukx5yn0Y,22062
49
+ apisec_code_bolt/frameworks/dotnet/legacy_aspnet_plugin.py,sha256=iXy5B4aml_kymU9OCWOWiVJ3ojRu8aa9t2kE6rXPrnQ,30239
50
+ apisec_code_bolt/frameworks/dotnet/refit_plugin.py,sha256=mILerZSSahFLs_T9R7mr9YL7DgpIjrrxWQbtW2qHXRk,13153
51
+ apisec_code_bolt/frameworks/dotnet/wcf_plugin.py,sha256=4QxDtytU-gsNTi5x7s_VaV5wGg4AJ9Px6SPQtgmtuTU,49936
52
+ apisec_code_bolt/frameworks/java/__init__.py,sha256=nv8SMye2wSuPMhoaT5RkFbVLlYN6PdBSZFdVF7Q1uV8,407
53
+ apisec_code_bolt/frameworks/java/_annotations.py,sha256=bXzVnQWcC5t4LinhXswYIIL8L-4n7_FwIMoLh3l64tw,5511
54
+ apisec_code_bolt/frameworks/java/_constraints.py,sha256=Ve88HxBfZ5HSV8-cOZ20zUBNylrXFnCynk1h3Q3AHME,3747
55
+ apisec_code_bolt/frameworks/java/graphql_plugin.py,sha256=4t8PataAtvl_bpTS5xQEmUOJGPurZgeVp3rOQ6DCcVw,9236
56
+ apisec_code_bolt/frameworks/java/jaxrs_plugin.py,sha256=nmrkmBwhw2F3p-_O7X3resvkqk4jSyJWDdBOs2owTis,27617
57
+ apisec_code_bolt/frameworks/java/jwt_config_extractor.py,sha256=qlY4i8HJ55xcKMHXaj3RpUWdVe-UDXIj2G69LrM8LZA,13933
58
+ apisec_code_bolt/frameworks/java/micronaut_plugin.py,sha256=7TuBCNToR70SY0DjJHUemk86U6dsVlXMiGgXxtnFu-k,39197
59
+ apisec_code_bolt/frameworks/java/spring_plugin.py,sha256=VByyd-c5gItpKrEtaDrp8FRaeeY5yb0xS52uRESI7PI,52182
60
+ apisec_code_bolt/frameworks/js/__init__.py,sha256=GbF8VWiDJN5kX_9g2dVWrT3kekIjrJVGnTEmh7nA_y0,353
61
+ apisec_code_bolt/frameworks/js/express_plugin.py,sha256=D13_bLI-Ho98d__rHZWc_ReeHR1VOBcFAsHKzvzz9QY,14518
62
+ apisec_code_bolt/frameworks/js/fastify_plugin.py,sha256=BEDvILDH-HrQTKx5L225ph2bMVXyGUoeyDVyD_Cf75U,13287
63
+ apisec_code_bolt/frameworks/js/graphql_plugin.py,sha256=KWidAGdiREb7EQ6jCXNOZL7u_R3EkZ1YfDtqhL2E8hk,6703
64
+ apisec_code_bolt/frameworks/js/nestjs_plugin.py,sha256=ccZDnszg6KoXr1homVfWkzHyfaJ8gyJ-8qoOJGCZVRk,15143
65
+ apisec_code_bolt/frameworks/python/__init__.py,sha256=XeT0KU5tsSxTqdAD-a_3Mo9CJ8jM-iOq3aEQ3do-w6Q,492
66
+ apisec_code_bolt/frameworks/python/celery_plugin.py,sha256=dAkGtBP7LDF8a6khOJGk6bLhVVe5_-QXVaZdNUt_feA,12606
67
+ apisec_code_bolt/frameworks/python/click_plugin.py,sha256=trKWQ4S7fZLYJuB4SGiw6Hbonn2Od2NaYp3FWLDy3gQ,14370
68
+ apisec_code_bolt/frameworks/python/django_plugin.py,sha256=vissEyAFQi3BZss6tWXDlRu22yLtnhWhOq5dKefV6qU,32930
69
+ apisec_code_bolt/frameworks/python/flask_plugin.py,sha256=d7WH3Fxn7I9OrrNLas22KCGquRsPXuReukXbJYHggEY,6695
70
+ apisec_code_bolt/frameworks/python/graphql_plugin.py,sha256=fJA_jWfpicqzrx__FN9CDbJUInbqteSoYi45769hNf4,9841
71
+ apisec_code_bolt/frameworks/python/prefect_plugin.py,sha256=m5NrfHwMptq03O3vfREgVQh-QynYXdeTlIJABMFAhjs,8170
72
+ apisec_code_bolt/frameworks/python/webhook_plugin.py,sha256=f693-DAY2jm0NlMWerbrUJYgRqF8wa4k-zYD9HflLro,8823
73
+ apisec_code_bolt/frameworks/python/fastapi/__init__.py,sha256=VB5LIrPwFXRJHbpldRh9w93e_vHoeOpbUqhlgmyYrSc,790
74
+ apisec_code_bolt/frameworks/python/fastapi/plugin.py,sha256=EkCs9oaVdZTjSuTKLTgb-Qgkc8HXvwkkawk91hPEHAM,53942
75
+ apisec_code_bolt/parsing/__init__.py,sha256=GE3NaZR1jDl-mK2j5QEUKXY3sGF0VEyrXdHiJwjZwFA,1182
76
+ apisec_code_bolt/parsing/base.py,sha256=0mWE97E42emGbuZuXQpE27OwbpSoSbQTeGZuqtoDts0,16308
77
+ apisec_code_bolt/parsing/services.py,sha256=oUMgMLETl9vGqxUpy4L80Op082vl1fi6B52AsWkENtU,16284
78
+ apisec_code_bolt/parsing/csharp/__init__.py,sha256=Rp6vHt2XT9xwyBnR48i7vcHpQUyo_4psYz1xcHLrQ9E,149
79
+ apisec_code_bolt/parsing/csharp/language_services.py,sha256=sZolsJBchffpwpdw9Gg9sOhfnXr2hHJrdgaBOVYTqaQ,6182
80
+ apisec_code_bolt/parsing/csharp/literals.py,sha256=osRbegguNd19DgsYFjBroA0dbF7wculLGQolsMXx_SY,2484
81
+ apisec_code_bolt/parsing/csharp/parser.py,sha256=8AJ4ninMTuKi1rF1Fzy3H7PujIRzByZAk2qc7iRLY9Q,42529
82
+ apisec_code_bolt/parsing/csharp/type_resolver.py,sha256=DA8bQdG_Dk9YlKirZt8yFxbYHmrZULD7QFJTeaeC3_M,19207
83
+ apisec_code_bolt/parsing/js/__init__.py,sha256=kMrtUeCEkBPRHlD4XVkAOQ4QanIriCPee800E2rFe9I,106
84
+ apisec_code_bolt/parsing/js/language_services.py,sha256=xvg6KrmXQ9c8MpOUfw2xRh84aocmxSMz011i8w0pu_k,3260
85
+ apisec_code_bolt/parsing/js/parser.py,sha256=7SaloO1KLsyCJs__wdPYvWRsYoX2nZ-YGGlkMSq7gqo,22232
86
+ apisec_code_bolt/parsing/jvm/__init__.py,sha256=XAelwljeJigxtpyyH0_iQctbGnHg9t3eXXEGvZofmJ4,240
87
+ apisec_code_bolt/parsing/jvm/language_services.py,sha256=unH1Q59tr6sIolkM2LuD71VlCAxIzIhxK6MWDleZQYs,9278
88
+ apisec_code_bolt/parsing/jvm/parser.py,sha256=q-mw3VQ1nRPmUOp6h-Dh8hAijzYmNFCqo8022xXlX68,29141
89
+ apisec_code_bolt/parsing/jvm/type_resolver.py,sha256=5ZAURA_WVJ__iXv23YK141qgIYn6krB8VAQfpRqMfuw,14148
90
+ apisec_code_bolt/parsing/python/__init__.py,sha256=rY76wYu5NncKOy8k_Wr1rHY6SdWGCMf-c-yISzYKIwA,3389
91
+ apisec_code_bolt/parsing/python/cbv_extractor.py,sha256=NPSrkO74zR32Zyisdm9fyladzGM7ZidLTU8BMYy5XhY,19224
92
+ apisec_code_bolt/parsing/python/constant_resolver.py,sha256=tfhW2zBvIoNP8P4PLPkTnm483UnCYzv4mtQjbknnipc,17544
93
+ apisec_code_bolt/parsing/python/cross_file_resolver.py,sha256=Sl4SkNqbGrbGfRxcusW4hx35BWuG_a3BPQuorSxVUH4,34633
94
+ apisec_code_bolt/parsing/python/dynamic_route_detector.py,sha256=LmCTwh-XhzDfLTyHnDU-E4fkXpG-LylbJ9mwsPor6rs,18251
95
+ apisec_code_bolt/parsing/python/expression_utils.py,sha256=PwevJon7n5d3dzAMxOFIcgsgC5TVwZ2v4AR-5Vt33wk,7836
96
+ apisec_code_bolt/parsing/python/extraction_types.py,sha256=9gM0QsoCLw5JGBAONjjRkDqSJw4MKDm-UfepWLxT-Pc,7243
97
+ apisec_code_bolt/parsing/python/language_services.py,sha256=M5Lv7sv-OBW4iVwgJ3dBWVB26Q5CUUen6UjO9IY6azA,16412
98
+ apisec_code_bolt/parsing/python/parameter_analyzer.py,sha256=NSeXatt0ZIMdvbtVj-dYYPURMUQtI2NYPVP1WXHPzhs,26941
99
+ apisec_code_bolt/parsing/python/parser.py,sha256=lmReTOAuz_eVT080zyW0luiho1QdCohK8C74KAA0wpg,25138
100
+ apisec_code_bolt/parsing/python/path_resolver.py,sha256=kCAFguCWC5ufopZqlZ0ie2YioK92KH1e5_0AMvEutIw,19513
101
+ apisec_code_bolt/parsing/python/router_registry.py,sha256=1l4K2hphH0V46n-phha98MNpzCrNpsxVdo-ALLyq9CE,28853
102
+ apisec_code_bolt/parsing/python/type_resolver.py,sha256=QaK3yjim-06UcKaJzMJSEd7gv-5XmL33RG-U6eJGm1E,22784
103
+ apisec_code_bolt/parsing/python/visitors.py,sha256=Na0qL3tXsLK1fLVbWEyFGXkjA8hyRwoOnH3JlBsBkNQ,55321
104
+ apisec_code_bolt/query/__init__.py,sha256=BhkMtXSxWN0SB-QSjOC3ar5aADvaArJS0ONaWKNCNMY,48
105
+ apisec_code_bolt/query/ast_cache.py,sha256=BgtXGCIq6GrrvXh9ToCSW-cjgZeoNavyJZR8cdFBztk,5937
106
+ apisec_code_bolt/query/executor.py,sha256=Z-86dzNyBV6LMmHPKNPbhldJHVVywJW9_-_bCZccGtY,9758
107
+ apisec_code_bolt/query/handlers.py,sha256=aoHcpCi6-rHujYYqh9FXAxOtN55CrVIxTEOFzzGcFDI,28012
108
+ apisec_code_bolt-0.1.0.dist-info/METADATA,sha256=k_fdrjKOjyTrkeELbPTyQ4VPiGeNkI-8Suji1lUS8Yk,6006
109
+ apisec_code_bolt-0.1.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
110
+ apisec_code_bolt-0.1.0.dist-info/entry_points.txt,sha256=XAdDbgCamA24YUkX5Eu8YyG-7afdI4_6ixXU31GTqvI,67
111
+ apisec_code_bolt-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ apisec-code-bolt = apisec_code_bolt.cli.main:cli