@absolutejs/absolute 0.20.0-beta.32 → 0.20.0-beta.33
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/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/index.js +313 -90
- package/dist/index.js +41 -27
- package/dist/index.js.map +4 -4
- package/dist/mobile/index.js +23 -1
- package/dist/mobile/index.js.map +5 -5
- package/dist/mobile/remoteMacAgentEntry.js +8 -8
- package/dist/src/cli/scripts/dev.d.ts +1 -0
- package/dist/src/dev/devCert.d.ts +6 -4
- package/dist/src/mobile/androidEmulatorController.d.ts +8 -1
- package/dist/src/mobile/iosSimulatorController.d.ts +2 -0
- package/dist/src/mobile/remoteMacProtocol.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -34041,26 +34041,40 @@ import {
|
|
|
34041
34041
|
readFileSync as readFileSync36,
|
|
34042
34042
|
rmSync as rmSync4
|
|
34043
34043
|
} from "fs";
|
|
34044
|
+
import { X509Certificate } from "crypto";
|
|
34045
|
+
import { isIP } from "net";
|
|
34044
34046
|
import { join as join55 } from "path";
|
|
34045
34047
|
var CERT_DIR = join55(process.cwd(), ".absolutejs");
|
|
34046
34048
|
var CERT_PATH = join55(CERT_DIR, "cert.pem");
|
|
34047
34049
|
var KEY_PATH = join55(CERT_DIR, "key.pem");
|
|
34048
34050
|
var CERT_VALIDITY_DAYS = 365;
|
|
34051
|
+
var DEFAULT_CERTIFICATE_HOSTS = ["localhost", "127.0.0.1", "::1"];
|
|
34052
|
+
var CERTIFICATE_HOSTNAME_PATTERN = /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/u;
|
|
34049
34053
|
var devLog = (msg) => console.log(`\x1B[2m${new Date().toLocaleTimeString()}\x1B[0m \x1B[36m[dev]\x1B[0m ${msg}`);
|
|
34050
34054
|
var devWarn = (msg) => console.log(`\x1B[2m${new Date().toLocaleTimeString()}\x1B[0m \x1B[33m[dev]\x1B[0m \x1B[33m${msg}\x1B[0m`);
|
|
34051
34055
|
var certFilesExist = () => existsSync40(CERT_PATH) && existsSync40(KEY_PATH);
|
|
34052
|
-
var
|
|
34056
|
+
var normalizeDevCertificateHosts = (hosts = []) => {
|
|
34057
|
+
const normalized = new Set(DEFAULT_CERTIFICATE_HOSTS);
|
|
34058
|
+
for (const host2 of hosts) {
|
|
34059
|
+
const value = host2.trim().toLowerCase();
|
|
34060
|
+
if (!value || value === "0.0.0.0" || value === "::")
|
|
34061
|
+
continue;
|
|
34062
|
+
if (isIP(value) === 0 && !CERTIFICATE_HOSTNAME_PATTERN.test(value)) {
|
|
34063
|
+
throw new TypeError(`Invalid development certificate host: ${host2}`);
|
|
34064
|
+
}
|
|
34065
|
+
normalized.add(value);
|
|
34066
|
+
}
|
|
34067
|
+
return [...normalized];
|
|
34068
|
+
};
|
|
34069
|
+
var certificateIsUsable = (hosts) => {
|
|
34053
34070
|
try {
|
|
34054
34071
|
const certPem = readFileSync36(CERT_PATH, "utf-8");
|
|
34055
|
-
const
|
|
34056
|
-
|
|
34057
|
-
|
|
34058
|
-
|
|
34059
|
-
const dateStr = output.replace("notAfter=", "");
|
|
34060
|
-
const expiryDate = new Date(dateStr);
|
|
34061
|
-
return expiryDate.getTime() < Date.now();
|
|
34072
|
+
const certificate = new X509Certificate(certPem);
|
|
34073
|
+
if (new Date(certificate.validTo).getTime() <= Date.now())
|
|
34074
|
+
return false;
|
|
34075
|
+
return normalizeDevCertificateHosts(hosts).every((host2) => isIP(host2) ? certificate.checkIP(host2) !== undefined : certificate.checkHost(host2) !== undefined);
|
|
34062
34076
|
} catch {
|
|
34063
|
-
return
|
|
34077
|
+
return false;
|
|
34064
34078
|
}
|
|
34065
34079
|
};
|
|
34066
34080
|
var hasMkcert = () => {
|
|
@@ -34074,23 +34088,22 @@ var hasMkcert = () => {
|
|
|
34074
34088
|
return false;
|
|
34075
34089
|
}
|
|
34076
34090
|
};
|
|
34077
|
-
var generateWithMkcert = () => {
|
|
34091
|
+
var generateWithMkcert = (hosts = []) => {
|
|
34078
34092
|
const result = Bun.spawnSync([
|
|
34079
34093
|
"mkcert",
|
|
34080
34094
|
"-cert-file",
|
|
34081
34095
|
CERT_PATH,
|
|
34082
34096
|
"-key-file",
|
|
34083
34097
|
KEY_PATH,
|
|
34084
|
-
|
|
34085
|
-
"127.0.0.1",
|
|
34086
|
-
"::1"
|
|
34098
|
+
...normalizeDevCertificateHosts(hosts)
|
|
34087
34099
|
], { stderr: "pipe", stdout: "pipe" });
|
|
34088
34100
|
if (result.exitCode !== 0) {
|
|
34089
34101
|
const err = new TextDecoder().decode(result.stderr);
|
|
34090
34102
|
throw new Error(`mkcert failed: ${err}`);
|
|
34091
34103
|
}
|
|
34092
34104
|
};
|
|
34093
|
-
var generateSelfSigned = () => {
|
|
34105
|
+
var generateSelfSigned = (hosts = []) => {
|
|
34106
|
+
const subjectAlternativeNames = normalizeDevCertificateHosts(hosts).map((host2) => `${isIP(host2) ? "IP" : "DNS"}:${host2}`).join(",");
|
|
34094
34107
|
const proc = Bun.spawnSync([
|
|
34095
34108
|
"openssl",
|
|
34096
34109
|
"req",
|
|
@@ -34109,7 +34122,7 @@ var generateSelfSigned = () => {
|
|
|
34109
34122
|
"-subj",
|
|
34110
34123
|
"/CN=localhost",
|
|
34111
34124
|
"-addext",
|
|
34112
|
-
|
|
34125
|
+
`subjectAltName=${subjectAlternativeNames}`
|
|
34113
34126
|
], { stderr: "pipe", stdout: "pipe" });
|
|
34114
34127
|
if (proc.exitCode !== 0) {
|
|
34115
34128
|
const err = new TextDecoder().decode(proc.stderr);
|
|
@@ -34117,32 +34130,32 @@ var generateSelfSigned = () => {
|
|
|
34117
34130
|
}
|
|
34118
34131
|
devLog("Using self-signed certificate \u2014 browser will show a one-time warning");
|
|
34119
34132
|
};
|
|
34120
|
-
var generateCert = () => {
|
|
34133
|
+
var generateCert = (hosts = []) => {
|
|
34121
34134
|
if (hasMkcert()) {
|
|
34122
|
-
generateWithMkcert();
|
|
34135
|
+
generateWithMkcert(hosts);
|
|
34123
34136
|
} else {
|
|
34124
|
-
generateSelfSigned();
|
|
34137
|
+
generateSelfSigned(hosts);
|
|
34125
34138
|
}
|
|
34126
34139
|
};
|
|
34127
|
-
var ensureDevCert = () => {
|
|
34140
|
+
var ensureDevCert = (hosts = []) => {
|
|
34128
34141
|
mkdirSync17(CERT_DIR, { recursive: true });
|
|
34129
|
-
if (hasCert()) {
|
|
34142
|
+
if (hasCert(hosts)) {
|
|
34130
34143
|
return { cert: CERT_PATH, key: KEY_PATH };
|
|
34131
34144
|
}
|
|
34132
34145
|
if (certFilesExist()) {
|
|
34133
|
-
devLog("Certificate expired, regenerating...");
|
|
34146
|
+
devLog("Certificate is expired or missing a required host, regenerating...");
|
|
34134
34147
|
}
|
|
34135
34148
|
try {
|
|
34136
|
-
generateCert();
|
|
34149
|
+
generateCert(hosts);
|
|
34137
34150
|
} catch (err) {
|
|
34138
34151
|
devWarn(`Failed to generate certificate: ${err instanceof Error ? err.message : err}`);
|
|
34139
34152
|
return null;
|
|
34140
34153
|
}
|
|
34141
34154
|
return { cert: CERT_PATH, key: KEY_PATH };
|
|
34142
34155
|
};
|
|
34143
|
-
var hasCert = () => certFilesExist() &&
|
|
34144
|
-
var loadDevCert = () => {
|
|
34145
|
-
const paths = ensureDevCert();
|
|
34156
|
+
var hasCert = (hosts = []) => certFilesExist() && certificateIsUsable(hosts);
|
|
34157
|
+
var loadDevCert = (hosts = []) => {
|
|
34158
|
+
const paths = ensureDevCert(hosts);
|
|
34146
34159
|
if (!paths)
|
|
34147
34160
|
return null;
|
|
34148
34161
|
try {
|
|
@@ -34239,9 +34252,10 @@ var localIP;
|
|
|
34239
34252
|
var args = argv;
|
|
34240
34253
|
var hostFlag = args.includes("--host");
|
|
34241
34254
|
if (hostFlag) {
|
|
34242
|
-
localIP = getLocalIPAddress();
|
|
34243
34255
|
host2 = "0.0.0.0";
|
|
34244
34256
|
}
|
|
34257
|
+
if (host2 === "0.0.0.0" || host2 === "::")
|
|
34258
|
+
localIP = getLocalIPAddress();
|
|
34245
34259
|
var loadTls = () => {
|
|
34246
34260
|
if (env4.NODE_ENV !== "development")
|
|
34247
34261
|
return;
|
|
@@ -40863,5 +40877,5 @@ export {
|
|
|
40863
40877
|
ANGULAR_INIT_TIMEOUT_MS
|
|
40864
40878
|
};
|
|
40865
40879
|
|
|
40866
|
-
//# debugId=
|
|
40880
|
+
//# debugId=D2060DE03921305264756E2164756E21
|
|
40867
40881
|
//# sourceMappingURL=index.js.map
|