@pipelab/plugin-construct 1.0.0-beta.15 → 1.0.0-beta.16

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/dist/index.cjs CHANGED
@@ -26,6 +26,8 @@ let node_v8 = require("node:v8");
26
26
  let node_stream_promises = require("node:stream/promises");
27
27
  let node_stream = require("node:stream");
28
28
  let node_buffer = require("node:buffer");
29
+ let node_dns_promises = require("node:dns/promises");
30
+ node_dns_promises = require_chunk.__toESM(node_dns_promises);
29
31
  let node_module = require("node:module");
30
32
  //#region ../../packages/migration/src/models/createMigration.ts
31
33
  function createMigration$1(migration) {
@@ -123876,7 +123878,7 @@ var require_auth = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module
123876
123878
  //#endregion
123877
123879
  //#region ../../node_modules/make-fetch-happen/lib/options.js
123878
123880
  var require_options$1 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
123879
- const dns$2 = require("dns");
123881
+ const dns$3 = require("dns");
123880
123882
  const conditionalHeaders = [
123881
123883
  "if-modified-since",
123882
123884
  "if-none-match",
@@ -123901,7 +123903,7 @@ var require_options$1 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, m
123901
123903
  };
123902
123904
  options.dns = {
123903
123905
  ttl: 300 * 1e3,
123904
- lookup: dns$2.lookup,
123906
+ lookup: dns$3.lookup,
123905
123907
  ...options.dns
123906
123908
  };
123907
123909
  options.cache = options.cache || "default";
@@ -125318,9 +125320,9 @@ var require_key$3 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, modul
125318
125320
  //#region ../../node_modules/@npmcli/agent/lib/dns.js
125319
125321
  var require_dns = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
125320
125322
  const { LRUCache } = require_index_min$5();
125321
- const dns$1 = require("dns");
125323
+ const dns$2 = require("dns");
125322
125324
  const cache = new LRUCache({ max: 50 });
125323
- const getOptions = ({ family = 0, hints = dns$1.ADDRCONFIG, all = false, verbatim = void 0, ttl = 300 * 1e3, lookup = dns$1.lookup }) => ({
125325
+ const getOptions = ({ family = 0, hints = dns$2.ADDRCONFIG, all = false, verbatim = void 0, ttl = 300 * 1e3, lookup = dns$2.lookup }) => ({
125324
125326
  hints,
125325
125327
  lookup: (hostname, ...args) => {
125326
125328
  const callback = args.pop();
@@ -130359,7 +130361,7 @@ var require_dist$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports) => {
130359
130361
  const socks_1 = require_build$1();
130360
130362
  const agent_base_1 = require_dist$12();
130361
130363
  const debug_1 = __importDefault(require_src$1());
130362
- const dns = __importStar(require("dns"));
130364
+ const dns$1 = __importStar(require("dns"));
130363
130365
  const net$1 = __importStar(require("net"));
130364
130366
  const tls$1 = __importStar(require("tls"));
130365
130367
  const url_1$1 = require("url");
@@ -130431,7 +130433,7 @@ var require_dist$9 = /* @__PURE__ */ require_chunk.__commonJSMin(((exports) => {
130431
130433
  const { shouldLookup, proxy, timeout } = this;
130432
130434
  if (!opts.host) throw new Error("No `host` defined!");
130433
130435
  let { host } = opts;
130434
- const { port, lookup: lookupFn = dns.lookup } = opts;
130436
+ const { port, lookup: lookupFn = dns$1.lookup } = opts;
130435
130437
  if (shouldLookup) host = await new Promise((resolve, reject) => {
130436
130438
  lookupFn(host, {}, (err, res) => {
130437
130439
  if (err) reject(err);
@@ -151200,6 +151202,20 @@ async function withLock(key, fn) {
151200
151202
  activeOperations.set(key, promise);
151201
151203
  return promise;
151202
151204
  }
151205
+ let isOnlineCached = null;
151206
+ let lastCheckTime = 0;
151207
+ async function isOnline() {
151208
+ const now = Date.now();
151209
+ if (isOnlineCached !== null && now - lastCheckTime < 1e4) return isOnlineCached;
151210
+ try {
151211
+ await Promise.race([node_dns_promises.default.lookup("registry.npmjs.org"), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("timeout")), 1500))]);
151212
+ isOnlineCached = true;
151213
+ } catch {
151214
+ isOnlineCached = false;
151215
+ }
151216
+ lastCheckTime = now;
151217
+ return isOnlineCached;
151218
+ }
151203
151219
  /**
151204
151220
  * Robust utility to fetch, cache, and resolve an NPM package.
151205
151221
  * Centralized in core-node to avoid circular dependencies.
@@ -151226,7 +151242,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
151226
151242
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151227
151243
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
151228
151244
  const resolveStart = Date.now();
151229
- try {
151245
+ if (!await isOnline()) {
151246
+ console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151247
+ const fallbackStart = Date.now();
151248
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151249
+ if (fallbackVersion) {
151250
+ resolvedVersion = fallbackVersion;
151251
+ console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
151252
+ } else throw new Error(`Offline and no local fallback version available for ${packageName}`);
151253
+ } else try {
151230
151254
  const cachePath = (0, node_path.join)(ctx.userDataPath, "cache", "pacote");
151231
151255
  let packumentPromise = packumentRequests.get(packageName);
151232
151256
  if (!packumentPromise) {
@@ -151236,7 +151260,16 @@ async function fetchPackage(packageName, versionOrRange, options) {
151236
151260
  const packument = await packumentPromise;
151237
151261
  const versions = Object.keys(packument.versions);
151238
151262
  const range = resolvedVersionOrRange || "latest";
151239
- const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151263
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151264
+ if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151265
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151266
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151267
+ if (!foundVersion || import_semver.default.valid(foundVersion) && import_semver.default.gte(releaseTagVersion, foundVersion)) {
151268
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) instead of "latest" (${foundVersion || "none"}) for ${packageName}`);
151269
+ foundVersion = releaseTagVersion;
151270
+ } else if (foundVersion) console.warn(`[Fetcher] Tag "${ctx.releaseTag}" (${releaseTagVersion}) is older than "latest" (${foundVersion}) for ${packageName}, keeping "latest"`);
151271
+ }
151272
+ }
151240
151273
  if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
151241
151274
  resolvedVersion = foundVersion;
151242
151275
  console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);
package/dist/index.mjs CHANGED
@@ -21,6 +21,7 @@ import { serialize } from "node:v8";
21
21
  import { finished, pipeline } from "node:stream/promises";
22
22
  import { Duplex, PassThrough, Readable, Transform, Writable, getDefaultHighWaterMark } from "node:stream";
23
23
  import { Buffer as Buffer$1 } from "node:buffer";
24
+ import dns from "node:dns/promises";
24
25
  //#region ../../packages/migration/src/models/createMigration.ts
25
26
  function createMigration$1(migration) {
26
27
  return {
@@ -123874,7 +123875,7 @@ var require_auth = /* @__PURE__ */ __commonJSMin(((exports, module) => {
123874
123875
  //#endregion
123875
123876
  //#region ../../node_modules/make-fetch-happen/lib/options.js
123876
123877
  var require_options$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
123877
- const dns$2 = __require("dns");
123878
+ const dns$3 = __require("dns");
123878
123879
  const conditionalHeaders = [
123879
123880
  "if-modified-since",
123880
123881
  "if-none-match",
@@ -123899,7 +123900,7 @@ var require_options$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
123899
123900
  };
123900
123901
  options.dns = {
123901
123902
  ttl: 300 * 1e3,
123902
- lookup: dns$2.lookup,
123903
+ lookup: dns$3.lookup,
123903
123904
  ...options.dns
123904
123905
  };
123905
123906
  options.cache = options.cache || "default";
@@ -125316,9 +125317,9 @@ var require_key$3 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
125316
125317
  //#region ../../node_modules/@npmcli/agent/lib/dns.js
125317
125318
  var require_dns = /* @__PURE__ */ __commonJSMin(((exports, module) => {
125318
125319
  const { LRUCache } = require_index_min$5();
125319
- const dns$1 = __require("dns");
125320
+ const dns$2 = __require("dns");
125320
125321
  const cache = new LRUCache({ max: 50 });
125321
- const getOptions = ({ family = 0, hints = dns$1.ADDRCONFIG, all = false, verbatim = void 0, ttl = 300 * 1e3, lookup = dns$1.lookup }) => ({
125322
+ const getOptions = ({ family = 0, hints = dns$2.ADDRCONFIG, all = false, verbatim = void 0, ttl = 300 * 1e3, lookup = dns$2.lookup }) => ({
125322
125323
  hints,
125323
125324
  lookup: (hostname, ...args) => {
125324
125325
  const callback = args.pop();
@@ -130357,7 +130358,7 @@ var require_dist$9 = /* @__PURE__ */ __commonJSMin(((exports) => {
130357
130358
  const socks_1 = require_build$1();
130358
130359
  const agent_base_1 = require_dist$12();
130359
130360
  const debug_1 = __importDefault(require_src$1());
130360
- const dns = __importStar(__require("dns"));
130361
+ const dns$1 = __importStar(__require("dns"));
130361
130362
  const net$1 = __importStar(__require("net"));
130362
130363
  const tls$1 = __importStar(__require("tls"));
130363
130364
  const url_1$1 = __require("url");
@@ -130429,7 +130430,7 @@ var require_dist$9 = /* @__PURE__ */ __commonJSMin(((exports) => {
130429
130430
  const { shouldLookup, proxy, timeout } = this;
130430
130431
  if (!opts.host) throw new Error("No `host` defined!");
130431
130432
  let { host } = opts;
130432
- const { port, lookup: lookupFn = dns.lookup } = opts;
130433
+ const { port, lookup: lookupFn = dns$1.lookup } = opts;
130433
130434
  if (shouldLookup) host = await new Promise((resolve, reject) => {
130434
130435
  lookupFn(host, {}, (err, res) => {
130435
130436
  if (err) reject(err);
@@ -151198,6 +151199,20 @@ async function withLock(key, fn) {
151198
151199
  activeOperations.set(key, promise);
151199
151200
  return promise;
151200
151201
  }
151202
+ let isOnlineCached = null;
151203
+ let lastCheckTime = 0;
151204
+ async function isOnline() {
151205
+ const now = Date.now();
151206
+ if (isOnlineCached !== null && now - lastCheckTime < 1e4) return isOnlineCached;
151207
+ try {
151208
+ await Promise.race([dns.lookup("registry.npmjs.org"), new Promise((_, reject) => setTimeout(() => reject(/* @__PURE__ */ new Error("timeout")), 1500))]);
151209
+ isOnlineCached = true;
151210
+ } catch {
151211
+ isOnlineCached = false;
151212
+ }
151213
+ lastCheckTime = now;
151214
+ return isOnlineCached;
151215
+ }
151201
151216
  /**
151202
151217
  * Robust utility to fetch, cache, and resolve an NPM package.
151203
151218
  * Centralized in core-node to avoid circular dependencies.
@@ -151224,7 +151239,15 @@ async function fetchPackage(packageName, versionOrRange, options) {
151224
151239
  if (resolvedVersionOrRange === "local") resolvedVersionOrRange = "latest";
151225
151240
  console.log(`[Fetcher] Resolving ${packageName}@${resolvedVersionOrRange || "latest"}...`);
151226
151241
  const resolveStart = Date.now();
151227
- try {
151242
+ if (!await isOnline()) {
151243
+ console.warn(`[Fetcher] ${packageName}: offline mode detected (${Date.now() - resolveStart}ms), trying local fallback...`);
151244
+ const fallbackStart = Date.now();
151245
+ const fallbackVersion = await tryLocalFallback(resolvedVersionOrRange, /* @__PURE__ */ new Error("Offline"), baseDir, packageName);
151246
+ if (fallbackVersion) {
151247
+ resolvedVersion = fallbackVersion;
151248
+ console.log(`[Fetcher] ${packageName}: Resolved to local fallback ${resolvedVersion} (${Date.now() - fallbackStart}ms)`);
151249
+ } else throw new Error(`Offline and no local fallback version available for ${packageName}`);
151250
+ } else try {
151228
151251
  const cachePath = join(ctx.userDataPath, "cache", "pacote");
151229
151252
  let packumentPromise = packumentRequests.get(packageName);
151230
151253
  if (!packumentPromise) {
@@ -151234,7 +151257,16 @@ async function fetchPackage(packageName, versionOrRange, options) {
151234
151257
  const packument = await packumentPromise;
151235
151258
  const versions = Object.keys(packument.versions);
151236
151259
  const range = resolvedVersionOrRange || "latest";
151237
- const foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151260
+ let foundVersion = packument["dist-tags"]?.[range] || import_semver.default.maxSatisfying(versions, range);
151261
+ if (range === "latest" && ctx.releaseTag && ctx.releaseTag !== "latest") {
151262
+ const releaseTagVersion = packument["dist-tags"]?.[ctx.releaseTag];
151263
+ if (releaseTagVersion && import_semver.default.valid(releaseTagVersion)) {
151264
+ if (!foundVersion || import_semver.default.valid(foundVersion) && import_semver.default.gte(releaseTagVersion, foundVersion)) {
151265
+ console.log(`[Fetcher] Using release tag "${ctx.releaseTag}" (${releaseTagVersion}) instead of "latest" (${foundVersion || "none"}) for ${packageName}`);
151266
+ foundVersion = releaseTagVersion;
151267
+ } else if (foundVersion) console.warn(`[Fetcher] Tag "${ctx.releaseTag}" (${releaseTagVersion}) is older than "latest" (${foundVersion}) for ${packageName}, keeping "latest"`);
151268
+ }
151269
+ }
151238
151270
  if (!foundVersion) throw new Error(`Package ${packageName}@${range} not found on npm (available tags: ${Object.keys(packument["dist-tags"] || {}).join(", ")})`);
151239
151271
  resolvedVersion = foundVersion;
151240
151272
  console.log(`[Fetcher] ${packageName}: Resolved to v${resolvedVersion} via npm (${Date.now() - resolveStart}ms)`);