construct-hub 0.4.303 → 0.4.304
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/.jsii +35 -17
- package/API.md +14 -0
- package/lib/backend/ingestion/index.d.ts +6 -0
- package/lib/backend/ingestion/index.js +7 -2
- package/lib/backend/ingestion/re-ingest.lambda.bundle/index.js +46 -32
- package/lib/backend/ingestion/re-ingest.lambda.bundle/index.js.map +4 -4
- package/lib/backend/ingestion/re-ingest.lambda.js +12 -2
- package/lib/backend/shared/time.lambda-shared.d.ts +1 -0
- package/lib/backend/shared/time.lambda-shared.js +5 -0
- package/lib/construct-hub.d.ts +6 -0
- package/lib/construct-hub.js +3 -2
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +1 -1
@@ -2111,10 +2111,10 @@ var require_local_reservoir = __commonJS({
|
|
2111
2111
|
}
|
2112
2112
|
};
|
2113
2113
|
LocalReservoir.prototype.isSampled = function isSampled() {
|
2114
|
-
var
|
2115
|
-
if (
|
2114
|
+
var now2 = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
2115
|
+
if (now2 !== this.thisSecond) {
|
2116
2116
|
this.usedThisSecond = 0;
|
2117
|
-
this.thisSecond =
|
2117
|
+
this.thisSecond = now2;
|
2118
2118
|
}
|
2119
2119
|
if (this.usedThisSecond >= this.fixedTarget) {
|
2120
2120
|
return Math.random() < this.fallbackRate;
|
@@ -2288,9 +2288,9 @@ var require_reservoir = __commonJS({
|
|
2288
2288
|
this.reportInterval = 1;
|
2289
2289
|
this.reportElapsed = 0;
|
2290
2290
|
};
|
2291
|
-
Reservoir.prototype.borrowOrTake = function borrowOrTake(
|
2292
|
-
this.adjustThisSec(
|
2293
|
-
if (this.quota >= 0 && this.TTL >=
|
2291
|
+
Reservoir.prototype.borrowOrTake = function borrowOrTake(now2, canBorrow) {
|
2292
|
+
this.adjustThisSec(now2);
|
2293
|
+
if (this.quota >= 0 && this.TTL >= now2) {
|
2294
2294
|
if (this.takenThisSec >= this.quota) {
|
2295
2295
|
return false;
|
2296
2296
|
}
|
@@ -2305,11 +2305,11 @@ var require_reservoir = __commonJS({
|
|
2305
2305
|
return "borrow";
|
2306
2306
|
}
|
2307
2307
|
};
|
2308
|
-
Reservoir.prototype.adjustThisSec = function adjustThisSec(
|
2309
|
-
if (
|
2308
|
+
Reservoir.prototype.adjustThisSec = function adjustThisSec(now2) {
|
2309
|
+
if (now2 !== this.thisSec) {
|
2310
2310
|
this.takenThisSec = 0;
|
2311
2311
|
this.borrowedThisSec = 0;
|
2312
|
-
this.thisSec =
|
2312
|
+
this.thisSec = now2;
|
2313
2313
|
}
|
2314
2314
|
};
|
2315
2315
|
Reservoir.prototype.loadNewQuota = function loadNewQuota(quota, TTL, interval) {
|
@@ -2518,7 +2518,7 @@ var require_service_connector = __commonJS({
|
|
2518
2518
|
};
|
2519
2519
|
var constructStatisticsDocs = function constructStatisticsDocs2(rules) {
|
2520
2520
|
var documents = [];
|
2521
|
-
var
|
2521
|
+
var now2 = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
2522
2522
|
rules.forEach(function(rule) {
|
2523
2523
|
var statistics = rule.snapshotStatistics();
|
2524
2524
|
var doc = {
|
@@ -2527,7 +2527,7 @@ var require_service_connector = __commonJS({
|
|
2527
2527
|
"RequestCount": statistics.requestCount,
|
2528
2528
|
"BorrowCount": statistics.borrowCount,
|
2529
2529
|
"SampledCount": statistics.sampledCount,
|
2530
|
-
"Timestamp":
|
2530
|
+
"Timestamp": now2
|
2531
2531
|
};
|
2532
2532
|
documents.push(doc);
|
2533
2533
|
});
|
@@ -2598,8 +2598,8 @@ var require_rule_cache = __commonJS({
|
|
2598
2598
|
* @module RuleCache
|
2599
2599
|
* @function getMatchedRule
|
2600
2600
|
*/
|
2601
|
-
getMatchedRule: function getMatchedRule(sampleRequest,
|
2602
|
-
if (isExpired(
|
2601
|
+
getMatchedRule: function getMatchedRule(sampleRequest, now2) {
|
2602
|
+
if (isExpired(now2)) {
|
2603
2603
|
return null;
|
2604
2604
|
}
|
2605
2605
|
var matchedRule;
|
@@ -2661,18 +2661,18 @@ var require_rule_cache = __commonJS({
|
|
2661
2661
|
getRules: function getRules() {
|
2662
2662
|
return this.rules;
|
2663
2663
|
},
|
2664
|
-
timestamp: function timestamp(
|
2665
|
-
this.lastUpdated =
|
2664
|
+
timestamp: function timestamp(now2) {
|
2665
|
+
this.lastUpdated = now2;
|
2666
2666
|
},
|
2667
2667
|
getLastUpdated: function getLastUpdated() {
|
2668
2668
|
return this.lastUpdated;
|
2669
2669
|
}
|
2670
2670
|
};
|
2671
|
-
var isExpired = function isExpired2(
|
2671
|
+
var isExpired = function isExpired2(now2) {
|
2672
2672
|
if (!RuleCache.getLastUpdated()) {
|
2673
2673
|
return true;
|
2674
2674
|
}
|
2675
|
-
return
|
2675
|
+
return now2 > RuleCache.getLastUpdated() + TTL;
|
2676
2676
|
};
|
2677
2677
|
module2.exports = RuleCache;
|
2678
2678
|
}
|
@@ -2713,13 +2713,13 @@ var require_rule_poller = __commonJS({
|
|
2713
2713
|
}
|
2714
2714
|
};
|
2715
2715
|
var refreshCache = function refreshCache2() {
|
2716
|
-
var
|
2716
|
+
var now2 = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
2717
2717
|
ServiceConnector.fetchSamplingRules(function(err, newRules) {
|
2718
2718
|
if (err) {
|
2719
2719
|
logger.getLogger().warn("Failed to retrieve sampling rules from X-Ray service:", err);
|
2720
2720
|
} else if (newRules.length !== 0) {
|
2721
2721
|
ruleCache.loadRules(newRules);
|
2722
|
-
ruleCache.timestamp(
|
2722
|
+
ruleCache.timestamp(now2);
|
2723
2723
|
logger.getLogger().info("Successfully refreshed centralized sampling rule cache.");
|
2724
2724
|
}
|
2725
2725
|
});
|
@@ -2815,11 +2815,11 @@ var require_default_sampler = __commonJS({
|
|
2815
2815
|
if (!sampleRequest.serviceType) {
|
2816
2816
|
sampleRequest.serviceType = SegmentUtils.origin;
|
2817
2817
|
}
|
2818
|
-
var
|
2819
|
-
var matchedRule = this.ruleCache.getMatchedRule(sampleRequest,
|
2818
|
+
var now2 = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
2819
|
+
var matchedRule = this.ruleCache.getMatchedRule(sampleRequest, now2);
|
2820
2820
|
if (matchedRule) {
|
2821
2821
|
logger.getLogger().debug(util.format("Rule %s is matched.", matchedRule.getName()));
|
2822
|
-
return processMatchedRule(matchedRule,
|
2822
|
+
return processMatchedRule(matchedRule, now2);
|
2823
2823
|
} else {
|
2824
2824
|
logger.getLogger().info("No effective centralized sampling rule match. Fallback to local rules.");
|
2825
2825
|
return this.localSampler.shouldSample(sampleRequest);
|
@@ -2849,11 +2849,11 @@ var require_default_sampler = __commonJS({
|
|
2849
2849
|
}
|
2850
2850
|
}
|
2851
2851
|
};
|
2852
|
-
var processMatchedRule = function processMatchedRule2(rule,
|
2852
|
+
var processMatchedRule = function processMatchedRule2(rule, now2) {
|
2853
2853
|
rule.incrementRequestCount();
|
2854
2854
|
var reservoir = rule.getReservoir();
|
2855
2855
|
var sample = true;
|
2856
|
-
var decision = reservoir.borrowOrTake(
|
2856
|
+
var decision = reservoir.borrowOrTake(now2, rule.canBorrow());
|
2857
2857
|
if (decision === "borrow") {
|
2858
2858
|
rule.incrementBorrowCount();
|
2859
2859
|
} else if (decision === "take") {
|
@@ -5919,7 +5919,7 @@ var require_lru_cache = __commonJS({
|
|
5919
5919
|
maxAge = maxAge || this[MAX_AGE];
|
5920
5920
|
if (maxAge && typeof maxAge !== "number")
|
5921
5921
|
throw new TypeError("maxAge must be a number");
|
5922
|
-
const
|
5922
|
+
const now2 = maxAge ? Date.now() : 0;
|
5923
5923
|
const len = this[LENGTH_CALCULATOR](value, key);
|
5924
5924
|
if (this[CACHE].has(key)) {
|
5925
5925
|
if (len > this[MAX]) {
|
@@ -5932,7 +5932,7 @@ var require_lru_cache = __commonJS({
|
|
5932
5932
|
if (!this[NO_DISPOSE_ON_SET])
|
5933
5933
|
this[DISPOSE](key, item.value);
|
5934
5934
|
}
|
5935
|
-
item.now =
|
5935
|
+
item.now = now2;
|
5936
5936
|
item.maxAge = maxAge;
|
5937
5937
|
item.value = value;
|
5938
5938
|
this[LENGTH] += len - item.length;
|
@@ -5941,7 +5941,7 @@ var require_lru_cache = __commonJS({
|
|
5941
5941
|
trim(this);
|
5942
5942
|
return true;
|
5943
5943
|
}
|
5944
|
-
const hit = new Entry(key, value, len,
|
5944
|
+
const hit = new Entry(key, value, len, now2, maxAge);
|
5945
5945
|
if (hit.length > this[MAX]) {
|
5946
5946
|
if (this[DISPOSE])
|
5947
5947
|
this[DISPOSE](key, value);
|
@@ -5977,14 +5977,14 @@ var require_lru_cache = __commonJS({
|
|
5977
5977
|
}
|
5978
5978
|
load(arr) {
|
5979
5979
|
this.reset();
|
5980
|
-
const
|
5980
|
+
const now2 = Date.now();
|
5981
5981
|
for (let l = arr.length - 1; l >= 0; l--) {
|
5982
5982
|
const hit = arr[l];
|
5983
5983
|
const expiresAt = hit.e || 0;
|
5984
5984
|
if (expiresAt === 0)
|
5985
5985
|
this.set(hit.k, hit.v);
|
5986
5986
|
else {
|
5987
|
-
const maxAge = expiresAt -
|
5987
|
+
const maxAge = expiresAt - now2;
|
5988
5988
|
if (maxAge > 0) {
|
5989
5989
|
this.set(hit.k, hit.v, maxAge);
|
5990
5990
|
}
|
@@ -6039,11 +6039,11 @@ var require_lru_cache = __commonJS({
|
|
6039
6039
|
}
|
6040
6040
|
};
|
6041
6041
|
var Entry = class {
|
6042
|
-
constructor(key, value, length,
|
6042
|
+
constructor(key, value, length, now2, maxAge) {
|
6043
6043
|
this.key = key;
|
6044
6044
|
this.value = value;
|
6045
6045
|
this.length = length;
|
6046
|
-
this.now =
|
6046
|
+
this.now = now2;
|
6047
6047
|
this.maxAge = maxAge || 0;
|
6048
6048
|
}
|
6049
6049
|
};
|
@@ -8115,11 +8115,15 @@ function integrity(input, tarball, alg = ((_a) => (_a = input.integrity) == null
|
|
8115
8115
|
};
|
8116
8116
|
}
|
8117
8117
|
|
8118
|
+
// src/backend/shared/time.lambda-shared.ts
|
8119
|
+
var now = Date.now;
|
8120
|
+
|
8118
8121
|
// src/backend/ingestion/re-ingest.lambda.ts
|
8119
8122
|
async function handler(event, context) {
|
8120
8123
|
console.log("Event: ", JSON.stringify(event, null, 2));
|
8121
8124
|
const bucket = requireEnv("BUCKET_NAME");
|
8122
8125
|
const queueUrl = requireEnv("QUEUE_URL");
|
8126
|
+
const age = requireEnv("REPROCESS_AGE_MILLIS");
|
8123
8127
|
console.log(`Download metadata object at ${bucket}/${event.Key}`);
|
8124
8128
|
const { Body: jsonMetadata } = await s3().getObject({ Bucket: bucket, Key: event.Key }).promise();
|
8125
8129
|
if (jsonMetadata == null) {
|
@@ -8131,7 +8135,13 @@ async function handler(event, context) {
|
|
8131
8135
|
0,
|
8132
8136
|
event.Key.length - METADATA_KEY_SUFFIX.length
|
8133
8137
|
)}${PACKAGE_KEY_SUFFIX}`;
|
8134
|
-
|
8138
|
+
if (!isYoungEnough(time, Number(age))) {
|
8139
|
+
console.log(
|
8140
|
+
`Tarball ${tarballKey} has been published too far in the past (${age}). Not reprocessing`
|
8141
|
+
);
|
8142
|
+
return;
|
8143
|
+
}
|
8144
|
+
console.log(`Download tarball object at ${bucket}/${tarballKey}`);
|
8135
8145
|
const { Body: tarball, VersionId: versionId } = await s3().getObject({ Bucket: bucket, Key: tarballKey }).promise();
|
8136
8146
|
if (tarball == null) {
|
8137
8147
|
console.error(`No body found in ${bucket}/${tarballKey}, aborting.`);
|
@@ -8176,6 +8186,10 @@ async function handler(event, context) {
|
|
8176
8186
|
}
|
8177
8187
|
}).promise();
|
8178
8188
|
}
|
8189
|
+
function isYoungEnough(publishDate, historyTimeWindow) {
|
8190
|
+
const publish = new Date(publishDate).getTime();
|
8191
|
+
return publish + historyTimeWindow >= now();
|
8192
|
+
}
|
8179
8193
|
// Annotate the CommonJS export names for ESM import in node:
|
8180
8194
|
0 && (module.exports = {
|
8181
8195
|
handler
|