@replicated/portal-components 0.0.11 → 0.0.13
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/components/metadata/registry.json +2 -2
- package/components/metadata/registry.md +2 -2
- package/datadog/tracer.d.ts +3 -0
- package/datadog/tracer.js +82 -0
- package/datadog/tracer.ts +101 -0
- package/dist/actions/index.d.mts +26 -4
- package/dist/actions/index.d.ts +26 -4
- package/dist/actions/index.js +171 -124
- package/dist/actions/index.js.map +1 -1
- package/dist/airgap-instances.js.map +1 -1
- package/dist/esm/actions/index.js +170 -124
- package/dist/esm/actions/index.js.map +1 -1
- package/dist/esm/airgap-instances.js.map +1 -1
- package/dist/esm/helm-install-wizard.js +15 -9
- package/dist/esm/helm-install-wizard.js.map +1 -1
- package/dist/esm/index.js +204 -158
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/install-actions.js +42 -47
- package/dist/esm/install-actions.js.map +1 -1
- package/dist/esm/install-card.js +8 -21
- package/dist/esm/install-card.js.map +1 -1
- package/dist/esm/instance-card.js.map +1 -1
- package/dist/esm/license-card.js +8 -12
- package/dist/esm/license-card.js.map +1 -1
- package/dist/esm/license-details.js +21 -11
- package/dist/esm/license-details.js.map +1 -1
- package/dist/esm/linux-install-wizard.js +26 -47
- package/dist/esm/linux-install-wizard.js.map +1 -1
- package/dist/esm/online-instance-list.js.map +1 -1
- package/dist/esm/support-card.js +22 -55
- package/dist/esm/support-card.js.map +1 -1
- package/dist/esm/team-settings-card.js +8 -13
- package/dist/esm/team-settings-card.js.map +1 -1
- package/dist/esm/top-nav.js +69 -47
- package/dist/esm/top-nav.js.map +1 -1
- package/dist/esm/update-layout.js +69 -47
- package/dist/esm/update-layout.js.map +1 -1
- package/dist/esm/updates-card.js +8 -14
- package/dist/esm/updates-card.js.map +1 -1
- package/dist/esm/utils/index.js +14 -10
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/observability/index.js +193 -0
- package/dist/esm/utils/observability/index.js.map +1 -0
- package/dist/helm-install-wizard.js +15 -9
- package/dist/helm-install-wizard.js.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +203 -156
- package/dist/index.js.map +1 -1
- package/dist/install-actions.js +43 -48
- package/dist/install-actions.js.map +1 -1
- package/dist/install-card.js +8 -21
- package/dist/install-card.js.map +1 -1
- package/dist/instance-card.js.map +1 -1
- package/dist/license-card.js +8 -12
- package/dist/license-card.js.map +1 -1
- package/dist/license-details.js +21 -11
- package/dist/license-details.js.map +1 -1
- package/dist/linux-install-wizard.js +26 -47
- package/dist/linux-install-wizard.js.map +1 -1
- package/dist/online-instance-list.js.map +1 -1
- package/dist/styles.css +2 -2
- package/dist/support-card.js +22 -55
- package/dist/support-card.js.map +1 -1
- package/dist/team-settings-card.js +8 -13
- package/dist/team-settings-card.js.map +1 -1
- package/dist/top-nav.js +69 -47
- package/dist/top-nav.js.map +1 -1
- package/dist/update-layout.js +69 -47
- package/dist/update-layout.js.map +1 -1
- package/dist/updates-card.js +8 -14
- package/dist/updates-card.js.map +1 -1
- package/dist/utils/index.js +14 -10
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/observability/index.d.mts +13 -0
- package/dist/utils/observability/index.d.ts +13 -0
- package/dist/utils/observability/index.js +198 -0
- package/dist/utils/observability/index.js.map +1 -0
- package/instrumentation.d.ts +8 -0
- package/instrumentation.js +22 -0
- package/package.json +16 -3
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Portal Components
|
|
3
|
+
* This file is generated by tsup. Do not edit manually.
|
|
4
|
+
*/
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
10
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
11
|
+
}) : x)(function(x) {
|
|
12
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
13
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
14
|
+
});
|
|
15
|
+
var __esm = (fn, res) => function __init() {
|
|
16
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
17
|
+
};
|
|
18
|
+
var __export = (target, all) => {
|
|
19
|
+
for (var name in all)
|
|
20
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
+
};
|
|
22
|
+
var __copyProps = (to, from, except, desc) => {
|
|
23
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(from))
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
}
|
|
28
|
+
return to;
|
|
29
|
+
};
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
31
|
+
|
|
32
|
+
// datadog/tracer.ts
|
|
33
|
+
var tracer_exports = {};
|
|
34
|
+
__export(tracer_exports, {
|
|
35
|
+
default: () => tracer_default
|
|
36
|
+
});
|
|
37
|
+
var rawFlag, isEnabled, tracer, getRoutePattern, tracer_default;
|
|
38
|
+
var init_tracer = __esm({
|
|
39
|
+
"datadog/tracer.ts"() {
|
|
40
|
+
rawFlag = String(process.env.USE_DATADOG_APM || "").toLowerCase();
|
|
41
|
+
isEnabled = rawFlag === "true";
|
|
42
|
+
process.env.DD_TRACE_ENABLED = isEnabled ? "1" : "0";
|
|
43
|
+
tracer = null;
|
|
44
|
+
if (isEnabled) {
|
|
45
|
+
const serviceName = process.env.DD_SERVICE || "enterprise-portal";
|
|
46
|
+
const environment = process.env.DD_ENV || process.env.NODE_ENV || "development";
|
|
47
|
+
const version = process.env.DD_VERSION || process.env.NEXT_PUBLIC_VERSION || "0.0.0-dev";
|
|
48
|
+
const agentHost = process.env.DD_AGENT_HOST || process.env.DATADOG_AGENT_HOST || "127.0.0.1";
|
|
49
|
+
const agentPort = process.env.DD_TRACE_AGENT_PORT || "8126";
|
|
50
|
+
process.env.DD_SERVICE = serviceName;
|
|
51
|
+
process.env.DD_ENV = environment;
|
|
52
|
+
{
|
|
53
|
+
process.env.DD_VERSION = version;
|
|
54
|
+
}
|
|
55
|
+
process.env.DD_AGENT_HOST = agentHost;
|
|
56
|
+
process.env.DD_TRACE_AGENT_PORT = agentPort;
|
|
57
|
+
const dbmPropagationMode = process.env.DD_DBM_PROPAGATION_MODE || "full";
|
|
58
|
+
process.env.DD_DBM_PROPAGATION_MODE = dbmPropagationMode;
|
|
59
|
+
try {
|
|
60
|
+
const ddTrace = __require("dd-trace");
|
|
61
|
+
tracer = ddTrace.init({
|
|
62
|
+
service: serviceName,
|
|
63
|
+
env: environment,
|
|
64
|
+
version,
|
|
65
|
+
logInjection: true,
|
|
66
|
+
runtimeMetrics: true,
|
|
67
|
+
appsec: false,
|
|
68
|
+
profiling: false,
|
|
69
|
+
startupLogs: true
|
|
70
|
+
// Enable for debugging
|
|
71
|
+
});
|
|
72
|
+
console.log(`[datadog] Tracer initialized: service=${serviceName}, env=${environment}, version=${version}, agent=${agentHost}:${agentPort}`);
|
|
73
|
+
tracer.use("dns", false);
|
|
74
|
+
tracer.use("net", false);
|
|
75
|
+
tracer.use("http", {
|
|
76
|
+
server: {
|
|
77
|
+
hooks: {
|
|
78
|
+
request: (span, req) => {
|
|
79
|
+
if (!span) return;
|
|
80
|
+
const url = req?.url || "";
|
|
81
|
+
const method = req?.method || "GET";
|
|
82
|
+
const path = url.split("?")[0];
|
|
83
|
+
if (path.startsWith("/_next/")) {
|
|
84
|
+
span.context()._trace.isRecording = false;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const routePattern = getRoutePattern(path);
|
|
88
|
+
span.setTag("resource.name", `${method} ${routePattern}`);
|
|
89
|
+
span.setTag("http.route", routePattern);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
} catch (err) {
|
|
95
|
+
console.error("[datadog] failed to initialize tracing", err);
|
|
96
|
+
tracer = null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getRoutePattern = (path) => {
|
|
100
|
+
const routePatterns = [
|
|
101
|
+
// Update instance routes - normalize dynamic segments (capture suffix to preserve sub-routes)
|
|
102
|
+
{ pattern: /^\/update\/instance\/[^/]+(.*)$/, replacement: "/update/instance/[instanceId]$1" }
|
|
103
|
+
];
|
|
104
|
+
for (const { pattern, replacement } of routePatterns) {
|
|
105
|
+
if (pattern.test(path)) {
|
|
106
|
+
return path.replace(pattern, replacement);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return path;
|
|
110
|
+
};
|
|
111
|
+
tracer_default = tracer;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// src/utils/observability/tracing.ts
|
|
116
|
+
var tracerCache = void 0;
|
|
117
|
+
function getTracer() {
|
|
118
|
+
if (tracerCache !== void 0) {
|
|
119
|
+
return tracerCache;
|
|
120
|
+
}
|
|
121
|
+
const rawFlag2 = String(process.env.USE_DATADOG_APM || "").toLowerCase();
|
|
122
|
+
const isEnabled2 = rawFlag2 === "true";
|
|
123
|
+
if (!isEnabled2) {
|
|
124
|
+
tracerCache = null;
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const tracerModule = (init_tracer(), __toCommonJS(tracer_exports));
|
|
129
|
+
const tracer2 = tracerModule.default || tracerModule;
|
|
130
|
+
if (tracer2 && typeof tracer2.trace === "function") {
|
|
131
|
+
tracerCache = tracer2;
|
|
132
|
+
return tracerCache;
|
|
133
|
+
}
|
|
134
|
+
} catch (err) {
|
|
135
|
+
console.warn("Failed to load tracer:", err);
|
|
136
|
+
}
|
|
137
|
+
tracerCache = null;
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
function getActiveSpan() {
|
|
141
|
+
const activeTracer = getTracer();
|
|
142
|
+
if (!activeTracer || !activeTracer.scope) {
|
|
143
|
+
return void 0;
|
|
144
|
+
}
|
|
145
|
+
const active = activeTracer.scope().active();
|
|
146
|
+
return active || void 0;
|
|
147
|
+
}
|
|
148
|
+
async function withTrace(name, fn) {
|
|
149
|
+
const activeTracer = getTracer();
|
|
150
|
+
if (!activeTracer) {
|
|
151
|
+
return fn(void 0);
|
|
152
|
+
}
|
|
153
|
+
return activeTracer.trace(name, async (span) => {
|
|
154
|
+
if (span) {
|
|
155
|
+
span.setTag("component", "application");
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const result = await fn(span);
|
|
159
|
+
return result;
|
|
160
|
+
} catch (error) {
|
|
161
|
+
if (span) {
|
|
162
|
+
span.setTag("error", error);
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function traceServerAction(name, fn) {
|
|
169
|
+
const spanName = name.startsWith("server.action.") ? name : `server.action.${name}`;
|
|
170
|
+
const traced = async (...args) => {
|
|
171
|
+
return withTrace(spanName, async (span) => {
|
|
172
|
+
if (span) {
|
|
173
|
+
span.setTag("component", "server-action");
|
|
174
|
+
}
|
|
175
|
+
const result = await fn(...args);
|
|
176
|
+
return result;
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
return traced;
|
|
180
|
+
}
|
|
181
|
+
function traceFunction(name, fn) {
|
|
182
|
+
const traced = async (...args) => {
|
|
183
|
+
return withTrace(name, async () => {
|
|
184
|
+
const result = await fn(...args);
|
|
185
|
+
return result;
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
return traced;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export { getActiveSpan, traceFunction, traceServerAction, withTrace };
|
|
192
|
+
//# sourceMappingURL=index.js.map
|
|
193
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../datadog/tracer.ts","../../../../src/utils/observability/tracing.ts"],"names":["rawFlag","isEnabled","tracer"],"mappings":"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","file":"index.js","sourcesContent":["import type { Tracer, Span, init as ddTraceInit } from 'dd-trace';\nimport type { IncomingMessage } from 'http';\n\nconst rawFlag = String(process.env.USE_DATADOG_APM || '').toLowerCase();\nconst isEnabled = rawFlag === 'true';\n\nprocess.env.DD_TRACE_ENABLED = isEnabled ? '1' : '0';\n\nlet tracer: Tracer | null = null;\n\nif (isEnabled) {\n const serviceName = process.env.DD_SERVICE || 'enterprise-portal';\n const environment = process.env.DD_ENV || process.env.NODE_ENV || 'development';\n const version = process.env.DD_VERSION || process.env.NEXT_PUBLIC_VERSION || '0.0.0-dev';\n\n const agentHost = process.env.DD_AGENT_HOST || process.env.DATADOG_AGENT_HOST || '127.0.0.1';\n const agentPort = process.env.DD_TRACE_AGENT_PORT || '8126';\n\n process.env.DD_SERVICE = serviceName;\n process.env.DD_ENV = environment;\n if (version) {\n process.env.DD_VERSION = version;\n }\n process.env.DD_AGENT_HOST = agentHost;\n process.env.DD_TRACE_AGENT_PORT = agentPort;\n\n const dbmPropagationMode = (process.env.DD_DBM_PROPAGATION_MODE || 'full') as 'disabled' | 'service' | 'full';\n\n process.env.DD_DBM_PROPAGATION_MODE = dbmPropagationMode;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const ddTrace = require('dd-trace');\n tracer = (ddTrace.init as typeof ddTraceInit)({\n service: serviceName,\n env: environment,\n version,\n logInjection: true,\n runtimeMetrics: true,\n appsec: false,\n profiling: false,\n startupLogs: true, // Enable for debugging\n }) as Tracer;\n \n console.log(`[datadog] Tracer initialized: service=${serviceName}, env=${environment}, version=${version}, agent=${agentHost}:${agentPort}`);\n\n // Disable low-level network instrumentation for localhost connections\n tracer.use('dns', false);\n tracer.use('net', false);\n // Configure http plugin to normalize route patterns\n tracer.use('http', {\n server: {\n hooks: {\n request: (span?: Span, req?: IncomingMessage) => {\n if (!span) return;\n\n const url = req?.url || '';\n const method = req?.method || 'GET';\n const path = url.split('?')[0];\n\n // Drop Next.js internal requests\n if (path.startsWith('/_next/')) {\n // @ts-expect-error - using internal property to drop the trace\n span.context()._trace.isRecording = false;\n return;\n }\n\n const routePattern = getRoutePattern(path);\n\n span.setTag('resource.name', `${method} ${routePattern}`);\n span.setTag('http.route', routePattern);\n }\n }\n }\n });\n } catch (err) {\n // Do not crash the app if tracing fails to initialize\n console.error('[datadog] failed to initialize tracing', err);\n tracer = null;\n }\n}\n\n// Function to convert actual paths to route patterns\nconst getRoutePattern = (path: string): string => {\n // Define route patterns for dynamic routes in enterprise portal\n const routePatterns = [\n // Update instance routes - normalize dynamic segments (capture suffix to preserve sub-routes)\n { pattern: /^\\/update\\/instance\\/[^/]+(.*)$/, replacement: '/update/instance/[instanceId]$1' },\n ];\n\n for (const { pattern, replacement } of routePatterns) {\n if (pattern.test(path)) {\n return path.replace(pattern, replacement);\n }\n }\n\n // Return original path if no pattern matches\n return path;\n}\n\nexport default tracer;\n","import type { Span, Tracer } from 'dd-trace';\n\n// Type for a function that has been wrapped with tracing (always returns a Promise)\ntype TracedFunction<T extends (...args: any[]) => any> = (\n ...args: Parameters<T>\n) => Promise<Awaited<ReturnType<T>>>;\n\n// Lazy-load tracer only when tracing is enabled\n// Using undefined to distinguish between \"not loaded yet\" and \"loaded but null\"\nlet tracerCache: Tracer | null | undefined = undefined;\n\nfunction getTracer(): Tracer | null {\n // Return cached result if already loaded (prevents race conditions and multiple initializations)\n if (tracerCache !== undefined) {\n return tracerCache;\n }\n\n // Check if tracing is enabled at runtime (consistent with datadog/tracer.ts and instrumentation.ts)\n const rawFlag = String(process.env.USE_DATADOG_APM || '').toLowerCase();\n const isEnabled = rawFlag === 'true';\n\n if (!isEnabled) {\n tracerCache = null;\n return null;\n }\n\n // Lazy load the tracer module only when needed\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const tracerModule = require('../../../datadog/tracer');\n const tracer = tracerModule.default || tracerModule;\n\n if (tracer && typeof (tracer as any).trace === 'function') {\n tracerCache = tracer as Tracer;\n return tracerCache;\n }\n } catch (err) {\n console.warn('Failed to load tracer:', err);\n }\n\n tracerCache = null;\n return null;\n}\n\n/**\n * Get the currently active span from the tracer's scope.\n * This can be used to pass span context to database calls.\n */\nexport function getActiveSpan(): Span | undefined {\n const activeTracer = getTracer();\n if (!activeTracer || !activeTracer.scope) {\n return undefined;\n }\n const active = activeTracer.scope().active();\n return active || undefined;\n}\n\nexport async function withTrace<T>(\n name: string,\n fn: (span?: Span) => Promise<T> | T,\n): Promise<T> {\n const activeTracer = getTracer();\n if (!activeTracer) {\n return fn(undefined);\n }\n\n return activeTracer.trace(name, async (span?: Span) => {\n if (span) {\n span.setTag('component', 'application');\n }\n try {\n const result = await fn(span);\n return result;\n } catch (error) {\n if (span) {\n span.setTag('error', error as any);\n }\n throw error;\n }\n });\n}\n\nexport function traceServerAction<T extends (...args: any[]) => any>(\n name: string,\n fn: T,\n): TracedFunction<T> {\n const spanName = name.startsWith('server.action.') ? name : `server.action.${name}`;\n\n const traced: TracedFunction<T> = async (...args: Parameters<T>) => {\n return withTrace(spanName, async (span) => {\n if (span) {\n span.setTag('component', 'server-action');\n }\n const result = await fn(...args);\n return result;\n });\n };\n\n return traced;\n}\n\nexport function traceFunction<T extends (...args: any[]) => any>(\n name: string,\n fn: T,\n): TracedFunction<T> {\n const traced: TracedFunction<T> = async (...args: Parameters<T>) => {\n return withTrace(name, async () => {\n const result = await fn(...args);\n return result;\n });\n };\n\n return traced;\n}\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var react = require('react');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var buffer = require('buffer');
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Enterprise Portal Components
|
|
@@ -943,10 +944,10 @@ var createServiceAccount = defineServerAction({
|
|
|
943
944
|
if (!name || typeof name !== "string" || !name.trim()) {
|
|
944
945
|
throw new Error("Service account name is required");
|
|
945
946
|
}
|
|
946
|
-
const endpoint = `${getApiOrigin()}/
|
|
947
|
+
const endpoint = `${getApiOrigin()}/enterprise-portal/team/service-accounts`;
|
|
947
948
|
if (process.env.NODE_ENV !== "production") {
|
|
948
949
|
console.debug(
|
|
949
|
-
"[portal-components] creating service account via %s",
|
|
950
|
+
"[portal-components] creating service account via %s (Enterprise Portal API)",
|
|
950
951
|
endpoint
|
|
951
952
|
);
|
|
952
953
|
}
|
|
@@ -973,12 +974,12 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
973
974
|
if (!appSlug) {
|
|
974
975
|
throw new Error("PORTAL_APP_SLUG is not configured");
|
|
975
976
|
}
|
|
976
|
-
const url = `${getApiOrigin()}/
|
|
977
|
+
const url = `${getApiOrigin()}/enterprise-portal/public/branding?app_slug=${encodeURIComponent(
|
|
977
978
|
appSlug
|
|
978
979
|
)}`;
|
|
979
980
|
if (process.env.NODE_ENV !== "production") {
|
|
980
981
|
console.debug(
|
|
981
|
-
"[portal-components] fetching custom branding via %s",
|
|
982
|
+
"[portal-components] fetching custom branding via %s (Enterprise Portal API)",
|
|
982
983
|
url
|
|
983
984
|
);
|
|
984
985
|
}
|
|
@@ -993,13 +994,18 @@ var fetchCustomBrandingImpl = async () => {
|
|
|
993
994
|
);
|
|
994
995
|
}
|
|
995
996
|
const payload = await response.json();
|
|
996
|
-
const
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
997
|
+
const brandingObject = {
|
|
998
|
+
logo: payload.logoUrl,
|
|
999
|
+
title: payload.appName,
|
|
1000
|
+
customColor1: payload.primaryColor,
|
|
1001
|
+
customColor2: payload.secondaryColor,
|
|
1002
|
+
favicon: payload.faviconUrl
|
|
1003
|
+
};
|
|
1004
|
+
const brandingData = buffer.Buffer.from(JSON.stringify(brandingObject)).toString("base64");
|
|
1000
1005
|
return {
|
|
1001
1006
|
brandingData,
|
|
1002
|
-
documentation:
|
|
1007
|
+
documentation: null
|
|
1008
|
+
// Documentation not included in new API's public endpoint
|
|
1003
1009
|
};
|
|
1004
1010
|
};
|
|
1005
1011
|
react.cache(fetchCustomBrandingImpl);
|