Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit fd8038b

Browse files
committed
Bundle Analysis: expose bundle report info to GQL
1 parent 160f0bd commit fd8038b

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed

graphql_api/types/bundle_analysis/base.graphql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ type BundleAsset {
5858
routes: [String!]
5959
}
6060

61+
type BundleInfo {
62+
version: String!
63+
plugin_name: String!
64+
plugin_version: String!
65+
built_at: String!
66+
duration: Int!
67+
bundler_name: String!
68+
bundler_version: String!
69+
}
70+
6171
type BundleReport {
6272
name: String!
6373
moduleCount: Int!
@@ -82,6 +92,7 @@ type BundleReport {
8292
last: Int
8393
before: String
8494
): AssetConnection
95+
info: BundleInfo!
8596
}
8697

8798
type BundleAnalysisMeasurements{

graphql_api/types/bundle_analysis/base.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
BundleData,
1818
BundleLoadTime,
1919
BundleReport,
20+
BundleReportInfo,
2021
BundleSize,
2122
ModuleReport,
2223
)
@@ -28,6 +29,7 @@
2829
bundle_module_bindable = ObjectType("BundleModule")
2930
bundle_asset_bindable = ObjectType("BundleAsset")
3031
bundle_report_bindable = ObjectType("BundleReport")
32+
bundle_info_bindable = ObjectType("BundleInfo")
3133

3234

3335
def _find_index_by_cursor(assets: List, cursor: str) -> int:
@@ -372,3 +374,59 @@ def resolve_bundle_report_is_cached(
372374
bundle_report: BundleReport, info: GraphQLResolveInfo
373375
) -> bool:
374376
return bundle_report.is_cached
377+
378+
379+
@bundle_report_bindable.field("info")
380+
def resolve_bundle_report_info(
381+
bundle_report: BundleReport, info: GraphQLResolveInfo
382+
) -> BundleReportInfo:
383+
return BundleReportInfo(bundle_report.info)
384+
385+
386+
@bundle_info_bindable.field("version")
387+
def resolve_bundle_info_version(
388+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
389+
) -> str:
390+
return bundle_info.version
391+
392+
393+
@bundle_info_bindable.field("plugin_name")
394+
def resolve_bundle_info_plugin_name(
395+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
396+
) -> str:
397+
return bundle_info.plugin_name
398+
399+
400+
@bundle_info_bindable.field("plugin_version")
401+
def resolve_bundle_info_plugin_version(
402+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
403+
) -> str:
404+
return bundle_info.plugin_version
405+
406+
407+
@bundle_info_bindable.field("built_at")
408+
def resolve_bundle_info_built_at(
409+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
410+
) -> str:
411+
return bundle_info.built_at
412+
413+
414+
@bundle_info_bindable.field("duration")
415+
def resolve_bundle_info_duration(
416+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
417+
) -> int:
418+
return bundle_info.duration
419+
420+
421+
@bundle_info_bindable.field("bundler_name")
422+
def resolve_bundle_info_bundler_name(
423+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
424+
) -> str:
425+
return bundle_info.bundler_name
426+
427+
428+
@bundle_info_bindable.field("bundler_version")
429+
def resolve_bundle_info_bundler_version(
430+
bundle_info: BundleReportInfo, info: GraphQLResolveInfo
431+
) -> str:
432+
return bundle_info.bundler_version

services/bundle_analysis.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,44 @@ def module_count(self) -> int:
298298
def is_cached(self) -> bool:
299299
return self.report.is_cached()
300300

301+
@cached_property
302+
def info(self) -> dict:
303+
return self.report.info()
304+
305+
306+
@dataclass
307+
class BundleReportInfo(object):
308+
def __init__(self, info: dict) -> None:
309+
self.info = info
310+
311+
@cached_property
312+
def version(self) -> str:
313+
return self.info.get("version", "unknown")
314+
315+
@cached_property
316+
def plugin_name(self) -> str:
317+
return self.info.get("plugin_name", "unknown")
318+
319+
@cached_property
320+
def plugin_version(self) -> str:
321+
return self.info.get("plugin_version", "unknown")
322+
323+
@cached_property
324+
def built_at(self) -> str:
325+
return str(datetime.fromtimestamp(self.info.get("built_at", 0) / 1000))
326+
327+
@cached_property
328+
def duration(self) -> int:
329+
return self.info.get("duration", -1)
330+
331+
@cached_property
332+
def bundler_name(self) -> str:
333+
return self.info.get("bundler_name", "unknown")
334+
335+
@cached_property
336+
def bundler_version(self) -> str:
337+
return self.info.get("bundler_version", "unknown")
338+
301339

302340
@dataclass
303341
class BundleAnalysisReport(object):

0 commit comments

Comments
 (0)