ghcr-manager 0.0.4
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/CHANGELOG.md +44 -0
- package/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/cli/_args.d.ts +6 -0
- package/dist/cli/_args.js +38 -0
- package/dist/cli/_logger.d.ts +9 -0
- package/dist/cli/_logger.js +24 -0
- package/dist/cli/_scan-command.d.ts +1 -0
- package/dist/cli/_scan-command.js +32 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +30 -0
- package/dist/core/_types.d.ts +49 -0
- package/dist/core/_types.js +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/db/_manifest-reachability.d.ts +2 -0
- package/dist/db/_manifest-reachability.js +94 -0
- package/dist/db/_scan-writer.d.ts +18 -0
- package/dist/db/_scan-writer.js +176 -0
- package/dist/db/_schema.d.ts +2 -0
- package/dist/db/_schema.js +19 -0
- package/dist/db/_snapshot-repository.d.ts +24 -0
- package/dist/db/_snapshot-repository.js +98 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.js +9 -0
- package/dist/ingest/github/_manifest-client.d.ts +8 -0
- package/dist/ingest/github/_manifest-client.js +100 -0
- package/dist/ingest/github/_manifest-ingest.d.ts +3 -0
- package/dist/ingest/github/_manifest-ingest.js +104 -0
- package/dist/ingest/github/_package-version-page-load.d.ts +13 -0
- package/dist/ingest/github/_package-version-page-load.js +52 -0
- package/dist/ingest/github/_packages-client.d.ts +10 -0
- package/dist/ingest/github/_packages-client.js +59 -0
- package/dist/ingest/github/_paginated-ingest.d.ts +11 -0
- package/dist/ingest/github/_paginated-ingest.js +28 -0
- package/dist/ingest/github/_parallel-paginated-ingest.d.ts +11 -0
- package/dist/ingest/github/_parallel-paginated-ingest.js +49 -0
- package/dist/ingest/github/_registry-token-client.d.ts +6 -0
- package/dist/ingest/github/_registry-token-client.js +67 -0
- package/dist/ingest/github/_shared.d.ts +28 -0
- package/dist/ingest/github/_shared.js +102 -0
- package/dist/ingest/github/index.d.ts +7 -0
- package/dist/ingest/github/index.js +26 -0
- package/dist/tuning/index.d.ts +6 -0
- package/dist/tuning/index.js +6 -0
- package/package.json +59 -0
- package/resources/sql/schema/001_schema.sql +109 -0
- package/resources/sql/views/001_v_latest_scan_per_package.sql +27 -0
- package/resources/sql/views/002_v_missing_digests.sql +32 -0
- package/resources/sql/views/003_v_missing_digests_related_manifests.sql +78 -0
- package/resources/sql/views/004_v_manifests_related_manifests.sql +142 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
DROP VIEW IF EXISTS v_manifests_related_manifests;
|
|
2
|
+
|
|
3
|
+
CREATE VIEW v_manifests_related_manifests AS
|
|
4
|
+
WITH source_manifests AS (
|
|
5
|
+
SELECT
|
|
6
|
+
m.scan_id,
|
|
7
|
+
lsp.owner,
|
|
8
|
+
lsp.package_name,
|
|
9
|
+
m.digest AS source_manifest_digest,
|
|
10
|
+
m.media_type AS source_media_type
|
|
11
|
+
FROM manifests m
|
|
12
|
+
JOIN v_latest_scan_per_package lsp
|
|
13
|
+
ON lsp.scan_id = m.scan_id
|
|
14
|
+
),
|
|
15
|
+
manifest_seen_window AS (
|
|
16
|
+
SELECT
|
|
17
|
+
md.scan_id,
|
|
18
|
+
md.manifest_digest,
|
|
19
|
+
MIN(md.created_at) AS first_seen_at,
|
|
20
|
+
MAX(md.created_at) AS last_seen_at
|
|
21
|
+
FROM (
|
|
22
|
+
SELECT m.scan_id, m.digest AS manifest_digest, pv.created_at
|
|
23
|
+
FROM manifests m
|
|
24
|
+
JOIN package_versions pv
|
|
25
|
+
ON pv.scan_id = m.scan_id
|
|
26
|
+
AND pv.digest = m.digest
|
|
27
|
+
|
|
28
|
+
UNION
|
|
29
|
+
|
|
30
|
+
SELECT m.scan_id, m.digest AS manifest_digest, pv.created_at
|
|
31
|
+
FROM manifests m
|
|
32
|
+
JOIN package_versions pv
|
|
33
|
+
ON pv.scan_id = m.scan_id
|
|
34
|
+
JOIN manifest_reachability r
|
|
35
|
+
ON r.scan_id = m.scan_id
|
|
36
|
+
AND r.ancestor_digest = pv.digest
|
|
37
|
+
AND r.descendant_digest = m.digest
|
|
38
|
+
) md
|
|
39
|
+
GROUP BY
|
|
40
|
+
md.scan_id,
|
|
41
|
+
md.manifest_digest
|
|
42
|
+
),
|
|
43
|
+
related_manifests AS (
|
|
44
|
+
SELECT
|
|
45
|
+
sm.scan_id,
|
|
46
|
+
sm.owner,
|
|
47
|
+
sm.package_name,
|
|
48
|
+
sm.source_manifest_digest,
|
|
49
|
+
sm.source_media_type,
|
|
50
|
+
sm.source_manifest_digest AS related_manifest_digest,
|
|
51
|
+
sm.source_media_type AS related_media_type,
|
|
52
|
+
0 AS hops_manifest_to_related_manifest
|
|
53
|
+
FROM source_manifests sm
|
|
54
|
+
|
|
55
|
+
UNION
|
|
56
|
+
|
|
57
|
+
SELECT
|
|
58
|
+
sm.scan_id,
|
|
59
|
+
sm.owner,
|
|
60
|
+
sm.package_name,
|
|
61
|
+
sm.source_manifest_digest,
|
|
62
|
+
sm.source_media_type,
|
|
63
|
+
r.descendant_digest AS related_manifest_digest,
|
|
64
|
+
m.media_type AS related_media_type,
|
|
65
|
+
r.min_distance AS hops_manifest_to_related_manifest
|
|
66
|
+
FROM source_manifests sm
|
|
67
|
+
JOIN manifest_reachability r
|
|
68
|
+
ON r.scan_id = sm.scan_id
|
|
69
|
+
AND r.ancestor_digest = sm.source_manifest_digest
|
|
70
|
+
JOIN manifests m
|
|
71
|
+
ON m.scan_id = sm.scan_id
|
|
72
|
+
AND m.digest = r.descendant_digest
|
|
73
|
+
|
|
74
|
+
UNION
|
|
75
|
+
|
|
76
|
+
SELECT
|
|
77
|
+
sm.scan_id,
|
|
78
|
+
sm.owner,
|
|
79
|
+
sm.package_name,
|
|
80
|
+
sm.source_manifest_digest,
|
|
81
|
+
sm.source_media_type,
|
|
82
|
+
r.ancestor_digest AS related_manifest_digest,
|
|
83
|
+
m.media_type AS related_media_type,
|
|
84
|
+
r.min_distance AS hops_manifest_to_related_manifest
|
|
85
|
+
FROM source_manifests sm
|
|
86
|
+
JOIN manifest_reachability r
|
|
87
|
+
ON r.scan_id = sm.scan_id
|
|
88
|
+
AND r.descendant_digest = sm.source_manifest_digest
|
|
89
|
+
JOIN manifests m
|
|
90
|
+
ON m.scan_id = sm.scan_id
|
|
91
|
+
AND m.digest = r.ancestor_digest
|
|
92
|
+
),
|
|
93
|
+
closest_related_manifests AS (
|
|
94
|
+
SELECT
|
|
95
|
+
scan_id,
|
|
96
|
+
owner,
|
|
97
|
+
package_name,
|
|
98
|
+
source_manifest_digest,
|
|
99
|
+
source_media_type,
|
|
100
|
+
related_manifest_digest,
|
|
101
|
+
related_media_type,
|
|
102
|
+
MIN(hops_manifest_to_related_manifest) AS hops_manifest_to_related_manifest
|
|
103
|
+
FROM related_manifests
|
|
104
|
+
GROUP BY
|
|
105
|
+
scan_id,
|
|
106
|
+
owner,
|
|
107
|
+
package_name,
|
|
108
|
+
source_manifest_digest,
|
|
109
|
+
source_media_type,
|
|
110
|
+
related_manifest_digest,
|
|
111
|
+
related_media_type
|
|
112
|
+
)
|
|
113
|
+
SELECT
|
|
114
|
+
crm.scan_id,
|
|
115
|
+
crm.owner,
|
|
116
|
+
crm.package_name,
|
|
117
|
+
crm.source_manifest_digest,
|
|
118
|
+
crm.source_media_type,
|
|
119
|
+
ssw.first_seen_at AS source_first_seen_at,
|
|
120
|
+
ssw.last_seen_at AS source_last_seen_at,
|
|
121
|
+
st.tag AS source_tag,
|
|
122
|
+
st.version_id AS source_version_id,
|
|
123
|
+
crm.related_manifest_digest,
|
|
124
|
+
crm.related_media_type,
|
|
125
|
+
rsw.first_seen_at AS related_first_seen_at,
|
|
126
|
+
rsw.last_seen_at AS related_last_seen_at,
|
|
127
|
+
crm.hops_manifest_to_related_manifest,
|
|
128
|
+
rt.tag AS related_tag,
|
|
129
|
+
rt.version_id AS related_version_id
|
|
130
|
+
FROM closest_related_manifests crm
|
|
131
|
+
LEFT JOIN manifest_seen_window ssw
|
|
132
|
+
ON ssw.scan_id = crm.scan_id
|
|
133
|
+
AND ssw.manifest_digest = crm.source_manifest_digest
|
|
134
|
+
LEFT JOIN tags st
|
|
135
|
+
ON st.scan_id = crm.scan_id
|
|
136
|
+
AND st.digest = crm.source_manifest_digest
|
|
137
|
+
LEFT JOIN manifest_seen_window rsw
|
|
138
|
+
ON rsw.scan_id = crm.scan_id
|
|
139
|
+
AND rsw.manifest_digest = crm.related_manifest_digest
|
|
140
|
+
LEFT JOIN tags rt
|
|
141
|
+
ON rt.scan_id = crm.scan_id
|
|
142
|
+
AND rt.digest = crm.related_manifest_digest;
|