@zuplo/cli 6.73.10 → 6.73.12
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/__tests__/integration/link.integration.test.js +12 -1
- package/dist/__tests__/integration/link.integration.test.js.map +1 -1
- package/dist/link/handler.d.ts.map +1 -1
- package/dist/link/handler.js +7 -0
- package/dist/link/handler.js.map +1 -1
- package/dist/link/project-type.d.ts +22 -0
- package/dist/link/project-type.d.ts.map +1 -0
- package/dist/link/project-type.js +140 -0
- package/dist/link/project-type.js.map +1 -0
- package/dist/link/project-type.test.d.ts +2 -0
- package/dist/link/project-type.test.d.ts.map +1 -0
- package/dist/link/project-type.test.js +225 -0
- package/dist/link/project-type.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/README.md +1 -4
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwks/remote.d.ts +3 -3
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/jwks/remote.js +1 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_to_jwk.js +4 -1
- package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/package.json +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/node.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/error-tracking/parsers/node.js +4 -0
- package/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs +4 -0
- package/node_modules/@posthog/core/dist/posthog-core.d.ts +5 -2
- package/node_modules/@posthog/core/dist/posthog-core.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/posthog-core.js +9 -3
- package/node_modules/@posthog/core/dist/posthog-core.mjs +9 -3
- package/node_modules/@posthog/core/dist/types.d.ts +4 -0
- package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/package.json +2 -2
- package/node_modules/@posthog/core/src/error-tracking/parsers/node.spec.ts +19 -0
- package/node_modules/@posthog/core/src/error-tracking/parsers/node.ts +8 -0
- package/node_modules/@posthog/core/src/posthog-core.ts +10 -5
- package/node_modules/@posthog/core/src/types.ts +5 -0
- package/node_modules/@posthog/types/dist/feature-flags.d.ts +9 -0
- package/node_modules/@posthog/types/dist/feature-flags.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/index.d.ts +1 -1
- package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/posthog.d.ts +6 -2
- package/node_modules/@posthog/types/dist/posthog.d.ts.map +1 -1
- package/node_modules/@posthog/types/package.json +1 -1
- package/node_modules/@posthog/types/src/feature-flags.ts +10 -0
- package/node_modules/@posthog/types/src/index.ts +1 -0
- package/node_modules/@posthog/types/src/posthog.ts +4 -1
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +1 -1
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-7POELG2I.js → chunk-7Z5GGYF5.js} +3 -3
- package/node_modules/@zuplo/runtime/out/esm/chunk-7Z5GGYF5.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/node_modules/brace-expansion/README.md +12 -0
- package/node_modules/brace-expansion/dist/commonjs/index.d.ts +2 -0
- package/node_modules/brace-expansion/dist/commonjs/index.d.ts.map +1 -1
- package/node_modules/brace-expansion/dist/commonjs/index.js +138 -86
- package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.d.ts +2 -0
- package/node_modules/brace-expansion/dist/esm/index.d.ts.map +1 -1
- package/node_modules/brace-expansion/dist/esm/index.js +137 -85
- package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
- package/node_modules/brace-expansion/package.json +2 -2
- package/node_modules/media-typer/README.md +15 -14
- package/node_modules/media-typer/index.js +0 -8
- package/node_modules/media-typer/package.json +16 -12
- package/package.json +6 -6
- package/node_modules/@zuplo/runtime/out/esm/chunk-7POELG2I.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-7POELG2I.js.LEGAL.txt → chunk-7Z5GGYF5.js.LEGAL.txt} +0 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { afterEach, beforeEach, describe, it, mock } from "node:test";
|
|
6
|
+
import { detectProjectType, syncProjectTypeForLink, updateProjectType, } from "./project-type.js";
|
|
7
|
+
describe("link project type detection", () => {
|
|
8
|
+
let testDir;
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
testDir = await mkdtemp(join(tmpdir(), "zuplo-dev-project-type-test-"));
|
|
11
|
+
});
|
|
12
|
+
afterEach(async () => {
|
|
13
|
+
mock.restoreAll();
|
|
14
|
+
await rm(testDir, { recursive: true, force: true });
|
|
15
|
+
});
|
|
16
|
+
it("detects a managed-dedicated project", async () => {
|
|
17
|
+
mock.method(globalThis, "fetch", async () => {
|
|
18
|
+
return Response.json({
|
|
19
|
+
data: [
|
|
20
|
+
{ name: "other-project", type: "managed-edge" },
|
|
21
|
+
{ name: "my-project", type: "managed-dedicated" },
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
const result = await detectProjectType({
|
|
26
|
+
accountName: "my-account",
|
|
27
|
+
authToken: "token",
|
|
28
|
+
projectName: "my-project",
|
|
29
|
+
});
|
|
30
|
+
assert.strictEqual(result, "managed-dedicated");
|
|
31
|
+
});
|
|
32
|
+
it("uses the explicitly designated project when multiple projects exist", async () => {
|
|
33
|
+
mock.method(globalThis, "fetch", async () => {
|
|
34
|
+
return Response.json({
|
|
35
|
+
data: [
|
|
36
|
+
{ name: "linked-project", type: "managed-dedicated" },
|
|
37
|
+
{ name: "explicit-project", type: "managed-edge" },
|
|
38
|
+
],
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
const result = await detectProjectType({
|
|
42
|
+
accountName: "my-account",
|
|
43
|
+
authToken: "token",
|
|
44
|
+
projectName: "explicit-project",
|
|
45
|
+
});
|
|
46
|
+
assert.strictEqual(result, "managed-edge");
|
|
47
|
+
});
|
|
48
|
+
it("defaults self-hosted and unknown project types to managed-edge", async () => {
|
|
49
|
+
mock.method(globalThis, "fetch", async () => {
|
|
50
|
+
return Response.json({
|
|
51
|
+
data: [{ name: "my-project", type: "self-hosted" }],
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
const result = await detectProjectType({
|
|
55
|
+
accountName: "my-account",
|
|
56
|
+
authToken: "token",
|
|
57
|
+
projectName: "my-project",
|
|
58
|
+
});
|
|
59
|
+
assert.strictEqual(result, "managed-edge");
|
|
60
|
+
});
|
|
61
|
+
it("defaults to managed-edge when running offline", async () => {
|
|
62
|
+
mock.method(globalThis, "fetch", async () => {
|
|
63
|
+
throw new Error("offline");
|
|
64
|
+
});
|
|
65
|
+
const result = await detectProjectType({
|
|
66
|
+
accountName: "my-account",
|
|
67
|
+
authToken: "token",
|
|
68
|
+
projectName: "my-project",
|
|
69
|
+
});
|
|
70
|
+
assert.strictEqual(result, "managed-edge");
|
|
71
|
+
});
|
|
72
|
+
it("resolves the account from who-am-i when it is not supplied", async () => {
|
|
73
|
+
const requests = [];
|
|
74
|
+
mock.method(globalThis, "fetch", async (input) => {
|
|
75
|
+
requests.push(String(input));
|
|
76
|
+
if (String(input).endsWith("/v1/who-am-i")) {
|
|
77
|
+
return Response.json({ account: "resolved-account" });
|
|
78
|
+
}
|
|
79
|
+
return Response.json({
|
|
80
|
+
data: [{ name: "my-project", type: "managed-dedicated" }],
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
const result = await detectProjectType({
|
|
84
|
+
authToken: "token",
|
|
85
|
+
projectName: "my-project",
|
|
86
|
+
});
|
|
87
|
+
assert.strictEqual(result, "managed-dedicated");
|
|
88
|
+
assert.strictEqual(requests.length, 2);
|
|
89
|
+
assert.match(requests[1], /accountName=resolved-account/);
|
|
90
|
+
});
|
|
91
|
+
it("does not overwrite an existing projectType", async () => {
|
|
92
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
93
|
+
await writeFile(configPath, `{
|
|
94
|
+
// Keep this comment.
|
|
95
|
+
"version": 1,
|
|
96
|
+
"projectType": "managed-edge"
|
|
97
|
+
}
|
|
98
|
+
`, "utf-8");
|
|
99
|
+
await updateProjectType(testDir, "managed-dedicated");
|
|
100
|
+
const contents = await readFile(configPath, "utf-8");
|
|
101
|
+
assert.match(contents, /Keep this comment/);
|
|
102
|
+
assert.match(contents, /"projectType": "managed-edge"/);
|
|
103
|
+
});
|
|
104
|
+
it("adds projectType when it is missing", async () => {
|
|
105
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
106
|
+
await writeFile(configPath, `{
|
|
107
|
+
// Keep this comment.
|
|
108
|
+
"version": 1
|
|
109
|
+
}
|
|
110
|
+
`, "utf-8");
|
|
111
|
+
await updateProjectType(testDir, "managed-dedicated");
|
|
112
|
+
const contents = await readFile(configPath, "utf-8");
|
|
113
|
+
assert.match(contents, /Keep this comment/);
|
|
114
|
+
assert.match(contents, /"version": 1,/);
|
|
115
|
+
assert.match(contents, /"projectType": "managed-dedicated"/);
|
|
116
|
+
});
|
|
117
|
+
it("skips detection when projectType is already configured", async () => {
|
|
118
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
119
|
+
await writeFile(configPath, `{
|
|
120
|
+
"version": 1,
|
|
121
|
+
"projectType": "managed-dedicated"
|
|
122
|
+
}
|
|
123
|
+
`, "utf-8");
|
|
124
|
+
const fetchMock = mock.method(globalThis, "fetch", async () => {
|
|
125
|
+
throw new Error("Project type detection should not run");
|
|
126
|
+
});
|
|
127
|
+
await syncProjectTypeForLink({
|
|
128
|
+
sourceDirectory: testDir,
|
|
129
|
+
accountName: "my-account",
|
|
130
|
+
authToken: "token",
|
|
131
|
+
projectName: "my-project",
|
|
132
|
+
});
|
|
133
|
+
const contents = await readFile(configPath, "utf-8");
|
|
134
|
+
assert.match(contents, /"projectType": "managed-dedicated"/);
|
|
135
|
+
assert.strictEqual(fetchMock.mock.callCount(), 0);
|
|
136
|
+
});
|
|
137
|
+
it("recognizes projectType in JSONC with a trailing comma", async () => {
|
|
138
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
139
|
+
const originalContents = `{
|
|
140
|
+
"version": 1,
|
|
141
|
+
"projectType": "managed-dedicated",
|
|
142
|
+
}
|
|
143
|
+
`;
|
|
144
|
+
await writeFile(configPath, originalContents, "utf-8");
|
|
145
|
+
const fetchMock = mock.method(globalThis, "fetch", async () => {
|
|
146
|
+
throw new Error("Project type detection should not run");
|
|
147
|
+
});
|
|
148
|
+
await syncProjectTypeForLink({
|
|
149
|
+
sourceDirectory: testDir,
|
|
150
|
+
accountName: "my-account",
|
|
151
|
+
authToken: "token",
|
|
152
|
+
projectName: "my-project",
|
|
153
|
+
});
|
|
154
|
+
assert.strictEqual(await readFile(configPath, "utf-8"), originalContents);
|
|
155
|
+
assert.strictEqual(fetchMock.mock.callCount(), 0);
|
|
156
|
+
});
|
|
157
|
+
it("persists a project type confirmed by the API", async () => {
|
|
158
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
159
|
+
await writeFile(configPath, '{\n "version": 1\n}\n', "utf-8");
|
|
160
|
+
mock.method(globalThis, "fetch", async () => {
|
|
161
|
+
return Response.json({
|
|
162
|
+
data: [{ name: "my-project", type: "managed-edge" }],
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
await syncProjectTypeForLink({
|
|
166
|
+
sourceDirectory: testDir,
|
|
167
|
+
accountName: "my-account",
|
|
168
|
+
authToken: "token",
|
|
169
|
+
projectName: "my-project",
|
|
170
|
+
});
|
|
171
|
+
const contents = await readFile(configPath, "utf-8");
|
|
172
|
+
assert.match(contents, /"projectType": "managed-edge"/);
|
|
173
|
+
});
|
|
174
|
+
it("does not persist the managed-edge fallback when detection fails", async () => {
|
|
175
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
176
|
+
const originalContents = '{\n "version": 1\n}\n';
|
|
177
|
+
await writeFile(configPath, originalContents, "utf-8");
|
|
178
|
+
mock.method(globalThis, "fetch", async () => {
|
|
179
|
+
throw new Error("offline");
|
|
180
|
+
});
|
|
181
|
+
await syncProjectTypeForLink({
|
|
182
|
+
sourceDirectory: testDir,
|
|
183
|
+
accountName: "my-account",
|
|
184
|
+
authToken: "token",
|
|
185
|
+
projectName: "my-project",
|
|
186
|
+
});
|
|
187
|
+
assert.strictEqual(await readFile(configPath, "utf-8"), originalContents);
|
|
188
|
+
});
|
|
189
|
+
it("does not persist a fallback for an unrecognized API project type", async () => {
|
|
190
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
191
|
+
const originalContents = '{\n "version": 1\n}\n';
|
|
192
|
+
await writeFile(configPath, originalContents, "utf-8");
|
|
193
|
+
mock.method(globalThis, "fetch", async () => {
|
|
194
|
+
return Response.json({
|
|
195
|
+
data: [{ name: "my-project", type: "self-hosted" }],
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
await syncProjectTypeForLink({
|
|
199
|
+
sourceDirectory: testDir,
|
|
200
|
+
accountName: "my-account",
|
|
201
|
+
authToken: "token",
|
|
202
|
+
projectName: "my-project",
|
|
203
|
+
});
|
|
204
|
+
assert.strictEqual(await readFile(configPath, "utf-8"), originalContents);
|
|
205
|
+
});
|
|
206
|
+
it("does not modify malformed JSONC", async () => {
|
|
207
|
+
const configPath = join(testDir, "zuplo.jsonc");
|
|
208
|
+
const originalContents = `{
|
|
209
|
+
"version": 1,
|
|
210
|
+
`;
|
|
211
|
+
await writeFile(configPath, originalContents, "utf-8");
|
|
212
|
+
const fetchMock = mock.method(globalThis, "fetch", async () => {
|
|
213
|
+
throw new Error("Project type detection should not run");
|
|
214
|
+
});
|
|
215
|
+
await syncProjectTypeForLink({
|
|
216
|
+
sourceDirectory: testDir,
|
|
217
|
+
accountName: "my-account",
|
|
218
|
+
authToken: "token",
|
|
219
|
+
projectName: "my-project",
|
|
220
|
+
});
|
|
221
|
+
assert.strictEqual(await readFile(configPath, "utf-8"), originalContents);
|
|
222
|
+
assert.strictEqual(fetchMock.mock.callCount(), 0);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
//# sourceMappingURL=project-type.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-type.test.js","sourceRoot":"","sources":["../../src/link/project-type.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE;oBAC/C,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE;iBAClD;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE;oBACrD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE;iBACnD;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;aACpD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAA6B,EAAE,EAAE;YACvE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;aAC1D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAChD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,SAAS,CACb,UAAU,EACV;;;;;CAKL,EACK,OAAO,CACR,CAAC;QAEF,MAAM,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,SAAS,CACb,UAAU,EACV;;;;CAIL,EACK,OAAO,CACR,CAAC;QAEF,MAAM,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,SAAS,CACb,UAAU,EACV;;;;CAIL,EACK,OAAO,CACR,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG;;;;CAI5B,CAAC;QACE,MAAM,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,SAAS,CAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;aACrD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;QAClD,MAAM,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;QAClD,MAAM,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;aACpD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG;;CAE5B,CAAC;QACE,MAAM,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC;YAC3B,eAAe,EAAE,OAAO;YACxB,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC1E,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import assert from \"node:assert\";\nimport { mkdtemp, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { afterEach, beforeEach, describe, it, mock } from \"node:test\";\nimport {\n detectProjectType,\n syncProjectTypeForLink,\n updateProjectType,\n} from \"./project-type.js\";\n\ndescribe(\"link project type detection\", () => {\n let testDir: string;\n\n beforeEach(async () => {\n testDir = await mkdtemp(join(tmpdir(), \"zuplo-dev-project-type-test-\"));\n });\n\n afterEach(async () => {\n mock.restoreAll();\n await rm(testDir, { recursive: true, force: true });\n });\n\n it(\"detects a managed-dedicated project\", async () => {\n mock.method(globalThis, \"fetch\", async () => {\n return Response.json({\n data: [\n { name: \"other-project\", type: \"managed-edge\" },\n { name: \"my-project\", type: \"managed-dedicated\" },\n ],\n });\n });\n\n const result = await detectProjectType({\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(result, \"managed-dedicated\");\n });\n\n it(\"uses the explicitly designated project when multiple projects exist\", async () => {\n mock.method(globalThis, \"fetch\", async () => {\n return Response.json({\n data: [\n { name: \"linked-project\", type: \"managed-dedicated\" },\n { name: \"explicit-project\", type: \"managed-edge\" },\n ],\n });\n });\n\n const result = await detectProjectType({\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"explicit-project\",\n });\n\n assert.strictEqual(result, \"managed-edge\");\n });\n\n it(\"defaults self-hosted and unknown project types to managed-edge\", async () => {\n mock.method(globalThis, \"fetch\", async () => {\n return Response.json({\n data: [{ name: \"my-project\", type: \"self-hosted\" }],\n });\n });\n\n const result = await detectProjectType({\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(result, \"managed-edge\");\n });\n\n it(\"defaults to managed-edge when running offline\", async () => {\n mock.method(globalThis, \"fetch\", async () => {\n throw new Error(\"offline\");\n });\n\n const result = await detectProjectType({\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(result, \"managed-edge\");\n });\n\n it(\"resolves the account from who-am-i when it is not supplied\", async () => {\n const requests: string[] = [];\n mock.method(globalThis, \"fetch\", async (input: string | URL | Request) => {\n requests.push(String(input));\n if (String(input).endsWith(\"/v1/who-am-i\")) {\n return Response.json({ account: \"resolved-account\" });\n }\n return Response.json({\n data: [{ name: \"my-project\", type: \"managed-dedicated\" }],\n });\n });\n\n const result = await detectProjectType({\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(result, \"managed-dedicated\");\n assert.strictEqual(requests.length, 2);\n assert.match(requests[1], /accountName=resolved-account/);\n });\n\n it(\"does not overwrite an existing projectType\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n await writeFile(\n configPath,\n `{\n // Keep this comment.\n \"version\": 1,\n \"projectType\": \"managed-edge\"\n}\n`,\n \"utf-8\"\n );\n\n await updateProjectType(testDir, \"managed-dedicated\");\n\n const contents = await readFile(configPath, \"utf-8\");\n assert.match(contents, /Keep this comment/);\n assert.match(contents, /\"projectType\": \"managed-edge\"/);\n });\n\n it(\"adds projectType when it is missing\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n await writeFile(\n configPath,\n `{\n // Keep this comment.\n \"version\": 1\n}\n`,\n \"utf-8\"\n );\n\n await updateProjectType(testDir, \"managed-dedicated\");\n\n const contents = await readFile(configPath, \"utf-8\");\n assert.match(contents, /Keep this comment/);\n assert.match(contents, /\"version\": 1,/);\n assert.match(contents, /\"projectType\": \"managed-dedicated\"/);\n });\n\n it(\"skips detection when projectType is already configured\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n await writeFile(\n configPath,\n `{\n \"version\": 1,\n \"projectType\": \"managed-dedicated\"\n}\n`,\n \"utf-8\"\n );\n const fetchMock = mock.method(globalThis, \"fetch\", async () => {\n throw new Error(\"Project type detection should not run\");\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n const contents = await readFile(configPath, \"utf-8\");\n assert.match(contents, /\"projectType\": \"managed-dedicated\"/);\n assert.strictEqual(fetchMock.mock.callCount(), 0);\n });\n\n it(\"recognizes projectType in JSONC with a trailing comma\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n const originalContents = `{\n \"version\": 1,\n \"projectType\": \"managed-dedicated\",\n}\n`;\n await writeFile(configPath, originalContents, \"utf-8\");\n const fetchMock = mock.method(globalThis, \"fetch\", async () => {\n throw new Error(\"Project type detection should not run\");\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(await readFile(configPath, \"utf-8\"), originalContents);\n assert.strictEqual(fetchMock.mock.callCount(), 0);\n });\n\n it(\"persists a project type confirmed by the API\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n await writeFile(configPath, '{\\n \"version\": 1\\n}\\n', \"utf-8\");\n mock.method(globalThis, \"fetch\", async () => {\n return Response.json({\n data: [{ name: \"my-project\", type: \"managed-edge\" }],\n });\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n const contents = await readFile(configPath, \"utf-8\");\n assert.match(contents, /\"projectType\": \"managed-edge\"/);\n });\n\n it(\"does not persist the managed-edge fallback when detection fails\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n const originalContents = '{\\n \"version\": 1\\n}\\n';\n await writeFile(configPath, originalContents, \"utf-8\");\n mock.method(globalThis, \"fetch\", async () => {\n throw new Error(\"offline\");\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(await readFile(configPath, \"utf-8\"), originalContents);\n });\n\n it(\"does not persist a fallback for an unrecognized API project type\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n const originalContents = '{\\n \"version\": 1\\n}\\n';\n await writeFile(configPath, originalContents, \"utf-8\");\n mock.method(globalThis, \"fetch\", async () => {\n return Response.json({\n data: [{ name: \"my-project\", type: \"self-hosted\" }],\n });\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(await readFile(configPath, \"utf-8\"), originalContents);\n });\n\n it(\"does not modify malformed JSONC\", async () => {\n const configPath = join(testDir, \"zuplo.jsonc\");\n const originalContents = `{\n \"version\": 1,\n`;\n await writeFile(configPath, originalContents, \"utf-8\");\n const fetchMock = mock.method(globalThis, \"fetch\", async () => {\n throw new Error(\"Project type detection should not run\");\n });\n\n await syncProjectTypeForLink({\n sourceDirectory: testDir,\n accountName: \"my-account\",\n authToken: \"token\",\n projectName: \"my-project\",\n });\n\n assert.strictEqual(await readFile(configPath, \"utf-8\"), originalContents);\n assert.strictEqual(fetchMock.mock.callCount(), 0);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.ts","../src/cmds/source/upgrade.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/cli-dispatcher.test.ts","../src/common/cli-dispatcher.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts","../src/whoami/handler.ts"],"version":"5.8.2"}
|
|
1
|
+
{"root":["../src/cli.ts","../src/internal.ts","../src/types.d.ts","../src/__tests__/archive-utils.test.ts","../src/__tests__/import-openapi.test.ts","../src/__tests__/outdated.test.ts","../src/__tests__/populate.test.ts","../src/__tests__/tsconfig-upgrader.test.ts","../src/__tests__/integration/confirm-linked-config.integration.test.ts","../src/__tests__/integration/confirm-production-deploy.integration.test.ts","../src/__tests__/integration/custom-domain.integration.test.ts","../src/__tests__/integration/delete.integration.test.ts","../src/__tests__/integration/deploy.integration.test.ts","../src/__tests__/integration/get-project-param.integration.test.ts","../src/__tests__/integration/info.integration.test.ts","../src/__tests__/integration/jest-mocks-setup.ts","../src/__tests__/integration/jest-setup.ts","../src/__tests__/integration/link.integration.test.ts","../src/__tests__/integration/linked-config-cascade.integration.test.ts","../src/__tests__/integration/list.integration.test.ts","../src/__tests__/integration/test-utils.ts","../src/__tests__/integration/tunnel.integration.test.ts","../src/__tests__/integration/variable.integration.test.ts","../src/__tests__/integration/whoami.integration.test.ts","../src/bucket/models.ts","../src/bucket/list/handler.ts","../src/build/handler.ts","../src/ca-certificate/models.ts","../src/ca-certificate/validation.test.ts","../src/ca-certificate/validation.ts","../src/ca-certificate/create/handler.ts","../src/ca-certificate/delete/handler.ts","../src/ca-certificate/describe/handler.ts","../src/ca-certificate/list/handler.ts","../src/ca-certificate/update/handler.ts","../src/cmds/build.ts","../src/cmds/compile.ts","../src/cmds/delete.ts","../src/cmds/deploy.ts","../src/cmds/dev.ts","../src/cmds/docs.ts","../src/cmds/editor.ts","../src/cmds/info.ts","../src/cmds/init.ts","../src/cmds/link.ts","../src/cmds/list.ts","../src/cmds/login.ts","../src/cmds/logout.ts","../src/cmds/test.ts","../src/cmds/whoami.ts","../src/cmds/bucket/index.ts","../src/cmds/bucket/list.ts","../src/cmds/ca-certificate/create.ts","../src/cmds/ca-certificate/delete.ts","../src/cmds/ca-certificate/describe.ts","../src/cmds/ca-certificate/index.ts","../src/cmds/ca-certificate/list.ts","../src/cmds/ca-certificate/update.ts","../src/cmds/custom-domain/create.ts","../src/cmds/custom-domain/delete.ts","../src/cmds/custom-domain/index.ts","../src/cmds/custom-domain/list.ts","../src/cmds/custom-domain/update.ts","../src/cmds/mtls-certificates/create.ts","../src/cmds/mtls-certificates/delete.ts","../src/cmds/mtls-certificates/describe.ts","../src/cmds/mtls-certificates/disable.ts","../src/cmds/mtls-certificates/index.ts","../src/cmds/mtls-certificates/list.ts","../src/cmds/mtls-certificates/update.ts","../src/cmds/open-api/convert.ts","../src/cmds/open-api/index.ts","../src/cmds/open-api/merge.ts","../src/cmds/open-api/overlay.ts","../src/cmds/project/create.ts","../src/cmds/project/index.ts","../src/cmds/project/info.ts","../src/cmds/project/list.ts","../src/cmds/proxies/create.ts","../src/cmds/proxies/delete.ts","../src/cmds/proxies/describe.ts","../src/cmds/proxies/index.ts","../src/cmds/proxies/update.ts","../src/cmds/source/import-openapi.ts","../src/cmds/source/index.ts","../src/cmds/source/migrate.ts","../src/cmds/source/upgrade.ts","../src/cmds/tunnel/create.ts","../src/cmds/tunnel/delete.ts","../src/cmds/tunnel/describe.ts","../src/cmds/tunnel/index.ts","../src/cmds/tunnel/list.ts","../src/cmds/tunnel/rotate-token.ts","../src/cmds/tunnel/services/describe.ts","../src/cmds/tunnel/services/index.ts","../src/cmds/tunnel/services/update.ts","../src/cmds/variable/create.ts","../src/cmds/variable/index.ts","../src/cmds/variable/update.ts","../src/common/alias.ts","../src/common/args.ts","../src/common/cli-dispatcher.test.ts","../src/common/cli-dispatcher.ts","../src/common/constants.ts","../src/common/handler.ts","../src/common/logger.ts","../src/common/models.ts","../src/common/outdated.ts","../src/common/output.ts","../src/common/populate.ts","../src/common/read-linked-config.test.ts","../src/common/read-linked-config.ts","../src/common/runner.ts","../src/common/settings.ts","../src/common/terminal.test.ts","../src/common/terminal.ts","../src/common/worker-output.ts","../src/common/analytics/cli-invocation.test.ts","../src/common/analytics/cli-invocation.ts","../src/common/analytics/lib.ts","../src/common/analytics/package-manager.test.ts","../src/common/analytics/package-manager.ts","../src/common/api/client.ts","../src/common/api/lib.ts","../src/common/machine-id/lib.ts","../src/common/middleware/authentication.ts","../src/common/middleware/check-pnpm-lifecycle.test.ts","../src/common/middleware/check-pnpm-lifecycle.ts","../src/common/middleware/confirm-linked-config.ts","../src/common/middleware/confirm-production-deploy.ts","../src/common/middleware/get-account-param.ts","../src/common/middleware/get-environment-param.test.ts","../src/common/middleware/get-environment-param.ts","../src/common/middleware/get-project-param.ts","../src/common/middleware/logging.ts","../src/common/middleware/user-configuration.ts","../src/common/middleware/user-identification.ts","../src/common/middleware/validate-fleet.ts","../src/common/upgraders/lib.ts","../src/common/upgraders/package-json-upgrader.ts","../src/common/upgraders/tsconfig-upgrader.ts","../src/common/upgraders/vscode-settings-json-upgrader.ts","../src/common/utils/box.ts","../src/common/utils/branch.ts","../src/common/utils/build-environment-prompt-choices.test.ts","../src/common/utils/build-environment-prompt-choices.ts","../src/common/utils/format-environment-type.test.ts","../src/common/utils/format-environment-type.ts","../src/common/utils/pnpm-lifecycle.test.ts","../src/common/utils/pnpm-lifecycle.ts","../src/common/utils/ports.ts","../src/common/utils/prefixed-output.ts","../src/common/utils/pretty-print-environment-prompt.test.ts","../src/common/utils/pretty-print-environment-prompt.ts","../src/common/utils/sort-environments-for-prompt.test.ts","../src/common/utils/sort-environments-for-prompt.ts","../src/common/utils/stringify-config.test.ts","../src/common/utils/stringify-config.ts","../src/common/utils/types.ts","../src/common/utils/urls.ts","../src/common/validators/argument-validators.spec.ts","../src/common/validators/argument-validators.ts","../src/common/validators/file-system-validator.ts","../src/common/validators/lib.ts","../src/common/validators/project-name-validator.ts","../src/common/xdg/lib.ts","../src/compile/handler.ts","../src/custom-domain/models.ts","../src/custom-domain/create/handler.ts","../src/custom-domain/delete/handler.ts","../src/custom-domain/list/handler.ts","../src/custom-domain/update/handler.ts","../src/delete/handler.ts","../src/delete/poll-deployment.ts","../src/deploy/archive.local-registry.test.ts","../src/deploy/archive.test.ts","../src/deploy/archive.ts","../src/deploy/environments.ts","../src/deploy/file-upload.ts","../src/deploy/handler.ts","../src/deploy/poll-deployment.ts","../src/dev/handler.ts","../src/docs/handler.ts","../src/editor/handler.ts","../src/editor/e2e/editor.spec.ts","../src/init/handler.ts","../src/link/handler.ts","../src/link/project-type.test.ts","../src/link/project-type.ts","../src/list/handler.ts","../src/login/login.ts","../src/login/logout.ts","../src/login/tokens.ts","../src/mtls-certificates/models.ts","../src/mtls-certificates/create/handler.ts","../src/mtls-certificates/delete/handler.ts","../src/mtls-certificates/describe/handler.ts","../src/mtls-certificates/disable/handler.ts","../src/mtls-certificates/list/handler.ts","../src/mtls-certificates/update/handler.ts","../src/open-api/convert/handler.spec.ts","../src/open-api/convert/handler.ts","../src/open-api/merge/handler.spec.ts","../src/open-api/merge/handler.ts","../src/open-api/overlay/handler.spec.ts","../src/open-api/overlay/handler.ts","../src/project/create/handler.ts","../src/project/info/handler.ts","../src/project/list/handler.ts","../src/proxies/models.ts","../src/proxies/create/handler.ts","../src/proxies/delete/handler.ts","../src/proxies/describe/handler.ts","../src/proxies/update/handler.ts","../src/source/migrate/dev-portal/handler.ts","../src/source/migrate/dev-portal/types.ts","../src/source/update/handler.ts","../src/test/esbuild-config.ts","../src/test/handler.ts","../src/test/invoke-test.ts","../src/test/test-files.test.ts","../src/test/test-files.ts","../src/test/esbuild-plugins/node-test-prep-plugin.ts","../src/tunnel/models.ts","../src/tunnel/create/handler.ts","../src/tunnel/delete/handler.ts","../src/tunnel/delete/poll-teardown-operation.ts","../src/tunnel/describe/handler.ts","../src/tunnel/list/handler.ts","../src/tunnel/rotate-token/handler.ts","../src/tunnel/services/describe/handler.ts","../src/tunnel/services/update/handler.ts","../src/tunnel/services/update/poll-provisioning-operations.ts","../src/variable/models.ts","../src/variable/create/handler.ts","../src/variable/update/handler.ts","../src/whoami/handler.ts"],"version":"5.8.2"}
|
|
@@ -118,9 +118,6 @@ Please note that certain algorithms may not be available depending on the runtim
|
|
|
118
118
|
| Version | Security Fixes 🔑 | Other Bug Fixes 🐞 | New Features ⭐ | Runtime and Module type |
|
|
119
119
|
| ----------------------------------------------- | ----------------- | ------------------ | --------------- | ------------------------------- |
|
|
120
120
|
| [v6.x](https://github.com/panva/jose/tree/v6.x) | [Security Policy] | ✅ | ✅ | Universal[^universal] ESM[^cjs] |
|
|
121
|
-
| [v5.x](https://github.com/panva/jose/tree/v5.x) | [Security Policy] | ❌ | ❌ | Universal[^universal] CJS + ESM |
|
|
122
|
-
| [v4.x](https://github.com/panva/jose/tree/v4.x) | [Security Policy] | ❌ | ❌ | Universal[^universal] CJS + ESM |
|
|
123
|
-
| [v2.x](https://github.com/panva/jose/tree/v2.x) | [Security Policy] | ❌ | ❌ | Node.js CJS |
|
|
124
121
|
|
|
125
122
|
## Specifications
|
|
126
123
|
|
|
@@ -137,7 +134,7 @@ Please note that certain algorithms may not be available depending on the runtim
|
|
|
137
134
|
- JWS Unencoded Payload Option - [RFC7797](https://www.rfc-editor.org/rfc/rfc7797)
|
|
138
135
|
- CFRG Elliptic Curve ECDH and Signatures - [RFC8037](https://www.rfc-editor.org/rfc/rfc8037)
|
|
139
136
|
- Fully-Specified Algorithms for JOSE - [RFC9864](https://www.rfc-editor.org/rfc/rfc9864.html)
|
|
140
|
-
- ML-DSA for JOSE - [
|
|
137
|
+
- ML-DSA for JOSE - [RFC9964](https://www.rfc-editor.org/rfc/rfc9964.html)
|
|
141
138
|
|
|
142
139
|
The algorithm implementations in `jose` have been tested using test vectors from their respective specifications as well as [RFC7520](https://www.rfc-editor.org/rfc/rfc7520).
|
|
143
140
|
|
package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/types/jwks/remote.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ import type * as types from '../types.d.ts';
|
|
|
45
45
|
*
|
|
46
46
|
* import * as undici from 'undici'
|
|
47
47
|
*
|
|
48
|
-
* // see https://undici.nodejs.org
|
|
48
|
+
* // see https://undici.nodejs.org/api/EnvHttpProxyAgent
|
|
49
49
|
* let envHttpProxyAgent = new undici.EnvHttpProxyAgent()
|
|
50
50
|
*
|
|
51
51
|
* // @ts-ignore
|
|
@@ -59,7 +59,7 @@ import type * as types from '../types.d.ts';
|
|
|
59
59
|
*
|
|
60
60
|
* import * as undici from 'undici'
|
|
61
61
|
*
|
|
62
|
-
* // see https://undici.nodejs.org
|
|
62
|
+
* // see https://undici.nodejs.org/api/RetryAgent
|
|
63
63
|
* let retryAgent = new undici.RetryAgent(new undici.Agent(), {
|
|
64
64
|
* statusCodes: [],
|
|
65
65
|
* errorCodes: [
|
|
@@ -84,7 +84,7 @@ import type * as types from '../types.d.ts';
|
|
|
84
84
|
*
|
|
85
85
|
* import * as undici from 'undici'
|
|
86
86
|
*
|
|
87
|
-
* // see https://undici.nodejs.org
|
|
87
|
+
* // see https://undici.nodejs.org/api/MockAgent
|
|
88
88
|
* let mockAgent = new undici.MockAgent()
|
|
89
89
|
* mockAgent.disableNetConnect()
|
|
90
90
|
*
|
|
@@ -9,7 +9,7 @@ function isCloudflareWorkers() {
|
|
|
9
9
|
let USER_AGENT;
|
|
10
10
|
if (typeof navigator === 'undefined' || !navigator.userAgent?.startsWith?.('Mozilla/5.0 ')) {
|
|
11
11
|
const NAME = 'jose';
|
|
12
|
-
const VERSION = 'v6.2.
|
|
12
|
+
const VERSION = 'v6.2.4';
|
|
13
13
|
USER_AGENT = `${NAME}/${VERSION}`;
|
|
14
14
|
}
|
|
15
15
|
export const customFetch = Symbol();
|
package/node_modules/@modelcontextprotocol/sdk/node_modules/jose/dist/webapi/lib/key_to_jwk.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { invalidKeyInput } from './invalid_key_input.js';
|
|
2
2
|
import { encode as b64u } from '../util/base64url.js';
|
|
3
3
|
import { isCryptoKey, isKeyObject } from './is_key_like.js';
|
|
4
|
+
function omitUndefinedProperties(jwk) {
|
|
5
|
+
return Object.fromEntries(Object.entries(jwk).filter(([, value]) => value !== undefined));
|
|
6
|
+
}
|
|
4
7
|
export async function keyToJWK(key) {
|
|
5
8
|
if (isKeyObject(key)) {
|
|
6
9
|
if (key.type === 'secret') {
|
|
@@ -22,7 +25,7 @@ export async function keyToJWK(key) {
|
|
|
22
25
|
if (!key.extractable) {
|
|
23
26
|
throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');
|
|
24
27
|
}
|
|
25
|
-
const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);
|
|
28
|
+
const { ext, key_ops, alg, use, ...jwk } = omitUndefinedProperties(await crypto.subtle.exportKey('jwk', key));
|
|
26
29
|
if (jwk.kty === 'AKP') {
|
|
27
30
|
;
|
|
28
31
|
jwk.alg = alg;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/error-tracking/parsers/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;AAUpD,eAAO,MAAM,mBAAmB,EAAE,eAiFjC,CAAA"}
|
|
@@ -29,6 +29,9 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
const external_base_js_namespaceObject = require("./base.js");
|
|
30
30
|
const FILENAME_MATCH = /^\s*[-]{4,}$/;
|
|
31
31
|
const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
|
|
32
|
+
const PROMISE_COMBINATOR = /^Promise\.(?:all|any)$/;
|
|
33
|
+
const PROMISE_INDEX = /^index \d+$/;
|
|
34
|
+
const PROMISE_FRAME_FILENAME = 'node:internal/promise';
|
|
32
35
|
const nodeStackLineParser = (line, platform)=>{
|
|
33
36
|
const lineMatch = line.match(FULL_MATCH);
|
|
34
37
|
if (lineMatch) {
|
|
@@ -68,6 +71,7 @@ const nodeStackLineParser = (line, platform)=>{
|
|
|
68
71
|
const isNative = 'native' === lineMatch[5];
|
|
69
72
|
if (filename?.match(/\/[A-Z]:/)) filename = filename.slice(1);
|
|
70
73
|
if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];
|
|
74
|
+
if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;
|
|
71
75
|
return {
|
|
72
76
|
filename: filename ? decodeURI(filename) : void 0,
|
|
73
77
|
module: void 0,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { UNKNOWN_FUNCTION } from "./base.mjs";
|
|
2
2
|
const FILENAME_MATCH = /^\s*[-]{4,}$/;
|
|
3
3
|
const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;
|
|
4
|
+
const PROMISE_COMBINATOR = /^Promise\.(?:all|any)$/;
|
|
5
|
+
const PROMISE_INDEX = /^index \d+$/;
|
|
6
|
+
const PROMISE_FRAME_FILENAME = 'node:internal/promise';
|
|
4
7
|
const nodeStackLineParser = (line, platform)=>{
|
|
5
8
|
const lineMatch = line.match(FULL_MATCH);
|
|
6
9
|
if (lineMatch) {
|
|
@@ -40,6 +43,7 @@ const nodeStackLineParser = (line, platform)=>{
|
|
|
40
43
|
const isNative = 'native' === lineMatch[5];
|
|
41
44
|
if (filename?.match(/\/[A-Z]:/)) filename = filename.slice(1);
|
|
42
45
|
if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];
|
|
46
|
+
if (PROMISE_COMBINATOR.test(functionName) && PROMISE_INDEX.test(filename || '')) filename = PROMISE_FRAME_FILENAME;
|
|
43
47
|
return {
|
|
44
48
|
filename: filename ? decodeURI(filename) : void 0,
|
|
45
49
|
module: void 0,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PostHogAutocaptureElement, PostHogFlagsResponse, PostHogFeatureFlagsResponse, PostHogCoreOptions, PostHogEventProperties, PostHogCaptureOptions, JsonType, PostHogRemoteConfig, FeatureFlagValue, FeatureFlagResult, FeatureFlagResultOptions, PostHogFeatureFlagDetails, PostHogGroupProperties } from './types';
|
|
1
|
+
import type { PostHogAutocaptureElement, PostHogFlagsResponse, PostHogFeatureFlagsResponse, PostHogCoreOptions, PostHogEventProperties, PostHogCaptureOptions, JsonType, PostHogRemoteConfig, FeatureFlagValue, FeatureFlagResult, FeatureFlagResultOptions, IsFeatureEnabledOptions, PostHogFeatureFlagDetails, PostHogGroupProperties } from './types';
|
|
2
2
|
import { PostHogPersistedProperty } from './types';
|
|
3
3
|
import { PostHogCoreStateless } from './posthog-core-stateless';
|
|
4
4
|
import { EventHint } from './error-tracking';
|
|
@@ -168,7 +168,10 @@ export declare abstract class PostHogCore extends PostHogCoreStateless {
|
|
|
168
168
|
flags: PostHogFlagsResponse['featureFlags'] | undefined;
|
|
169
169
|
payloads: PostHogFlagsResponse['featureFlagPayloads'] | undefined;
|
|
170
170
|
};
|
|
171
|
-
isFeatureEnabled(key: string, options
|
|
171
|
+
isFeatureEnabled(key: string, options: IsFeatureEnabledOptions & {
|
|
172
|
+
defaultValue: boolean;
|
|
173
|
+
}): boolean;
|
|
174
|
+
isFeatureEnabled(key: string, options?: IsFeatureEnabledOptions): boolean | undefined;
|
|
172
175
|
reloadFeatureFlags(options?: {
|
|
173
176
|
cb?: (err?: Error, flags?: PostHogFlagsResponse['featureFlags']) => void;
|
|
174
177
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"posthog-core.d.ts","sourceRoot":"","sources":["../src/posthog-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -666,9 +666,15 @@ class PostHogCore extends external_posthog_core_stateless_js_namespaceObject.Pos
|
|
|
666
666
|
};
|
|
667
667
|
}
|
|
668
668
|
isFeatureEnabled(key, options) {
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
669
|
+
if (options?.defaultValue === void 0) {
|
|
670
|
+
const response = this.getFeatureFlag(key, options);
|
|
671
|
+
return void 0 === response ? void 0 : !!response;
|
|
672
|
+
}
|
|
673
|
+
const result = this._getFeatureFlagResult(key, {
|
|
674
|
+
sendEvent: options.sendEvent
|
|
675
|
+
});
|
|
676
|
+
const value = result?.variant ?? result?.enabled;
|
|
677
|
+
return void 0 === value ? options.defaultValue : !!value;
|
|
672
678
|
}
|
|
673
679
|
reloadFeatureFlags(options) {
|
|
674
680
|
if (this.disableRemoteFeatureFlags && !this.disabled) return void this._initPromise.then(()=>options?.cb?.(void 0, this.getFeatureFlags()));
|
|
@@ -638,9 +638,15 @@ class PostHogCore extends PostHogCoreStateless {
|
|
|
638
638
|
};
|
|
639
639
|
}
|
|
640
640
|
isFeatureEnabled(key, options) {
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
641
|
+
if (options?.defaultValue === void 0) {
|
|
642
|
+
const response = this.getFeatureFlag(key, options);
|
|
643
|
+
return void 0 === response ? void 0 : !!response;
|
|
644
|
+
}
|
|
645
|
+
const result = this._getFeatureFlagResult(key, {
|
|
646
|
+
sendEvent: options.sendEvent
|
|
647
|
+
});
|
|
648
|
+
const value = result?.variant ?? result?.enabled;
|
|
649
|
+
return void 0 === value ? options.defaultValue : !!value;
|
|
644
650
|
}
|
|
645
651
|
reloadFeatureFlags(options) {
|
|
646
652
|
if (this.disableRemoteFeatureFlags && !this.disabled) return void this._initPromise.then(()=>options?.cb?.(void 0, this.getFeatureFlags()));
|
|
@@ -392,6 +392,10 @@ export type FeatureFlagResultOptions = {
|
|
|
392
392
|
/** Whether to send a $feature_flag_called event. Defaults to true. */
|
|
393
393
|
sendEvent?: boolean;
|
|
394
394
|
};
|
|
395
|
+
export type IsFeatureEnabledOptions = FeatureFlagResultOptions & {
|
|
396
|
+
/** Value to return when the flag has no value, e.g. flags have not loaded yet or no flag with that key exists. */
|
|
397
|
+
defaultValue?: boolean;
|
|
398
|
+
};
|
|
395
399
|
export type PostHogFlagsResponse = Omit<PostHogRemoteConfig, 'hasFeatureFlags'> & {
|
|
396
400
|
featureFlags: {
|
|
397
401
|
[key: string]: FeatureFlagValue;
|