@appland/appmap 3.100.1 → 3.102.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/built/cmds/compare/loadFindings.js +1 -23
  3. package/built/cmds/compare/loadFindings.js.map +1 -1
  4. package/built/cmds/compare-report/ChangeReport.js +12 -19
  5. package/built/cmds/compare-report/ChangeReport.js.map +1 -1
  6. package/built/cmds/compare-report/MarkdownReport.js +11 -2
  7. package/built/cmds/compare-report/MarkdownReport.js.map +1 -1
  8. package/built/cmds/compare-report/Preprocessor.js +25 -5
  9. package/built/cmds/compare-report/Preprocessor.js.map +1 -1
  10. package/built/cmds/compare-report/ReportSection.js +94 -37
  11. package/built/cmds/compare-report/ReportSection.js.map +1 -1
  12. package/built/cmds/compare-report/helpers.js +106 -0
  13. package/built/cmds/compare-report/helpers.js.map +1 -0
  14. package/built/cmds/compare-report/normalizeAppMapId.js +15 -0
  15. package/built/cmds/compare-report/normalizeAppMapId.js.map +1 -0
  16. package/built/cmds/inventory/inventory.js +1 -15
  17. package/built/cmds/inventory/inventory.js.map +1 -1
  18. package/built/cmds/inventory-report/MarkdownReport.js +16 -56
  19. package/built/cmds/inventory-report/MarkdownReport.js.map +1 -1
  20. package/built/cmds/inventory-report/inventoryReport.js +10 -3
  21. package/built/cmds/inventory-report/inventoryReport.js.map +1 -1
  22. package/built/html/appmap.js +94 -94
  23. package/built/html/appmap.js.map +4 -4
  24. package/built/html/sequenceDiagram.js +94 -94
  25. package/built/html/sequenceDiagram.js.map +4 -4
  26. package/built/lib/loadAppMapConfig.js.map +1 -1
  27. package/package.json +1 -1
  28. package/resources/change-report/changed-appmaps/details.hbs +1 -1
  29. package/resources/change-report/changed-appmaps/heading.hbs +1 -1
  30. package/resources/change-report/failed-tests/details.hbs +1 -1
  31. package/resources/change-report/findings/details.hbs +15 -19
  32. package/resources/change-report/findings/heading.hbs +7 -9
  33. package/resources/change-report/new-appmaps/details.hbs +1 -1
  34. package/resources/change-report/new-appmaps/heading.hbs +2 -2
  35. package/resources/change-report/openapi-diff/details.hbs +1 -1
  36. package/resources/change-report/openapi-diff/heading.hbs +1 -1
  37. package/resources/change-report/removed-appmaps/details.hbs +1 -1
  38. package/resources/change-report/removed-appmaps/heading.hbs +3 -1
  39. package/resources/inventory-report/welcome/welcome.hbs +95 -60
  40. package/resources/inventory-report/default/inventory.hbs +0 -89
@@ -1 +1 @@
1
- {"version":3,"file":"loadAppMapConfig.js","sourceRoot":"","sources":["../../src/lib/loadAppMapConfig.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,qCAA+B;AAsChB,KAAK,UAAU,gBAAgB,CAC5C,QAAQ,GAAG,YAAY;;IAEvB,IAAI,gBAAoC,CAAC;IACzC,IAAI;QACF,gBAAgB,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACtD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO;KACR;IAED,MAAM,eAAe,GAAG,IAAA,cAAI,EAAC,gBAAgB,CAAQ,CAAC;IACtD,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,OAAO,eAAe,KAAK,QAAQ,CAAC;QAAE,OAAO;IAEvE,MAAM,YAAY,GAAG,eAA+B,CAAC;IACrD,YAAY,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,0CAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,YAAY,CAAC;AACtB,CAAC;AAjBD,mCAiBC;AAED,SAAS,YAAY,CAAC,GAAoC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;KAC3B;AACH,CAAC"}
1
+ {"version":3,"file":"loadAppMapConfig.js","sourceRoot":"","sources":["../../src/lib/loadAppMapConfig.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,qCAA+B;AA2ChB,KAAK,UAAU,gBAAgB,CAC5C,QAAQ,GAAG,YAAY;;IAEvB,IAAI,gBAAoC,CAAC;IACzC,IAAI;QACF,gBAAgB,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACtD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO;KACR;IAED,MAAM,eAAe,GAAG,IAAA,cAAI,EAAC,gBAAgB,CAAQ,CAAC;IACtD,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,OAAO,eAAe,KAAK,QAAQ,CAAC;QAAE,OAAO;IAEvE,MAAM,YAAY,GAAG,eAA+B,CAAC;IACrD,YAAY,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,0CAAE,MAAM,CAAC,CAAC;IAE5C,OAAO,YAAY,CAAC;AACtB,CAAC;AAjBD,mCAiBC;AAED,SAAS,YAAY,CAAC,GAAoC;IACxD,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAClC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;KAC3B;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appland/appmap",
3
- "version": "3.100.1",
3
+ "version": "3.102.0",
4
4
  "description": "",
5
5
  "bin": "built/cli.js",
6
6
  "engines": {
@@ -19,7 +19,7 @@ Review changes
19
19
  {{/each}}
20
20
 
21
21
  {{#if pruned}}
22
- Because there are so many changed AppMaps, some of them are not listed in this report.
22
+ Because there are many changed AppMaps, some of them are not listed in this report.
23
23
  {{/if}}
24
24
  </details>
25
25
  {{/if}}
@@ -1,6 +1,6 @@
1
1
  | [Changed AppMaps](#changed-appmaps) |
2
2
  {{~#unless (length changedAppMaps) }}
3
- :white_check_mark: No changes
3
+ :zero: No changes
4
4
  {{~else}}
5
5
  :twisted_rightwards_arrows: {{length changedAppMaps}} changes
6
6
  {{~/unless}}
@@ -52,6 +52,6 @@ The error occurred at [{{failureLocation}}]({{ source_url failureLocation }}):
52
52
 
53
53
  {{/each}}
54
54
  {{#if pruned}}
55
- Because there are so many failed tests, some of them are not listed in this report.
55
+ Because there are many failed tests, some of them are not listed in this report.
56
56
  {{/if}}
57
57
  {{/if}}
@@ -51,30 +51,26 @@
51
51
 
52
52
  </details>
53
53
  {{/inline}}
54
- {{#with findingDiff}}
55
- {{#if (length newFindings resolvedFindings)}}
56
- <h2 id="findings">Findings</h2>
54
+ {{#if (length findingDiff.newFindings findingDiff.resolvedFindings)}}
55
+ <h2 id="{{ metadata.anchor }}">{{ metadata.title }}</h2>
56
+ {{#if (length findingDiff.newFindings) }}
57
57
 
58
- {{#with newFindings}}
59
- ### :beetle: New findings ({{ length this}})
58
+ ### {{metadata.emoji}} New problems detected ({{ length findingDiff.newFindings }})
60
59
 
61
- {{#each this}}
60
+ {{#each findingDiff.newFindings}}
62
61
  {{> finding}}
63
- {{/each}}
64
-
65
- {{/with}}
62
+ {{/each}}
63
+ {{/if}}
64
+ {{#if (length findingDiff.resolvedFindings) }}
66
65
 
67
- {{#with resolvedFindings}}
68
- ### :tada: Resolved findings ({{ length this}})
66
+ ### :tada: Problems resolved ({{ length findingDiff.resolvedFindings}})
69
67
 
70
- {{#each this}}
68
+ {{#each findingDiff.resolvedFindings}}
71
69
  {{> finding}}
72
- {{/each}}
73
-
74
- {{/with}}
70
+ {{/each}}
71
+ {{/if}}
72
+ {{#if findingDiff.pruned}}
75
73
 
76
- {{#if pruned}}
77
- Because there are so many new and resolved findings, some of them are not listed in this report.
78
- {{/if}}
74
+ Because there are many new and resolved {{ metadata.name }}, some of them are not listed in this report.
79
75
  {{/if}}
80
- {{/with}}
76
+ {{/if}}
@@ -1,13 +1,11 @@
1
- | [Findings](#findings) |
2
- {{~#with findingDiff}}
3
- {{~#unless (length newFindings resolvedFindings) }}
4
- :white_check_mark: None
1
+ | [{{ metadata.title }}](#{{ metadata.anchor }}) |
2
+ {{~#unless (length findingDiff.newFindings findingDiff.resolvedFindings) }}
3
+ :white_check_mark: None detected
5
4
  {{~/unless}}
6
- {{~#if (length newFindings) }}
7
- :beetle: {{length newFindings}} new
5
+ {{~#if (length findingDiff.newFindings) }}
6
+ {{ metadata.emoji }} {{length findingDiff.newFindings}} new
8
7
  {{~/if}}
9
- {{~#if (length resolvedFindings) }}
10
- :tada: {{length resolvedFindings}} resolved
8
+ {{~#if (length findingDiff.resolvedFindings) }}
9
+ :tada: {{length findingDiff.resolvedFindings}} resolved
11
10
  {{~/if}}
12
- {{~/with}}
13
11
  |
@@ -6,6 +6,6 @@
6
6
 
7
7
  {{/each}}
8
8
  {{#if pruned}}
9
- Because there are so many new AppMaps, some of them are not listed in this report.
9
+ Because there are many new AppMaps, some of them are not listed in this report.
10
10
  {{/if}}
11
11
  {{/if}}
@@ -1,3 +1,3 @@
1
1
  | [New AppMaps](#new-appmaps) |
2
- {{~#unless newAppMaps.length }} :white_check_mark: None {{else}} :star: {{newAppMaps.length}} new {{/unless~}}
3
- |
2
+ {{~#with (group_appmaps_by_recorder_name newAppMaps) }} :star: {{#each @this}}{{#unless @first }}, {{/unless}}{{ count }} new {{ recorderName }}{{#if isTest}} {{ pluralize count 'test' }}{{/if}}{{/each}} {{else}} :zero: No new AppMaps {{/with~}}
3
+ |
@@ -37,7 +37,7 @@
37
37
  {{/if}}
38
38
 
39
39
  {{#if pruned}}
40
- Because there are so many OpenAPI changes, some of them are not listed in this report,
40
+ Because there are many OpenAPI changes, some of them are not listed in this report,
41
41
  and the full diff has not been printed either.
42
42
  {{else}}
43
43
  <details>
@@ -3,6 +3,6 @@
3
3
  {{~#if differenceCount }}
4
4
  {{~#if breakingDifferenceCount }} 🚧 {{breakingDifferenceCount}} breaking{{~/if}}
5
5
  {{~#if nonBreakingDifferenceCount }}{{#if breakingDifferenceCount }},{{~/if}} :wrench: {{nonBreakingDifferenceCount}} non-breaking{{/if~}}
6
- {{~else}} :white_check_mark: No API changes
6
+ {{~else}} :zero: No API changes
7
7
  {{~/if}} |
8
8
  {{~/with}}
@@ -6,6 +6,6 @@
6
6
 
7
7
  {{/each}}
8
8
  {{#if pruned}}
9
- Because there are so many removed AppMaps, some of them are not listed in this report.
9
+ Because there are many removed AppMaps, some of them are not listed in this report.
10
10
  {{/if}}
11
11
  {{/if}}
@@ -1,3 +1,5 @@
1
1
  {{#if removedAppMaps.length ~}}
2
- | [Removed AppMaps](#removed-appmaps) | :heavy_multiplication_x: {{removedAppMaps.length}} removed |
2
+ | [Removed AppMaps](#removed-appmaps) |
3
+ {{~#with (group_appmaps_by_recorder_name removedAppMaps) }} :heavy_multiplication_x: {{#each @this}}{{#unless @first }}, {{/unless}}{{ count }} removed {{ recorderName }}{{#if isTest}} {{ pluralize count 'test' }}{{/if}}{{/each}} {{/with~}}
4
+ |
3
5
  {{~/if}}
@@ -1,59 +1,82 @@
1
- ## Welcome to AppMap!
1
+ ## AppMap configuration report
2
2
 
3
- This is a report of the AppMap data in your project. Let's start with a look at how the
4
- AppMap data is created in this project. In CI, AppMaps are generally created by recording
5
- test cases. Here's how the AppMaps in this project were created:
6
-
7
- | Recorder | Number of AppMaps |
8
- | --- | --- |
9
- {{#each appmapCountByRecorderName}}
10
- | {{@key}} | {{@this}} |
11
- {{/each}}
3
+ Success! Your project has been successfully configured to record AppMaps when
4
+ you run your tests.
12
5
 
13
- Continue reading for information about:
6
+ > **[Continue with AppMap Setup >>](https://getappmap.com/github/configuration_report)**
14
7
 
15
- - [Runtime analysis](#runtime-analysis)
16
- - [REST API analysis](#rest-api-analysis)
17
- - [SQL profile](#sql-profile)
8
+ <hr/>
18
9
 
19
- #### Runtime Analysis
10
+ <details>
11
+ <summary>
12
+ View details
13
+ </summary>
20
14
 
21
- AppMap includes a runtime analysis capability that analyzes the AppMap data for security vulnerabilities,
22
- performance problems, and code anti-patterns. On each pull request, you'll get a report of
23
- the new and resolved issues for the repo.
15
+ <h3><a id="data-sources">AppMap data sources</a></h3>
24
16
 
25
- {{#if (length findingCountByImpactDomain) }}
26
- AppMap has performed a preliminary analysis of this repo, and detected some problems. Here's a
27
- summary:
17
+ In GitHub Actions and other CI systems, AppMaps are created by recording
18
+ test cases. Here's how the AppMaps in this project were created:
28
19
 
29
- | Impact Domain | Number of Problems |
20
+ {{#if (eq (length appmapCountByRecorderName) 1) }}
21
+ | Number of AppMaps | Type of recording |
30
22
  | --- | --- |
31
- {{#each findingCountByImpactDomain}}
32
- | {{@key}} | {{@this}} |
33
- {{/each}}
34
-
35
- {{~else~}}
36
- No security vulnerabilities or performance problems were detected in this repo. Keep up the good work :slightly_smiling_face:
23
+ {{#each appmapCountByRecorderName}}
24
+ | {{@this}} | {{@key}} |
25
+ {{/each}}
26
+ {{else}}
27
+ ```mermaid
28
+ pie showData
29
+ title Sources of AppMap data in this project
30
+ {{#each appmapCountByRecorderName}}
31
+ "{{@key}}" : {{@this}}
32
+ {{/each}}
33
+ ```
37
34
  {{/if}}
38
35
 
39
- AppMap runtime analysis is configurable. [Learn more about configuring AppMap runtime analysis](https://appmap.io/docs/guides/configuring-analysis.html).
36
+ <h3><a id="code-profile">Code profile</a></h3>
40
37
 
41
- #### REST API analysis
38
+ Your _appmap.yml_ configuration file specifies all the code that you want AppMap to instrument and record.
39
+ By default, sub-modules of any requested code are recorded as well. In this project, the packages specified
40
+ in _appmap.yml_ are:
42
41
 
43
- When you record AppMaps that include HTTP server requests, AppMap can automatically generate OpenAPI definitions.
42
+ ```yaml
43
+ {{{ format_as_yaml appmapConfig.packages }}}```
44
44
 
45
- {{#if (length appmapCountByHTTPServerRequestCount) }}
45
+ By applying this configuration to your {{ appmapConfig.language }} project, AppMap has recorded the
46
+ following packages and modules:
46
47
 
47
- This project has AppMaps that contain HTTP server requests. Here's a profile of the AppMaps that
48
- include HTTP server requests:
48
+ {{#each (packages_matching_configuration packages appmapConfig.packages) }}`{{ @this }}` {{/each}}
49
49
 
50
- | Number of HTTP server requests | Number of AppMaps |
51
- | --- | --- |
52
- | None | {{ coalesce appmapCountByHTTPServerRequestCount.[0] 'No AppMaps' }} |
53
- | Between 1 and 5 | {{ sum_values_by_key_range appmapCountByHTTPServerRequestCount 1 5 }} |
54
- | More than 5 | {{ sum_values_by_key_range appmapCountByHTTPServerRequestCount 5 }} |
50
+ <h3><a id="ws-api-profile">Web service API profile</a></h3>
55
51
 
56
- At a high level, here are the REST resources that are provided by this project:
52
+ When you record AppMaps that include HTTP server requests, AppMap automatically generates OpenAPI definitions
53
+ based on the observed data.
54
+
55
+ {{#if (length appmapCountByHTTPServerRequestCount) }}
56
+
57
+ **{{ format_as_percentage
58
+ (divide
59
+ (subtract
60
+ (sum (values appmapCountByRecorderName))
61
+ (coalesce appmapCountByHTTPServerRequestCount.[0] 0)
62
+ )
63
+ (sum (values appmapCountByRecorderName))
64
+ )
65
+ }}** of the AppMaps in this project contain **at least one** HTTP server request.
66
+
67
+
68
+ **{{ format_as_percentage
69
+ (divide
70
+ (subtract
71
+ (sum (values appmapCountByRecorderName))
72
+ (coalesce appmapCountByHTTPServerRequestCount.[0] 0)
73
+ (coalesce appmapCountByHTTPServerRequestCount.[1] 0)
74
+ )
75
+ (sum (values appmapCountByRecorderName))
76
+ )
77
+ }}** of the AppMaps in this project contain **more than one** HTTP server request.
78
+
79
+ Here's **a summary of the web service routes** that are provided by this project:
57
80
 
58
81
  {{#each routeCountByResource}}`{{@key}}` {{/each}}
59
82
 
@@ -69,47 +92,59 @@ As you change your code and tests, AppMap will automatically update the OpenAPI
69
92
  You'll see a summary of the REST API changes in each pull request.
70
93
 
71
94
  {{~else~}}
72
- This project doesn't have any AppMaps that contain HTTP server requests. If this is unexpected,
73
- you can add some test cases that exercise the HTTP server. The more of these type of tests you add,
95
+ This project doesn't have any AppMaps that contain HTTP server requests. If your app provides
96
+ web service APIs, and you don't see any HTTP server requests here, you can add some test cases that
97
+ exercise the HTTP server. The more of these type of tests you add,
74
98
  the better the AppMap data will be for generating OpenAPI definitions and comparing the API
75
99
  changes in each pull request.
76
100
  {{/if}}
77
101
 
78
- #### SQL profile
102
+ <h3><a id="sql-profile">SQL profile</a></h3>
79
103
 
80
104
  When your code makes a SQL query, AppMap records the SQL query in detail. It even parses the queries
81
105
  to figure out which tables your app is using, and how it's using them.
82
106
 
83
107
  {{#if (length appmapCountBySQLQueryCount) }}
84
108
 
85
- Here's a summary of how many SQL queries are in the AppMaps of this project:
86
109
 
87
- | SQL queries | Number of AppMaps |
88
- | --- | --- |
89
- | None | {{ coalesce appmapCountBySQLQueryCount.[0] 'No AppMaps' }} |
90
- | Between 1 and 5 | {{ sum_values_by_key_range appmapCountBySQLQueryCount 1 5 }} |
91
- | More than 5 | {{ sum_values_by_key_range appmapCountBySQLQueryCount 5 }} |
110
+ **{{ format_as_percentage
111
+ (divide
112
+ (subtract
113
+ (sum (values appmapCountByRecorderName))
114
+ (coalesce appmapCountBySQLQueryCount.[0] 0)
115
+ )
116
+ (sum (values appmapCountByRecorderName))
117
+ )
118
+ }}** of the AppMaps in this project contain **at least one** SQL query.
119
+
120
+
121
+ **{{ format_as_percentage
122
+ (divide
123
+ (subtract
124
+ (sum (values appmapCountByRecorderName))
125
+ (coalesce appmapCountBySQLQueryCount.[0] 0)
126
+ (coalesce appmapCountBySQLQueryCount.[1] 0)
127
+ )
128
+ (sum (values appmapCountByRecorderName))
129
+ )
130
+ }}** of the AppMaps in this project contain **more than one** SQL query.
92
131
 
93
132
  {{#if (length sqlTables) }}
94
133
 
95
- And here are all the SQL tables that are used by this project:
134
+ Here are the SQL tables that are present in the observed queries:
96
135
 
97
136
  {{#each sqlTables}}`{{@this}}` {{/each}}
98
137
  {{/if}}
99
138
 
100
139
  {{~else~}}
101
- This project doesn't have any AppMaps of SQL queries. If this is unexpected,
102
- you can add some test cases that interact with the database. The more of these type of tests you add,
140
+ This project doesn't have any AppMaps of SQL queries. If your app uses a database,
141
+ and you don't see SQL queries here, you can add some test cases that interact with the database. The more of these type of tests you add,
103
142
  the better the AppMap data will be for analyzing the SQL changes in each pull request.
104
143
  {{/if}}
105
144
 
106
- <!--
107
- ## External services profile
108
-
109
- TODO
110
-
111
- ## Code organization
145
+ ### Learn more
112
146
 
113
- The app contains `{{ length packages }}` code packages.
114
- -->
147
+ To learn more about AppMap, visit
148
+ [appmap.io/docs](https://appmap.io/docs).
115
149
 
150
+ </details>
@@ -1,89 +0,0 @@
1
- ## AppMap data profile
2
-
3
- #### How is AppMap data created in this project?
4
-
5
- | Recorder | Number of AppMaps |
6
- | --- | --- |
7
- {{#each appmapCountByRecorderName}}
8
- | {{@key}} | {{@this}} |
9
- {{/each}}
10
-
11
-
12
- ## Code quality
13
-
14
- #### Findings
15
-
16
- | Impact Domain | Number of Findings |
17
- | --- | --- |
18
- {{#each findingCountByImpactDomain}}
19
- | {{@key}} | {{@this}} |
20
- {{/each}}
21
-
22
-
23
- ## Server API profile
24
-
25
- {{#if (length appmapCountByHTTPServerRequestCount) }}
26
-
27
- #### How many AppMaps have HTTP server requests, and how many do they have?
28
-
29
- | Number of HTTP server requests | Number of AppMaps |
30
- | --- | --- |
31
- | None | {{ coalesce appmapCountByHTTPServerRequestCount.[0] 'No AppMaps' }} |
32
- | Between 1 and 5 | {{ sum_values_by_key_range appmapCountByHTTPServerRequestCount 1 5 }} |
33
- | More than 5 | {{ sum_values_by_key_range appmapCountByHTTPServerRequestCount 5 }} |
34
-
35
- #### What are the HTTP server routes of the project?
36
-
37
- | Route prefix | Number of routes |
38
- | --- | --- |
39
- {{#each routeCountByResource}}
40
- | {{@key}} | {{@this}} |
41
- {{/each}}
42
-
43
- #### What HTTP content types are served by the project?
44
-
45
- | Response Content Type | Number of Routes |
46
- | --- | --- |
47
- {{#each routeCountByContentType}}
48
- | {{@key}} | {{@this}} |
49
- {{/each}}
50
-
51
- {{~else~}}
52
- This project doesn't have any AppMaps of HTTP server requests.
53
- {{/if}}
54
-
55
- ## SQL profile
56
-
57
- #### How many AppMaps have SQL queries, and how many do they have?
58
-
59
- {{#if (length appmapCountBySQLQueryCount) }}
60
- | SQL queries | Number of AppMaps |
61
- | --- | --- |
62
- | None | {{ coalesce appmapCountBySQLQueryCount.[0] 'No AppMaps' }} |
63
- | Between 1 and 5 | {{ sum_values_by_key_range appmapCountBySQLQueryCount 1 5 }} |
64
- | More than 5 | {{ sum_values_by_key_range appmapCountBySQLQueryCount 5 }} |
65
-
66
- #### What SQL tables are used by this project?
67
-
68
- {{#if (length sqlTables) }}
69
- | Table name |
70
- | --- |
71
- {{#each sqlTables}}
72
- | {{@this}} |
73
- {{/each}}
74
- {{/if}}
75
-
76
- {{~else~}}
77
- This project doesn't have any AppMaps of SQL queries.
78
- {{/if}}
79
-
80
- <!--
81
- ## External services profile
82
-
83
- TODO
84
- -->
85
-
86
- ## Code organization
87
-
88
- The app contains `{{ length packages }}` code packages.
89
-