@dbx-tools/shared-generator 0.9.163 → 0.9.165
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/index.ts +3 -3
- package/lib/index.d.ts +3 -3
- package/lib/index.js +3 -3
- package/lib/src/brand.d.ts +161 -0
- package/lib/src/brand.js +35 -1
- package/package.json +2 -2
- package/src/brand.ts +43 -0
package/index.ts
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.165";
|
|
7
7
|
export * as brand from "./src/brand.ts";
|
|
8
8
|
export * as kpi from "./src/kpi.ts";
|
|
9
9
|
export * as workflow from "./src/workflow.ts";
|
|
10
|
-
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, GeneratorPluginClient } from "./src/brand.ts";
|
|
11
|
-
export type { BrandGenerationRequest, BrandPackageSource, BrandVisualImage, BrandVisualReference, BrandPackage, BrandGenerationStage, BrandGenerationProgressEvent, BrandGenerationResultEvent, BrandGenerationErrorEvent, BrandGenerationEvent, GeneratorClientConfig, BrandGenerationStreamOptions } from "./src/brand.ts";
|
|
10
|
+
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandHistoryEntrySchema, BrandHistoryResponseSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, brandHistoryUrl, GeneratorPluginClient } from "./src/brand.ts";
|
|
11
|
+
export type { BrandGenerationRequest, BrandPackageSource, BrandVisualImage, BrandVisualReference, BrandPackage, BrandHistoryEntry, BrandHistoryResponse, BrandGenerationStage, BrandGenerationProgressEvent, BrandGenerationResultEvent, BrandGenerationErrorEvent, BrandGenerationEvent, GeneratorClientConfig, BrandGenerationStreamOptions } from "./src/brand.ts";
|
|
12
12
|
export { ResearchedKpiSchema, KpiResearchRequestSchema, KpiResearchResultSchema } from "./src/kpi.ts";
|
|
13
13
|
export type { ResearchedKpi, KpiResearchRequest, KpiResearchResult } from "./src/kpi.ts";
|
|
14
14
|
export { PresentationModeSchema, GeneratorRequestSchema, GeneratedColumnSchema, GeneratedMetricSchema, GeneratorPlanSchema, PlanGeneratorDataRequestSchema, GeneratedSchemaSchema, ProvisionGeneratorSchemaRequestSchema, MaterializeGeneratorDataRequestSchema, MaterializedGeneratorDataSchema, CreateGeneratorPresentationRequestSchema, GeneratedDashboardSchema, GeneratedGenieSpaceSchema, GeneratedAssetsSchema } from "./src/workflow.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.165";
|
|
3
3
|
export * as brand from "./src/brand.ts";
|
|
4
4
|
export * as kpi from "./src/kpi.ts";
|
|
5
5
|
export * as workflow from "./src/workflow.ts";
|
|
6
|
-
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, GeneratorPluginClient } from "./src/brand.ts";
|
|
7
|
-
export type { BrandGenerationRequest, BrandPackageSource, BrandVisualImage, BrandVisualReference, BrandPackage, BrandGenerationStage, BrandGenerationProgressEvent, BrandGenerationResultEvent, BrandGenerationErrorEvent, BrandGenerationEvent, GeneratorClientConfig, BrandGenerationStreamOptions } from "./src/brand.ts";
|
|
6
|
+
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandHistoryEntrySchema, BrandHistoryResponseSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, brandHistoryUrl, GeneratorPluginClient } from "./src/brand.ts";
|
|
7
|
+
export type { BrandGenerationRequest, BrandPackageSource, BrandVisualImage, BrandVisualReference, BrandPackage, BrandHistoryEntry, BrandHistoryResponse, BrandGenerationStage, BrandGenerationProgressEvent, BrandGenerationResultEvent, BrandGenerationErrorEvent, BrandGenerationEvent, GeneratorClientConfig, BrandGenerationStreamOptions } from "./src/brand.ts";
|
|
8
8
|
export { ResearchedKpiSchema, KpiResearchRequestSchema, KpiResearchResultSchema } from "./src/kpi.ts";
|
|
9
9
|
export type { ResearchedKpi, KpiResearchRequest, KpiResearchResult } from "./src/kpi.ts";
|
|
10
10
|
export { PresentationModeSchema, GeneratorRequestSchema, GeneratedColumnSchema, GeneratedMetricSchema, GeneratorPlanSchema, PlanGeneratorDataRequestSchema, GeneratedSchemaSchema, ProvisionGeneratorSchemaRequestSchema, MaterializeGeneratorDataRequestSchema, MaterializedGeneratorDataSchema, CreateGeneratorPresentationRequestSchema, GeneratedDashboardSchema, GeneratedGenieSpaceSchema, GeneratedAssetsSchema } from "./src/workflow.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-generator";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.165";
|
|
6
6
|
export * as brand from "./src/brand.js";
|
|
7
7
|
export * as kpi from "./src/kpi.js";
|
|
8
8
|
export * as workflow from "./src/workflow.js";
|
|
9
|
-
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, GeneratorPluginClient } from "./src/brand.js";
|
|
9
|
+
export { GENERATOR_PLUGIN_NAME, GENERATOR_BASE_PATH, GENERATOR_ROUTES, BrandGenerationRequestSchema, BrandPackageSourceSchema, BrandVisualImageSchema, BrandVisualReferenceSchema, BrandPackageSchema, BrandHistoryEntrySchema, BrandHistoryResponseSchema, BrandGenerationStageSchema, BrandGenerationProgressEventSchema, BrandGenerationResultEventSchema, BrandGenerationErrorEventSchema, BrandGenerationEventSchema, GeneratorClientConfigSchema, brandGenerateUrl, brandHistoryUrl, GeneratorPluginClient } from "./src/brand.js";
|
|
10
10
|
export { ResearchedKpiSchema, KpiResearchRequestSchema, KpiResearchResultSchema } from "./src/kpi.js";
|
|
11
11
|
export { PresentationModeSchema, GeneratorRequestSchema, GeneratedColumnSchema, GeneratedMetricSchema, GeneratorPlanSchema, PlanGeneratorDataRequestSchema, GeneratedSchemaSchema, ProvisionGeneratorSchemaRequestSchema, MaterializeGeneratorDataRequestSchema, MaterializedGeneratorDataSchema, CreateGeneratorPresentationRequestSchema, GeneratedDashboardSchema, GeneratedGenieSpaceSchema, GeneratedAssetsSchema } from "./src/workflow.js";
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLEVBQUUsa0NBQWtDLEVBQUUsZ0NBQWdDLEVBQUUsK0JBQStCLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFemdCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUscUJBQXFCLEVBQUUscUNBQXFDLEVBQUUscUNBQXFDLEVBQUUsK0JBQStCLEVBQUUsd0NBQXdDLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjE2NVwiO1xuZXhwb3J0ICogYXMgYnJhbmQgZnJvbSBcIi4vc3JjL2JyYW5kLnRzXCI7XG5leHBvcnQgKiBhcyBrcGkgZnJvbSBcIi4vc3JjL2twaS50c1wiO1xuZXhwb3J0ICogYXMgd29ya2Zsb3cgZnJvbSBcIi4vc3JjL3dvcmtmbG93LnRzXCI7XG5leHBvcnQgeyBHRU5FUkFUT1JfUExVR0lOX05BTUUsIEdFTkVSQVRPUl9CQVNFX1BBVEgsIEdFTkVSQVRPUl9ST1VURVMsIEJyYW5kR2VuZXJhdGlvblJlcXVlc3RTY2hlbWEsIEJyYW5kUGFja2FnZVNvdXJjZVNjaGVtYSwgQnJhbmRWaXN1YWxJbWFnZVNjaGVtYSwgQnJhbmRWaXN1YWxSZWZlcmVuY2VTY2hlbWEsIEJyYW5kUGFja2FnZVNjaGVtYSwgQnJhbmRIaXN0b3J5RW50cnlTY2hlbWEsIEJyYW5kSGlzdG9yeVJlc3BvbnNlU2NoZW1hLCBCcmFuZEdlbmVyYXRpb25TdGFnZVNjaGVtYSwgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudFNjaGVtYSwgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnRTY2hlbWEsIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnRTY2hlbWEsIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hLCBHZW5lcmF0b3JDbGllbnRDb25maWdTY2hlbWEsIGJyYW5kR2VuZXJhdGVVcmwsIGJyYW5kSGlzdG9yeVVybCwgR2VuZXJhdG9yUGx1Z2luQ2xpZW50IH0gZnJvbSBcIi4vc3JjL2JyYW5kLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kR2VuZXJhdGlvblJlcXVlc3QsIEJyYW5kUGFja2FnZVNvdXJjZSwgQnJhbmRWaXN1YWxJbWFnZSwgQnJhbmRWaXN1YWxSZWZlcmVuY2UsIEJyYW5kUGFja2FnZSwgQnJhbmRIaXN0b3J5RW50cnksIEJyYW5kSGlzdG9yeVJlc3BvbnNlLCBCcmFuZEdlbmVyYXRpb25TdGFnZSwgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudCwgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnQsIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnQsIEJyYW5kR2VuZXJhdGlvbkV2ZW50LCBHZW5lcmF0b3JDbGllbnRDb25maWcsIEJyYW5kR2VuZXJhdGlvblN0cmVhbU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYnJhbmQudHNcIjtcbmV4cG9ydCB7IFJlc2VhcmNoZWRLcGlTY2hlbWEsIEtwaVJlc2VhcmNoUmVxdWVzdFNjaGVtYSwgS3BpUmVzZWFyY2hSZXN1bHRTY2hlbWEgfSBmcm9tIFwiLi9zcmMva3BpLnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc2VhcmNoZWRLcGksIEtwaVJlc2VhcmNoUmVxdWVzdCwgS3BpUmVzZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9zcmMva3BpLnRzXCI7XG5leHBvcnQgeyBQcmVzZW50YXRpb25Nb2RlU2NoZW1hLCBHZW5lcmF0b3JSZXF1ZXN0U2NoZW1hLCBHZW5lcmF0ZWRDb2x1bW5TY2hlbWEsIEdlbmVyYXRlZE1ldHJpY1NjaGVtYSwgR2VuZXJhdG9yUGxhblNjaGVtYSwgUGxhbkdlbmVyYXRvckRhdGFSZXF1ZXN0U2NoZW1hLCBHZW5lcmF0ZWRTY2hlbWFTY2hlbWEsIFByb3Zpc2lvbkdlbmVyYXRvclNjaGVtYVJlcXVlc3RTY2hlbWEsIE1hdGVyaWFsaXplR2VuZXJhdG9yRGF0YVJlcXVlc3RTY2hlbWEsIE1hdGVyaWFsaXplZEdlbmVyYXRvckRhdGFTY2hlbWEsIENyZWF0ZUdlbmVyYXRvclByZXNlbnRhdGlvblJlcXVlc3RTY2hlbWEsIEdlbmVyYXRlZERhc2hib2FyZFNjaGVtYSwgR2VuZXJhdGVkR2VuaWVTcGFjZVNjaGVtYSwgR2VuZXJhdGVkQXNzZXRzU2NoZW1hIH0gZnJvbSBcIi4vc3JjL3dvcmtmbG93LnRzXCI7XG5leHBvcnQgdHlwZSB7IFByZXNlbnRhdGlvbk1vZGUsIEdlbmVyYXRvclJlcXVlc3QsIEdlbmVyYXRlZENvbHVtbiwgR2VuZXJhdGVkTWV0cmljLCBHZW5lcmF0b3JQbGFuLCBQbGFuR2VuZXJhdG9yRGF0YVJlcXVlc3QsIEdlbmVyYXRlZFNjaGVtYSwgUHJvdmlzaW9uR2VuZXJhdG9yU2NoZW1hUmVxdWVzdCwgTWF0ZXJpYWxpemVHZW5lcmF0b3JEYXRhUmVxdWVzdCwgTWF0ZXJpYWxpemVkR2VuZXJhdG9yRGF0YSwgQ3JlYXRlR2VuZXJhdG9yUHJlc2VudGF0aW9uUmVxdWVzdCwgR2VuZXJhdGVkRGFzaGJvYXJkLCBHZW5lcmF0ZWRHZW5pZVNwYWNlLCBHZW5lcmF0ZWRBc3NldHMgfSBmcm9tIFwiLi9zcmMvd29ya2Zsb3cudHNcIjtcbiJdfQ==
|
package/lib/src/brand.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const GENERATOR_BASE_PATH = "/api/generator";
|
|
|
11
11
|
/** Mount-relative route segments owned by the generator plugin. */
|
|
12
12
|
export declare const GENERATOR_ROUTES: {
|
|
13
13
|
readonly generateBrand: "/brand/generate";
|
|
14
|
+
readonly brandHistory: "/brand/history";
|
|
14
15
|
};
|
|
15
16
|
/** Input accepted by brand generation. */
|
|
16
17
|
export declare const BrandGenerationRequestSchema: z.ZodObject<{
|
|
@@ -121,6 +122,162 @@ export declare const BrandPackageSchema: z.ZodObject<{
|
|
|
121
122
|
}, z.core.$strict>;
|
|
122
123
|
/** Generated branding package. */
|
|
123
124
|
export type BrandPackage = z.infer<typeof BrandPackageSchema>;
|
|
125
|
+
/** One persisted generated brand available to the browser picker. */
|
|
126
|
+
export declare const BrandHistoryEntrySchema: z.ZodObject<{
|
|
127
|
+
id: z.ZodString;
|
|
128
|
+
request: z.ZodObject<{
|
|
129
|
+
name: z.ZodOptional<z.ZodString>;
|
|
130
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
131
|
+
website: z.ZodOptional<z.ZodString>;
|
|
132
|
+
}, z.core.$strict>;
|
|
133
|
+
generatedAt: z.ZodISODateTime;
|
|
134
|
+
package: z.ZodObject<{
|
|
135
|
+
brand: z.ZodObject<{
|
|
136
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<"1">>;
|
|
137
|
+
name: z.ZodDefault<z.ZodString>;
|
|
138
|
+
shortName: z.ZodDefault<z.ZodString>;
|
|
139
|
+
tagline: z.ZodOptional<z.ZodString>;
|
|
140
|
+
description: z.ZodDefault<z.ZodString>;
|
|
141
|
+
assets: z.ZodDefault<z.ZodObject<{
|
|
142
|
+
icon: z.ZodDefault<z.ZodObject<{
|
|
143
|
+
light: z.ZodString;
|
|
144
|
+
dark: z.ZodOptional<z.ZodString>;
|
|
145
|
+
}, z.core.$strict>>;
|
|
146
|
+
logo: z.ZodDefault<z.ZodObject<{
|
|
147
|
+
light: z.ZodString;
|
|
148
|
+
dark: z.ZodOptional<z.ZodString>;
|
|
149
|
+
}, z.core.$strict>>;
|
|
150
|
+
favicon: z.ZodDefault<z.ZodString>;
|
|
151
|
+
}, z.core.$strict>>;
|
|
152
|
+
colors: z.ZodPrefault<z.ZodObject<{
|
|
153
|
+
primary: z.ZodDefault<z.ZodString>;
|
|
154
|
+
primaryHover: z.ZodDefault<z.ZodString>;
|
|
155
|
+
accent: z.ZodDefault<z.ZodString>;
|
|
156
|
+
foreground: z.ZodDefault<z.ZodString>;
|
|
157
|
+
background: z.ZodDefault<z.ZodString>;
|
|
158
|
+
surface: z.ZodDefault<z.ZodString>;
|
|
159
|
+
muted: z.ZodDefault<z.ZodString>;
|
|
160
|
+
border: z.ZodDefault<z.ZodString>;
|
|
161
|
+
}, z.core.$strict>>;
|
|
162
|
+
typography: z.ZodPrefault<z.ZodObject<{
|
|
163
|
+
sans: z.ZodDefault<z.ZodString>;
|
|
164
|
+
mono: z.ZodDefault<z.ZodString>;
|
|
165
|
+
}, z.core.$strict>>;
|
|
166
|
+
voice: z.ZodPrefault<z.ZodObject<{
|
|
167
|
+
audience: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
168
|
+
tone: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
169
|
+
principles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
170
|
+
avoid: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
171
|
+
}, z.core.$strict>>;
|
|
172
|
+
links: z.ZodPrefault<z.ZodObject<{
|
|
173
|
+
website: z.ZodDefault<z.ZodString>;
|
|
174
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
175
|
+
documentation: z.ZodDefault<z.ZodString>;
|
|
176
|
+
}, z.core.$strict>>;
|
|
177
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
178
|
+
}, z.core.$strict>;
|
|
179
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
180
|
+
url: z.ZodString;
|
|
181
|
+
title: z.ZodOptional<z.ZodString>;
|
|
182
|
+
snippet: z.ZodOptional<z.ZodString>;
|
|
183
|
+
fetched: z.ZodBoolean;
|
|
184
|
+
}, z.core.$strict>>;
|
|
185
|
+
visualReferences: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
186
|
+
platform: z.ZodEnum<{
|
|
187
|
+
ios: "ios";
|
|
188
|
+
android: "android";
|
|
189
|
+
}>;
|
|
190
|
+
appName: z.ZodString;
|
|
191
|
+
pageUrl: z.ZodString;
|
|
192
|
+
images: z.ZodArray<z.ZodObject<{
|
|
193
|
+
url: z.ZodString;
|
|
194
|
+
contentType: z.ZodOptional<z.ZodString>;
|
|
195
|
+
localPath: z.ZodOptional<z.ZodString>;
|
|
196
|
+
}, z.core.$strict>>;
|
|
197
|
+
}, z.core.$strict>>>;
|
|
198
|
+
}, z.core.$strict>;
|
|
199
|
+
}, z.core.$strict>;
|
|
200
|
+
/** Persisted generated brand available to one user. */
|
|
201
|
+
export type BrandHistoryEntry = z.infer<typeof BrandHistoryEntrySchema>;
|
|
202
|
+
/** Browser response containing the current user's generated brands. */
|
|
203
|
+
export declare const BrandHistoryResponseSchema: z.ZodObject<{
|
|
204
|
+
brands: z.ZodArray<z.ZodObject<{
|
|
205
|
+
id: z.ZodString;
|
|
206
|
+
request: z.ZodObject<{
|
|
207
|
+
name: z.ZodOptional<z.ZodString>;
|
|
208
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
209
|
+
website: z.ZodOptional<z.ZodString>;
|
|
210
|
+
}, z.core.$strict>;
|
|
211
|
+
generatedAt: z.ZodISODateTime;
|
|
212
|
+
package: z.ZodObject<{
|
|
213
|
+
brand: z.ZodObject<{
|
|
214
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<"1">>;
|
|
215
|
+
name: z.ZodDefault<z.ZodString>;
|
|
216
|
+
shortName: z.ZodDefault<z.ZodString>;
|
|
217
|
+
tagline: z.ZodOptional<z.ZodString>;
|
|
218
|
+
description: z.ZodDefault<z.ZodString>;
|
|
219
|
+
assets: z.ZodDefault<z.ZodObject<{
|
|
220
|
+
icon: z.ZodDefault<z.ZodObject<{
|
|
221
|
+
light: z.ZodString;
|
|
222
|
+
dark: z.ZodOptional<z.ZodString>;
|
|
223
|
+
}, z.core.$strict>>;
|
|
224
|
+
logo: z.ZodDefault<z.ZodObject<{
|
|
225
|
+
light: z.ZodString;
|
|
226
|
+
dark: z.ZodOptional<z.ZodString>;
|
|
227
|
+
}, z.core.$strict>>;
|
|
228
|
+
favicon: z.ZodDefault<z.ZodString>;
|
|
229
|
+
}, z.core.$strict>>;
|
|
230
|
+
colors: z.ZodPrefault<z.ZodObject<{
|
|
231
|
+
primary: z.ZodDefault<z.ZodString>;
|
|
232
|
+
primaryHover: z.ZodDefault<z.ZodString>;
|
|
233
|
+
accent: z.ZodDefault<z.ZodString>;
|
|
234
|
+
foreground: z.ZodDefault<z.ZodString>;
|
|
235
|
+
background: z.ZodDefault<z.ZodString>;
|
|
236
|
+
surface: z.ZodDefault<z.ZodString>;
|
|
237
|
+
muted: z.ZodDefault<z.ZodString>;
|
|
238
|
+
border: z.ZodDefault<z.ZodString>;
|
|
239
|
+
}, z.core.$strict>>;
|
|
240
|
+
typography: z.ZodPrefault<z.ZodObject<{
|
|
241
|
+
sans: z.ZodDefault<z.ZodString>;
|
|
242
|
+
mono: z.ZodDefault<z.ZodString>;
|
|
243
|
+
}, z.core.$strict>>;
|
|
244
|
+
voice: z.ZodPrefault<z.ZodObject<{
|
|
245
|
+
audience: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
246
|
+
tone: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
247
|
+
principles: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
248
|
+
avoid: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
249
|
+
}, z.core.$strict>>;
|
|
250
|
+
links: z.ZodPrefault<z.ZodObject<{
|
|
251
|
+
website: z.ZodDefault<z.ZodString>;
|
|
252
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
253
|
+
documentation: z.ZodDefault<z.ZodString>;
|
|
254
|
+
}, z.core.$strict>>;
|
|
255
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
256
|
+
}, z.core.$strict>;
|
|
257
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
258
|
+
url: z.ZodString;
|
|
259
|
+
title: z.ZodOptional<z.ZodString>;
|
|
260
|
+
snippet: z.ZodOptional<z.ZodString>;
|
|
261
|
+
fetched: z.ZodBoolean;
|
|
262
|
+
}, z.core.$strict>>;
|
|
263
|
+
visualReferences: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
264
|
+
platform: z.ZodEnum<{
|
|
265
|
+
ios: "ios";
|
|
266
|
+
android: "android";
|
|
267
|
+
}>;
|
|
268
|
+
appName: z.ZodString;
|
|
269
|
+
pageUrl: z.ZodString;
|
|
270
|
+
images: z.ZodArray<z.ZodObject<{
|
|
271
|
+
url: z.ZodString;
|
|
272
|
+
contentType: z.ZodOptional<z.ZodString>;
|
|
273
|
+
localPath: z.ZodOptional<z.ZodString>;
|
|
274
|
+
}, z.core.$strict>>;
|
|
275
|
+
}, z.core.$strict>>>;
|
|
276
|
+
}, z.core.$strict>;
|
|
277
|
+
}, z.core.$strict>>;
|
|
278
|
+
}, z.core.$strict>;
|
|
279
|
+
/** Current user's persisted generated-brand history. */
|
|
280
|
+
export type BrandHistoryResponse = z.infer<typeof BrandHistoryResponseSchema>;
|
|
124
281
|
/** Observable stages in one brand-generation workflow. */
|
|
125
282
|
export declare const BrandGenerationStageSchema: z.ZodEnum<{
|
|
126
283
|
search: "search";
|
|
@@ -326,6 +483,8 @@ export interface BrandGenerationStreamOptions {
|
|
|
326
483
|
}
|
|
327
484
|
/** Build the brand endpoint from the generator plugin's published base path. */
|
|
328
485
|
export declare function brandGenerateUrl(basePath?: string): string;
|
|
486
|
+
/** Build the generated-brand history endpoint from the published base path. */
|
|
487
|
+
export declare function brandHistoryUrl(basePath?: string): string;
|
|
329
488
|
/** Browser client for the generator plugin's streamed routes. */
|
|
330
489
|
export declare class GeneratorPluginClient {
|
|
331
490
|
private readonly config;
|
|
@@ -333,4 +492,6 @@ export declare class GeneratorPluginClient {
|
|
|
333
492
|
constructor(config: GeneratorClientConfig);
|
|
334
493
|
/** Generate a brand while yielding validated progress and terminal events. */
|
|
335
494
|
generate(input: BrandGenerationRequest, options?: BrandGenerationStreamOptions): AsyncGenerator<BrandGenerationEvent>;
|
|
495
|
+
/** List the current user's persisted generated brands, newest first. */
|
|
496
|
+
brandHistory(options?: BrandGenerationStreamOptions): Promise<BrandHistoryEntry[]>;
|
|
336
497
|
}
|
package/lib/src/brand.js
CHANGED
|
@@ -13,6 +13,7 @@ export const GENERATOR_BASE_PATH = `/api/${GENERATOR_PLUGIN_NAME}`;
|
|
|
13
13
|
/** Mount-relative route segments owned by the generator plugin. */
|
|
14
14
|
export const GENERATOR_ROUTES = {
|
|
15
15
|
generateBrand: "/brand/generate",
|
|
16
|
+
brandHistory: "/brand/history",
|
|
16
17
|
};
|
|
17
18
|
/** Input accepted by brand generation. */
|
|
18
19
|
export const BrandGenerationRequestSchema = z
|
|
@@ -85,6 +86,23 @@ export const BrandPackageSchema = z
|
|
|
85
86
|
})
|
|
86
87
|
.strict()
|
|
87
88
|
.describe("Generated branding package and its web research provenance.");
|
|
89
|
+
/** One persisted generated brand available to the browser picker. */
|
|
90
|
+
export const BrandHistoryEntrySchema = z
|
|
91
|
+
.object({
|
|
92
|
+
id: nonBlankString.describe("Stable request-derived brand history identifier."),
|
|
93
|
+
request: BrandGenerationRequestSchema.describe("Free-form request that generated the brand."),
|
|
94
|
+
generatedAt: z.iso.datetime().describe("Time the generated brand was stored."),
|
|
95
|
+
package: BrandPackageSchema.describe("Cached generated branding package."),
|
|
96
|
+
})
|
|
97
|
+
.strict()
|
|
98
|
+
.describe("Persisted generated brand available to one user.");
|
|
99
|
+
/** Browser response containing the current user's generated brands. */
|
|
100
|
+
export const BrandHistoryResponseSchema = z
|
|
101
|
+
.object({
|
|
102
|
+
brands: z.array(BrandHistoryEntrySchema).describe("Generated brands, newest first."),
|
|
103
|
+
})
|
|
104
|
+
.strict()
|
|
105
|
+
.describe("Current user's persisted generated-brand history.");
|
|
88
106
|
/** Observable stages in one brand-generation workflow. */
|
|
89
107
|
export const BrandGenerationStageSchema = z.enum([
|
|
90
108
|
"search",
|
|
@@ -137,6 +155,10 @@ export const GeneratorClientConfigSchema = z
|
|
|
137
155
|
export function brandGenerateUrl(basePath = GENERATOR_BASE_PATH) {
|
|
138
156
|
return `${basePath.replace(/\/+$/, "")}${GENERATOR_ROUTES.generateBrand}`;
|
|
139
157
|
}
|
|
158
|
+
/** Build the generated-brand history endpoint from the published base path. */
|
|
159
|
+
export function brandHistoryUrl(basePath = GENERATOR_BASE_PATH) {
|
|
160
|
+
return `${basePath.replace(/\/+$/, "")}${GENERATOR_ROUTES.brandHistory}`;
|
|
161
|
+
}
|
|
140
162
|
/** Parse one complete SSE frame into its validated brand event. */
|
|
141
163
|
function parseEventFrame(frame) {
|
|
142
164
|
const data = frame
|
|
@@ -208,5 +230,17 @@ export class GeneratorPluginClient {
|
|
|
208
230
|
if (event)
|
|
209
231
|
yield event;
|
|
210
232
|
}
|
|
233
|
+
/** List the current user's persisted generated brands, newest first. */
|
|
234
|
+
async brandHistory(options = {}) {
|
|
235
|
+
const fetcher = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
236
|
+
const response = await fetcher(brandHistoryUrl(this.config.basePath), {
|
|
237
|
+
method: "GET",
|
|
238
|
+
headers: { Accept: "application/json" },
|
|
239
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
240
|
+
});
|
|
241
|
+
if (!response.ok)
|
|
242
|
+
throw new Error(await responseError(response));
|
|
243
|
+
return BrandHistoryResponseSchema.parse(await response.json()).brands;
|
|
244
|
+
}
|
|
211
245
|
}
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVoRCwrQ0FBK0M7QUFDL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDO0FBRWpELDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLHFCQUFxQixFQUFFLENBQUM7QUFFbkUsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGFBQWEsRUFBRSxpQkFBaUI7Q0FDeEIsQ0FBQztBQUVYLDBDQUEwQztBQUMxQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDO0tBQzFDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxjQUFjO1NBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDUixRQUFRLEVBQUU7U0FDVixRQUFRLENBQUMsNkNBQTZDLENBQUM7SUFDMUQsTUFBTSxFQUFFLGNBQWM7U0FDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQztTQUNWLFFBQVEsRUFBRTtTQUNWLFFBQVEsQ0FBQywwREFBMEQsQ0FBQztJQUN2RSxPQUFPLEVBQUUsQ0FBQztTQUNQLE1BQU0sRUFBRTtTQUNSLEdBQUcsRUFBRTtTQUNMLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxnQ0FBZ0MsQ0FBQztTQUN6RixRQUFRLEVB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LENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxLQUFLO29CQUFFLE1BQU0sS0FBSyxDQUFDO2dCQUN2QixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxJQUFJLElBQUk7Z0JBQUUsTUFBTTtRQUNsQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksS0FBSztZQUFFLE1BQU0sS0FBSyxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIGNvbnRyYWN0cyBhbmQgY2xpZW50IGZvciBBcHBLaXQgYnJhbmQgZ2VuZXJhdGlvbi5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQnJhbmRDb250ZXh0U2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IG5vbkJsYW5rU3RyaW5nID0gei5zdHJpbmcoKS50cmltKCkubWluKDEpO1xuXG4vKiogUmVnaXN0ZXJlZCBBcHBLaXQgZ2VuZXJhdG9yIHBsdWdpbiBuYW1lLiAqL1xuZXhwb3J0IGNvbnN0IEdFTkVSQVRPUl9QTFVHSU5fTkFNRSA9IFwiZ2VuZXJhdG9yXCI7XG5cbi8qKiBEZWZhdWx0IHJvdXRlIHByZWZpeCBwdWJsaXNoZWQgYnkgdGhlIGdlbmVyYXRvciBwbHVnaW4uICovXG5leHBvcnQgY29uc3QgR0VORVJBVE9SX0JBU0VfUEFUSCA9IGAvYXBpLyR7R0VORVJBVE9SX1BMVUdJTl9OQU1FfWA7XG5cbi8qKiBNb3VudC1yZWxhdGl2ZSByb3V0ZSBzZWdtZW50cyBvd25lZCBieSB0aGUgZ2VuZXJhdG9yIHBsdWdpbi4gKi9cbmV4cG9ydCBjb25zdCBHRU5FUkFUT1JfUk9VVEVTID0ge1xuICBnZW5lcmF0ZUJyYW5kOiBcIi9icmFuZC9nZW5lcmF0ZVwiLFxufSBhcyBjb25zdDtcblxuLyoqIElucHV0IGFjY2VwdGVkIGJ5IGJyYW5kIGdlbmVyYXRpb24uICovXG5leHBvcnQgY29uc3QgQnJhbmRHZW5lcmF0aW9uUmVxdWVzdFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgbmFtZTogbm9uQmxhbmtTdHJpbmdcbiAgICAgIC5tYXgoMjAwKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIktub3duIGJyYW5kLCBvcmdhbml6YXRpb24sIG9yIHByb2R1Y3QgbmFtZS5cIiksXG4gICAgcHJvbXB0OiBub25CbGFua1N0cmluZ1xuICAgICAgLm1heCgyXzAwMClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJPcGVuLWVuZGVkIGJyYW5kIGJyaWVmIHVzZWQgZm9yIHJlc2VhcmNoIGFuZCBnZW5lcmF0aW9uLlwiKSxcbiAgICB3ZWJzaXRlOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC51cmwoKVxuICAgICAgLnJlZmluZSgodmFsdWUpID0+IG5ldyBVUkwodmFsdWUpLnByb3RvY29sID09PSBcImh0dHBzOlwiLCBcIkV4cGVjdGVkIGFuIEhUVFBTIHdlYnNpdGUgVVJMLlwiKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIktub3duIG9mZmljaWFsIHdlYnNpdGUgdXNlZCB0byBkaXNhbWJpZ3VhdGUgdGhlIGJyYW5kLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5yZWZpbmUoKHZhbHVlKSA9PiB2YWx1ZS5uYW1lICE9PSB1bmRlZmluZWQgfHwgdmFsdWUucHJvbXB0ICE9PSB1bmRlZmluZWQsIHtcbiAgICBtZXNzYWdlOiBcIkJyYW5kIGdlbmVyYXRpb24gcmVxdWlyZXMgYSBuYW1lIG9yIHByb21wdC5cIixcbiAgfSlcbiAgLmRlc2NyaWJlKFwiUmVxdWVzdCB0byByZXNlYXJjaCBvbmUgYnJhbmQgYW5kIGdlbmVyYXRlIGl0cyBwb3J0YWJsZSBicmFuZGluZyBwYWNrYWdlLlwiKTtcblxuLyoqIFZhbGlkYXRlZCBicmFuZC1nZW5lcmF0aW9uIHJlcXVlc3QuICovXG5leHBvcnQgdHlwZSBCcmFuZEdlbmVyYXRpb25SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgQnJhbmRHZW5lcmF0aW9uUmVxdWVzdFNjaGVtYT47XG5cbi8qKiBBIGNpdGVkIHNvdXJjZSBhbmQgd2hldGhlciBpdHMgcGFnZSBjb250ZW50IHdhcyBhdmFpbGFibGUgdG8gc3ludGhlc2lzLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kUGFja2FnZVNvdXJjZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdXJsOiB6LnN0cmluZygpLnVybCgpLmRlc2NyaWJlKFwiU291cmNlIFVSTCB1c2VkIGR1cmluZyBicmFuZCByZXNlYXJjaC5cIiksXG4gICAgdGl0bGU6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTb3VyY2UgcGFnZSB0aXRsZSwgd2hlbiBhdmFpbGFibGUuXCIpLFxuICAgIHNuaXBwZXQ6IG5vbkJsYW5rU3RyaW5nLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJTZWFyY2gtcmVzdWx0IGV4Y2VycHQsIHdoZW4gYXZhaWxhYmxlLlwiKSxcbiAgICBmZXRjaGVkOiB6XG4gICAgICAuYm9vbGVhbigpXG4gICAgICAuZGVzY3JpYmUoXCJUcnVlIHdoZW4gd2ViX2ZldGNoIHJldHVybmVkIHBhZ2UgY29udGVudCB1c2VkIGR1cmluZyBzeW50aGVzaXMuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiV2ViIHNvdXJjZSB1c2VkIHRvIHJlc2VhcmNoIHRoZSBnZW5lcmF0ZWQgYnJhbmQuXCIpO1xuXG4vKiogU291cmNlIHByb3ZlbmFuY2UgaW5jbHVkZWQgaW4gYSBnZW5lcmF0ZWQgYnJhbmRpbmcgcGFja2FnZS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kUGFja2FnZVNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIEJyYW5kUGFja2FnZVNvdXJjZVNjaGVtYT47XG5cbi8qKiBPbmUgZmV0Y2hlZCBtb2JpbGUtYXBwIGltYWdlIHVzZWQgYXMgdmlzdWFsIGJyYW5kIHJlc2VhcmNoLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kVmlzdWFsSW1hZ2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHVybDogei5zdHJpbmcoKS51cmwoKS5kZXNjcmliZShcIk9yaWdpbmFsIG1vYmlsZS1zdG9yZSBpbWFnZSBVUkwuXCIpLFxuICAgIGNvbnRlbnRUeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJGZXRjaGVkIGltYWdlIG1lZGlhIHR5cGUuXCIpLFxuICAgIGxvY2FsUGF0aDogelxuICAgICAgLnN0cmluZygpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUGFja2FnZS1yZWxhdGl2ZSBleHBvcnRlZCBpbWFnZSBwYXRoLCB3aGVuIHdyaXR0ZW4gYnkgYSBDTEkuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiTW9iaWxlLXN0b3JlIGltYWdlIHJlZmVyZW5jZSB1c2VkIGZvciBicmFuZCBpbnNwaXJhdGlvbi5cIik7XG5cbi8qKiBNb2JpbGUtc3RvcmUgaW1hZ2UgdXNlZCBhcyB2aXN1YWwgYnJhbmQgcmVzZWFyY2guICovXG5leHBvcnQgdHlwZSBCcmFuZFZpc3VhbEltYWdlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRWaXN1YWxJbWFnZVNjaGVtYT47XG5cbi8qKiBBcHAgU3RvcmUgb3IgUGxheSBTdG9yZSBwYWdlIGFuZCBpdHMgdmlzdWFsIHJlZmVyZW5jZXMuICovXG5leHBvcnQgY29uc3QgQnJhbmRWaXN1YWxSZWZlcmVuY2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHBsYXRmb3JtOiB6LmVudW0oW1wiaW9zXCIsIFwiYW5kcm9pZFwiXSkuZGVzY3JpYmUoXCJNb2JpbGUgYXBwbGljYXRpb24gcGxhdGZvcm0uXCIpLFxuICAgIGFwcE5hbWU6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiQXBwbGljYXRpb24gbmFtZSByZWFkIGZyb20gdGhlIHN0b3JlIHBhZ2UuXCIpLFxuICAgIHBhZ2VVcmw6IHouc3RyaW5nKCkudXJsKCkuZGVzY3JpYmUoXCJPZmZpY2lhbCBhcHBsaWNhdGlvbi1zdG9yZSBwYWdlLlwiKSxcbiAgICBpbWFnZXM6IHouYXJyYXkoQnJhbmRWaXN1YWxJbWFnZVNjaGVtYSkuZGVzY3JpYmUoXCJGZXRjaGVkIGFwcCBpY29uIG9yIHNjcmVlbnNob3RzLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIk1vYmlsZSBhcHBsaWNhdGlvbiB2aXN1YWxzIGNvbnN1bHRlZCBkdXJpbmcgYnJhbmQgcmVzZWFyY2guXCIpO1xuXG4vKiogTW9iaWxlLXN0b3JlIGJyYW5kIHJlc2VhcmNoIHJlZmVyZW5jZS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kVmlzdWFsUmVmZXJlbmNlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRWaXN1YWxSZWZlcmVuY2VTY2hlbWE+O1xuXG4vKiogUG9ydGFibGUgZ2VuZXJhdGVkIGJyYW5kIGNvbnRleHQgd2l0aCByZXNlYXJjaCBwcm92ZW5hbmNlLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kUGFja2FnZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgYnJhbmQ6IEJyYW5kQ29udGV4dFNjaGVtYS5kZXNjcmliZShcbiAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCByZWFkeSBmb3IgQGRieC10b29scyBVSSBhbmQgZW1haWwgY29uc3VtZXJzLlwiLFxuICAgICksXG4gICAgc291cmNlczogelxuICAgICAgLmFycmF5KEJyYW5kUGFja2FnZVNvdXJjZVNjaGVtYSlcbiAgICAgIC5kZXNjcmliZShcIkRlZHVwbGljYXRlZCB3ZWIgc291cmNlcyB1c2VkIHRvIGdlbmVyYXRlIHRoaXMgcGFja2FnZS5cIiksXG4gICAgdmlzdWFsUmVmZXJlbmNlczogelxuICAgICAgLmFycmF5KEJyYW5kVmlzdWFsUmVmZXJlbmNlU2NoZW1hKVxuICAgICAgLmRlZmF1bHQoW10pXG4gICAgICAuZGVzY3JpYmUoXCJpT1MgYW5kIEFuZHJvaWQgYXBwbGljYXRpb24gdmlzdWFscyB1c2VkIGZvciBpbnNwaXJhdGlvbi5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJHZW5lcmF0ZWQgYnJhbmRpbmcgcGFja2FnZSBhbmQgaXRzIHdlYiByZXNlYXJjaCBwcm92ZW5hbmNlLlwiKTtcblxuLyoqIEdlbmVyYXRlZCBicmFuZGluZyBwYWNrYWdlLiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRQYWNrYWdlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRQYWNrYWdlU2NoZW1hPjtcblxuLyoqIE9ic2VydmFibGUgc3RhZ2VzIGluIG9uZSBicmFuZC1nZW5lcmF0aW9uIHdvcmtmbG93LiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblN0YWdlU2NoZW1hID0gei5lbnVtKFtcbiAgXCJzZWFyY2hcIixcbiAgXCJmZXRjaFwiLFxuICBcInZpc3VhbHNcIixcbiAgXCJhc3NldHNcIixcbiAgXCJzeW50aGVzaXplXCIsXG5dKTtcblxuLyoqIE9ic2VydmFibGUgYnJhbmQtZ2VuZXJhdGlvbiBzdGFnZS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kR2VuZXJhdGlvblN0YWdlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRHZW5lcmF0aW9uU3RhZ2VTY2hlbWE+O1xuXG4vKiogUHJvZ3Jlc3MgZW1pdHRlZCB3aGlsZSB0aGUgYmFja2VuZCByZXNlYXJjaGVzIGFuZCBzeW50aGVzaXplcyBhIGJyYW5kLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInByb2dyZXNzXCIpLFxuICAgIHN0YWdlOiBCcmFuZEdlbmVyYXRpb25TdGFnZVNjaGVtYS5kZXNjcmliZShcIkN1cnJlbnQgd29ya2Zsb3cgc3RhZ2UuXCIpLFxuICAgIG1lc3NhZ2U6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiU2hvcnQgdXNlci1mYWNpbmcgcHJvZ3Jlc3MgbWVzc2FnZS5cIiksXG4gICAgY3VycmVudDogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21wbGV0ZWQgaXRlbXMgaW4gdGhpcyBzdGFnZS5cIiksXG4gICAgdG90YWw6IHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG90YWwgaXRlbXMgaW4gdGhpcyBzdGFnZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQcm9ncmVzcyB1cGRhdGUgZnJvbSBhIHJ1bm5pbmcgYnJhbmQgZ2VuZXJhdGlvbi5cIik7XG5cbi8qKiBQcm9ncmVzcyBldmVudCBlbWl0dGVkIGR1cmluZyBicmFuZCBnZW5lcmF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWE+O1xuXG4vKiogRmluYWwgc3VjY2Vzc2Z1bCBicmFuZC1nZW5lcmF0aW9uIGV2ZW50LiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblJlc3VsdEV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gICAgcGFja2FnZTogQnJhbmRQYWNrYWdlU2NoZW1hLmRlc2NyaWJlKFwiQ29tcGxldGVkIHBvcnRhYmxlIGJyYW5kaW5nIHBhY2thZ2UuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiU3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIGJyYW5kIGdlbmVyYXRpb24uXCIpO1xuXG4vKiogRmluYWwgc3VjY2Vzc2Z1bCBicmFuZC1nZW5lcmF0aW9uIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBCcmFuZEdlbmVyYXRpb25SZXN1bHRFdmVudFNjaGVtYT47XG5cbi8qKiBGaW5hbCBlcnJvciBldmVudCBmcm9tIGEgc3RhcnRlZCBicmFuZC1nZW5lcmF0aW9uIHN0cmVhbS4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgICBtZXNzYWdlOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkFjdGlvbmFibGUgZ2VuZXJhdGlvbiBmYWlsdXJlIG1lc3NhZ2UuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiRmFpbHVyZSBlbWl0dGVkIGFmdGVyIGEgYnJhbmQtZ2VuZXJhdGlvbiBzdHJlYW0gc3RhcnRlZC5cIik7XG5cbi8qKiBGaW5hbCBlcnJvciBldmVudCBmcm9tIGEgc3RhcnRlZCBicmFuZC1nZW5lcmF0aW9uIHN0cmVhbS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hPjtcblxuLyoqIEV2ZXJ5IHNlcnZlci1zZW50IGV2ZW50IGVtaXR0ZWQgYnkgYnJhbmQgZ2VuZXJhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEdlbmVyYXRpb25FdmVudFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWEsXG4gIEJyYW5kR2VuZXJhdGlvblJlc3VsdEV2ZW50U2NoZW1hLFxuICBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hLFxuXSk7XG5cbi8qKiBTZXJ2ZXItc2VudCBldmVudCBlbWl0dGVkIGJ5IGJyYW5kIGdlbmVyYXRpb24uICovXG5leHBvcnQgdHlwZSBCcmFuZEdlbmVyYXRpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hPjtcblxuLyoqIEJyb3dzZXItc2FmZSByb3V0ZSBjb25maWd1cmF0aW9uIHB1Ymxpc2hlZCBieSB0aGUgQXBwS2l0IGdlbmVyYXRvciBwbHVnaW4uICovXG5leHBvcnQgY29uc3QgR2VuZXJhdG9yQ2xpZW50Q29uZmlnU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBiYXNlUGF0aDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJNb3VudGVkIEFQSSByb3V0ZSBwcmVmaXggZm9yIHRoZSBnZW5lcmF0b3IgcGx1Z2luLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkJyb3dzZXIgY29uZmlndXJhdGlvbiBwdWJsaXNoZWQgYnkgdGhlIEFwcEtpdCBnZW5lcmF0b3IgcGx1Z2luLlwiKTtcblxuLyoqIEJyb3dzZXItc2FmZSBnZW5lcmF0b3IgcGx1Z2luIHJvdXRlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgdHlwZSBHZW5lcmF0b3JDbGllbnRDb25maWcgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0b3JDbGllbnRDb25maWdTY2hlbWE+O1xuXG4vKiogT3B0aW9ucyBmb3Igb25lIGJyb3dzZXIgYnJhbmQtZ2VuZXJhdGlvbiBzdHJlYW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kR2VuZXJhdGlvblN0cmVhbU9wdGlvbnMge1xuICAvKiogQ2FuY2VscyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIEZldGNoIGltcGxlbWVudGF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYnJvd3NlciBnbG9iYWwuICovXG4gIGZldGNoPzogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG59XG5cbi8qKiBCdWlsZCB0aGUgYnJhbmQgZW5kcG9pbnQgZnJvbSB0aGUgZ2VuZXJhdG9yIHBsdWdpbidzIHB1Ymxpc2hlZCBiYXNlIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gYnJhbmRHZW5lcmF0ZVVybChiYXNlUGF0aDogc3RyaW5nID0gR0VORVJBVE9SX0JBU0VfUEFUSCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtiYXNlUGF0aC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfSR7R0VORVJBVE9SX1JPVVRFUy5nZW5lcmF0ZUJyYW5kfWA7XG59XG5cbi8qKiBQYXJzZSBvbmUgY29tcGxldGUgU1NFIGZyYW1lIGludG8gaXRzIHZhbGlkYXRlZCBicmFuZCBldmVudC4gKi9cbmZ1bmN0aW9uIHBhcnNlRXZlbnRGcmFtZShmcmFtZTogc3RyaW5nKTogQnJhbmRHZW5lcmF0aW9uRXZlbnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBkYXRhID0gZnJhbWVcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKDUpLnRyaW1TdGFydCgpKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuICBpZiAoIWRhdGEpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbHVlOiB1bmtub3duID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgcmV0dXJuIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hLnBhcnNlKHZhbHVlKTtcbn1cblxuLyoqIFJlYWQgYSBmYWlsZWQgSFRUUCByZXNwb25zZSB3aXRob3V0IHRydXN0aW5nIGl0cyBwYXlsb2FkIHNoYXBlLiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzcG9uc2VFcnJvcihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGF3YWl0IHJlc3BvbnNlXG4gICAgLmNsb25lKClcbiAgICAuanNvbigpXG4gICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgXCJlcnJvclwiIGluIHZhbHVlKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHZhbHVlLmVycm9yO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiAmJiBtZXNzYWdlLnRyaW0oKSkgcmV0dXJuIG1lc3NhZ2UudHJpbSgpO1xuICB9XG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCkuY2F0Y2goKCkgPT4gXCJcIik7XG4gIHJldHVybiB0ZXh0LnRyaW0oKSB8fCBgQnJhbmQgZ2VuZXJhdGlvbiBmYWlsZWQgKCR7cmVzcG9uc2Uuc3RhdHVzfSkuYDtcbn1cblxuLyoqIEJyb3dzZXIgY2xpZW50IGZvciB0aGUgZ2VuZXJhdG9yIHBsdWdpbidzIHN0cmVhbWVkIHJvdXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBHZW5lcmF0b3JQbHVnaW5DbGllbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogR2VuZXJhdG9yQ2xpZW50Q29uZmlnO1xuXG4gIC8qKiBDcmVhdGUgYSBjbGllbnQgZnJvbSB0aGUgcGx1Z2luJ3MgcHVibGlzaGVkIGBjbGllbnRDb25maWcoKWAgcGF5bG9hZC4gKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBHZW5lcmF0b3JDbGllbnRDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IEdlbmVyYXRvckNsaWVudENvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuICB9XG5cbiAgLyoqIEdlbmVyYXRlIGEgYnJhbmQgd2hpbGUgeWllbGRpbmcgdmFsaWRhdGVkIHByb2dyZXNzIGFuZCB0ZXJtaW5hbCBldmVudHMuICovXG4gIGFzeW5jICpnZW5lcmF0ZShcbiAgICBpbnB1dDogQnJhbmRHZW5lcmF0aW9uUmVxdWVzdCxcbiAgICBvcHRpb25zOiBCcmFuZEdlbmVyYXRpb25TdHJlYW1PcHRpb25zID0ge30sXG4gICk6IEFzeW5jR2VuZXJhdG9yPEJyYW5kR2VuZXJhdGlvbkV2ZW50PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IEJyYW5kR2VuZXJhdGlvblJlcXVlc3RTY2hlbWEucGFyc2UoaW5wdXQpO1xuICAgIGNvbnN0IGZldGNoZXIgPSBvcHRpb25zLmZldGNoID8/IGdsb2JhbFRoaXMuZmV0Y2guYmluZChnbG9iYWxUaGlzKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoZXIoYnJhbmRHZW5lcmF0ZVVybCh0aGlzLmNvbmZpZy5iYXNlUGF0aCksIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEFjY2VwdDogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSxcbiAgICAgIC4uLihvcHRpb25zLnNpZ25hbCA/IHsgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge30pLFxuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZUVycm9yKHJlc3BvbnNlKSk7XG4gICAgaWYgKCFyZXNwb25zZS5ib2R5KSB0aHJvdyBuZXcgRXJyb3IoXCJCcmFuZCBnZW5lcmF0aW9uIHJldHVybmVkIG5vIGV2ZW50IHN0cmVhbS5cIik7XG5cbiAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpO1xuICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogIWRvbmUgfSkucmVwbGFjZUFsbChcIlxcclxcblwiLCBcIlxcblwiKTtcbiAgICAgIGxldCBib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKFwiXFxuXFxuXCIpO1xuICAgICAgd2hpbGUgKGJvdW5kYXJ5ID49IDApIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBwYXJzZUV2ZW50RnJhbWUoYnVmZmVyLnNsaWNlKDAsIGJvdW5kYXJ5KSk7XG4gICAgICAgIGlmIChldmVudCkgeWllbGQgZXZlbnQ7XG4gICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShib3VuZGFyeSArIDIpO1xuICAgICAgICBib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKFwiXFxuXFxuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGRvbmUpIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHBhcnNlRXZlbnRGcmFtZShidWZmZXIudHJpbSgpKTtcbiAgICBpZiAoZXZlbnQpIHlpZWxkIGV2ZW50O1xuICB9XG59XG4iXX0=
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnJhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVoRCwrQ0FBK0M7QUFDL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsV0FBVyxDQUFDO0FBRWpELDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLHFCQUFxQixFQUFFLENBQUM7QUFFbkUsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsWUFBWSxFQUFFLGdCQUFnQjtDQUN0QixDQUFDO0FBRVgsMENBQTBDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUM7S0FDMUMsTUFBTSxDQUFDO0lBQ04sSUFBSSxFQUFFLGNBQWM7U0FDakIsR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUNSLFFBQVEsRUFBRTtTQUNWLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQztJQUMxRCxNQUFNLEVBQUUsY0FBYztTQUNuQixHQUFHLENBQUMsS0FBSyxDQUFDO1NBQ1YsUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUFDLDBEQUEwRCxDQUFDO0lBQ3ZFLE9BQU8sRUFBRSxDQUFDO1NBQ1AsTUFBTSxFQUFFO1NBQ1IsR0FBRyxFQUFFO1NBQ0wsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLGdD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QU0sQ0FBQztJQUN4RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJyb3dzZXItc2FmZSBjb250cmFjdHMgYW5kIGNsaWVudCBmb3IgQXBwS2l0IGJyYW5kIGdlbmVyYXRpb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IEJyYW5kQ29udGV4dFNjaGVtYSB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBub25CbGFua1N0cmluZyA9IHouc3RyaW5nKCkudHJpbSgpLm1pbigxKTtcblxuLyoqIFJlZ2lzdGVyZWQgQXBwS2l0IGdlbmVyYXRvciBwbHVnaW4gbmFtZS4gKi9cbmV4cG9ydCBjb25zdCBHRU5FUkFUT1JfUExVR0lOX05BTUUgPSBcImdlbmVyYXRvclwiO1xuXG4vKiogRGVmYXVsdCByb3V0ZSBwcmVmaXggcHVibGlzaGVkIGJ5IHRoZSBnZW5lcmF0b3IgcGx1Z2luLiAqL1xuZXhwb3J0IGNvbnN0IEdFTkVSQVRPUl9CQVNFX1BBVEggPSBgL2FwaS8ke0dFTkVSQVRPUl9QTFVHSU5fTkFNRX1gO1xuXG4vKiogTW91bnQtcmVsYXRpdmUgcm91dGUgc2VnbWVudHMgb3duZWQgYnkgdGhlIGdlbmVyYXRvciBwbHVnaW4uICovXG5leHBvcnQgY29uc3QgR0VORVJBVE9SX1JPVVRFUyA9IHtcbiAgZ2VuZXJhdGVCcmFuZDogXCIvYnJhbmQvZ2VuZXJhdGVcIixcbiAgYnJhbmRIaXN0b3J5OiBcIi9icmFuZC9oaXN0b3J5XCIsXG59IGFzIGNvbnN0O1xuXG4vKiogSW5wdXQgYWNjZXB0ZWQgYnkgYnJhbmQgZ2VuZXJhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEdlbmVyYXRpb25SZXF1ZXN0U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBuYW1lOiBub25CbGFua1N0cmluZ1xuICAgICAgLm1heCgyMDApXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiS25vd24gYnJhbmQsIG9yZ2FuaXphdGlvbiwgb3IgcHJvZHVjdCBuYW1lLlwiKSxcbiAgICBwcm9tcHQ6IG5vbkJsYW5rU3RyaW5nXG4gICAgICAubWF4KDJfMDAwKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk9wZW4tZW5kZWQgYnJhbmQgYnJpZWYgdXNlZCBmb3IgcmVzZWFyY2ggYW5kIGdlbmVyYXRpb24uXCIpLFxuICAgIHdlYnNpdGU6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnVybCgpXG4gICAgICAucmVmaW5lKCh2YWx1ZSkgPT4gbmV3IFVSTCh2YWx1ZSkucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIsIFwiRXhwZWN0ZWQgYW4gSFRUUFMgd2Vic2l0ZSBVUkwuXCIpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiS25vd24gb2ZmaWNpYWwgd2Vic2l0ZSB1c2VkIHRvIGRpc2FtYmlndWF0ZSB0aGUgYnJhbmQuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLnJlZmluZSgodmFsdWUpID0+IHZhbHVlLm5hbWUgIT09IHVuZGVmaW5lZCB8fCB2YWx1ZS5wcm9tcHQgIT09IHVuZGVmaW5lZCwge1xuICAgIG1lc3NhZ2U6IFwiQnJhbmQgZ2VuZXJhdGlvbiByZXF1aXJlcyBhIG5hbWUgb3IgcHJvbXB0LlwiLFxuICB9KVxuICAuZGVzY3JpYmUoXCJSZXF1ZXN0IHRvIHJlc2VhcmNoIG9uZSBicmFuZCBhbmQgZ2VuZXJhdGUgaXRzIHBvcnRhYmxlIGJyYW5kaW5nIHBhY2thZ2UuXCIpO1xuXG4vKiogVmFsaWRhdGVkIGJyYW5kLWdlbmVyYXRpb24gcmVxdWVzdC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kR2VuZXJhdGlvblJlcXVlc3QgPSB6LmluZmVyPHR5cGVvZiBCcmFuZEdlbmVyYXRpb25SZXF1ZXN0U2NoZW1hPjtcblxuLyoqIEEgY2l0ZWQgc291cmNlIGFuZCB3aGV0aGVyIGl0cyBwYWdlIGNvbnRlbnQgd2FzIGF2YWlsYWJsZSB0byBzeW50aGVzaXMuICovXG5leHBvcnQgY29uc3QgQnJhbmRQYWNrYWdlU291cmNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB1cmw6IHouc3RyaW5nKCkudXJsKCkuZGVzY3JpYmUoXCJTb3VyY2UgVVJMIHVzZWQgZHVyaW5nIGJyYW5kIHJlc2VhcmNoLlwiKSxcbiAgICB0aXRsZTogbm9uQmxhbmtTdHJpbmcub3B0aW9uYWwoKS5kZXNjcmliZShcIlNvdXJjZSBwYWdlIHRpdGxlLCB3aGVuIGF2YWlsYWJsZS5cIiksXG4gICAgc25pcHBldDogbm9uQmxhbmtTdHJpbmcub3B0aW9uYWwoKS5kZXNjcmliZShcIlNlYXJjaC1yZXN1bHQgZXhjZXJwdCwgd2hlbiBhdmFpbGFibGUuXCIpLFxuICAgIGZldGNoZWQ6IHpcbiAgICAgIC5ib29sZWFuKClcbiAgICAgIC5kZXNjcmliZShcIlRydWUgd2hlbiB3ZWJfZmV0Y2ggcmV0dXJuZWQgcGFnZSBjb250ZW50IHVzZWQgZHVyaW5nIHN5bnRoZXNpcy5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJXZWIgc291cmNlIHVzZWQgdG8gcmVzZWFyY2ggdGhlIGdlbmVyYXRlZCBicmFuZC5cIik7XG5cbi8qKiBTb3VyY2UgcHJvdmVuYW5jZSBpbmNsdWRlZCBpbiBhIGdlbmVyYXRlZCBicmFuZGluZyBwYWNrYWdlLiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRQYWNrYWdlU291cmNlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRQYWNrYWdlU291cmNlU2NoZW1hPjtcblxuLyoqIE9uZSBmZXRjaGVkIG1vYmlsZS1hcHAgaW1hZ2UgdXNlZCBhcyB2aXN1YWwgYnJhbmQgcmVzZWFyY2guICovXG5leHBvcnQgY29uc3QgQnJhbmRWaXN1YWxJbWFnZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdXJsOiB6LnN0cmluZygpLnVybCgpLmRlc2NyaWJlKFwiT3JpZ2luYWwgbW9iaWxlLXN0b3JlIGltYWdlIFVSTC5cIiksXG4gICAgY29udGVudFR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkZldGNoZWQgaW1hZ2UgbWVkaWEgdHlwZS5cIiksXG4gICAgbG9jYWxQYXRoOiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJQYWNrYWdlLXJlbGF0aXZlIGV4cG9ydGVkIGltYWdlIHBhdGgsIHdoZW4gd3JpdHRlbiBieSBhIENMSS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJNb2JpbGUtc3RvcmUgaW1hZ2UgcmVmZXJlbmNlIHVzZWQgZm9yIGJyYW5kIGluc3BpcmF0aW9uLlwiKTtcblxuLyoqIE1vYmlsZS1zdG9yZSBpbWFnZSB1c2VkIGFzIHZpc3VhbCBicmFuZCByZXNlYXJjaC4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kVmlzdWFsSW1hZ2UgPSB6LmluZmVyPHR5cGVvZiBCcmFuZFZpc3VhbEltYWdlU2NoZW1hPjtcblxuLyoqIEFwcCBTdG9yZSBvciBQbGF5IFN0b3JlIHBhZ2UgYW5kIGl0cyB2aXN1YWwgcmVmZXJlbmNlcy4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZFZpc3VhbFJlZmVyZW5jZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcGxhdGZvcm06IHouZW51bShbXCJpb3NcIiwgXCJhbmRyb2lkXCJdKS5kZXNjcmliZShcIk1vYmlsZSBhcHBsaWNhdGlvbiBwbGF0Zm9ybS5cIiksXG4gICAgYXBwTmFtZTogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJBcHBsaWNhdGlvbiBuYW1lIHJlYWQgZnJvbSB0aGUgc3RvcmUgcGFnZS5cIiksXG4gICAgcGFnZVVybDogei5zdHJpbmcoKS51cmwoKS5kZXNjcmliZShcIk9mZmljaWFsIGFwcGxpY2F0aW9uLXN0b3JlIHBhZ2UuXCIpLFxuICAgIGltYWdlczogei5hcnJheShCcmFuZFZpc3VhbEltYWdlU2NoZW1hKS5kZXNjcmliZShcIkZldGNoZWQgYXBwIGljb24gb3Igc2NyZWVuc2hvdHMuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiTW9iaWxlIGFwcGxpY2F0aW9uIHZpc3VhbHMgY29uc3VsdGVkIGR1cmluZyBicmFuZCByZXNlYXJjaC5cIik7XG5cbi8qKiBNb2JpbGUtc3RvcmUgYnJhbmQgcmVzZWFyY2ggcmVmZXJlbmNlLiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRWaXN1YWxSZWZlcmVuY2UgPSB6LmluZmVyPHR5cGVvZiBCcmFuZFZpc3VhbFJlZmVyZW5jZVNjaGVtYT47XG5cbi8qKiBQb3J0YWJsZSBnZW5lcmF0ZWQgYnJhbmQgY29udGV4dCB3aXRoIHJlc2VhcmNoIHByb3ZlbmFuY2UuICovXG5leHBvcnQgY29uc3QgQnJhbmRQYWNrYWdlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBicmFuZDogQnJhbmRDb250ZXh0U2NoZW1hLmRlc2NyaWJlKFxuICAgICAgXCJQb3J0YWJsZSBicmFuZCBjb250ZXh0IHJlYWR5IGZvciBAZGJ4LXRvb2xzIFVJIGFuZCBlbWFpbCBjb25zdW1lcnMuXCIsXG4gICAgKSxcbiAgICBzb3VyY2VzOiB6XG4gICAgICAuYXJyYXkoQnJhbmRQYWNrYWdlU291cmNlU2NoZW1hKVxuICAgICAgLmRlc2NyaWJlKFwiRGVkdXBsaWNhdGVkIHdlYiBzb3VyY2VzIHVzZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWNrYWdlLlwiKSxcbiAgICB2aXN1YWxSZWZlcmVuY2VzOiB6XG4gICAgICAuYXJyYXkoQnJhbmRWaXN1YWxSZWZlcmVuY2VTY2hlbWEpXG4gICAgICAuZGVmYXVsdChbXSlcbiAgICAgIC5kZXNjcmliZShcImlPUyBhbmQgQW5kcm9pZCBhcHBsaWNhdGlvbiB2aXN1YWxzIHVzZWQgZm9yIGluc3BpcmF0aW9uLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkdlbmVyYXRlZCBicmFuZGluZyBwYWNrYWdlIGFuZCBpdHMgd2ViIHJlc2VhcmNoIHByb3ZlbmFuY2UuXCIpO1xuXG4vKiogR2VuZXJhdGVkIGJyYW5kaW5nIHBhY2thZ2UuICovXG5leHBvcnQgdHlwZSBCcmFuZFBhY2thZ2UgPSB6LmluZmVyPHR5cGVvZiBCcmFuZFBhY2thZ2VTY2hlbWE+O1xuXG4vKiogT25lIHBlcnNpc3RlZCBnZW5lcmF0ZWQgYnJhbmQgYXZhaWxhYmxlIHRvIHRoZSBicm93c2VyIHBpY2tlci4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEhpc3RvcnlFbnRyeVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgaWQ6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiU3RhYmxlIHJlcXVlc3QtZGVyaXZlZCBicmFuZCBoaXN0b3J5IGlkZW50aWZpZXIuXCIpLFxuICAgIHJlcXVlc3Q6IEJyYW5kR2VuZXJhdGlvblJlcXVlc3RTY2hlbWEuZGVzY3JpYmUoXCJGcmVlLWZvcm0gcmVxdWVzdCB0aGF0IGdlbmVyYXRlZCB0aGUgYnJhbmQuXCIpLFxuICAgIGdlbmVyYXRlZEF0OiB6Lmlzby5kYXRldGltZSgpLmRlc2NyaWJlKFwiVGltZSB0aGUgZ2VuZXJhdGVkIGJyYW5kIHdhcyBzdG9yZWQuXCIpLFxuICAgIHBhY2thZ2U6IEJyYW5kUGFja2FnZVNjaGVtYS5kZXNjcmliZShcIkNhY2hlZCBnZW5lcmF0ZWQgYnJhbmRpbmcgcGFja2FnZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQZXJzaXN0ZWQgZ2VuZXJhdGVkIGJyYW5kIGF2YWlsYWJsZSB0byBvbmUgdXNlci5cIik7XG5cbi8qKiBQZXJzaXN0ZWQgZ2VuZXJhdGVkIGJyYW5kIGF2YWlsYWJsZSB0byBvbmUgdXNlci4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kSGlzdG9yeUVudHJ5ID0gei5pbmZlcjx0eXBlb2YgQnJhbmRIaXN0b3J5RW50cnlTY2hlbWE+O1xuXG4vKiogQnJvd3NlciByZXNwb25zZSBjb250YWluaW5nIHRoZSBjdXJyZW50IHVzZXIncyBnZW5lcmF0ZWQgYnJhbmRzLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kSGlzdG9yeVJlc3BvbnNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBicmFuZHM6IHouYXJyYXkoQnJhbmRIaXN0b3J5RW50cnlTY2hlbWEpLmRlc2NyaWJlKFwiR2VuZXJhdGVkIGJyYW5kcywgbmV3ZXN0IGZpcnN0LlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkN1cnJlbnQgdXNlcidzIHBlcnNpc3RlZCBnZW5lcmF0ZWQtYnJhbmQgaGlzdG9yeS5cIik7XG5cbi8qKiBDdXJyZW50IHVzZXIncyBwZXJzaXN0ZWQgZ2VuZXJhdGVkLWJyYW5kIGhpc3RvcnkuICovXG5leHBvcnQgdHlwZSBCcmFuZEhpc3RvcnlSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEJyYW5kSGlzdG9yeVJlc3BvbnNlU2NoZW1hPjtcblxuLyoqIE9ic2VydmFibGUgc3RhZ2VzIGluIG9uZSBicmFuZC1nZW5lcmF0aW9uIHdvcmtmbG93LiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblN0YWdlU2NoZW1hID0gei5lbnVtKFtcbiAgXCJzZWFyY2hcIixcbiAgXCJmZXRjaFwiLFxuICBcInZpc3VhbHNcIixcbiAgXCJhc3NldHNcIixcbiAgXCJzeW50aGVzaXplXCIsXG5dKTtcblxuLyoqIE9ic2VydmFibGUgYnJhbmQtZ2VuZXJhdGlvbiBzdGFnZS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kR2VuZXJhdGlvblN0YWdlID0gei5pbmZlcjx0eXBlb2YgQnJhbmRHZW5lcmF0aW9uU3RhZ2VTY2hlbWE+O1xuXG4vKiogUHJvZ3Jlc3MgZW1pdHRlZCB3aGlsZSB0aGUgYmFja2VuZCByZXNlYXJjaGVzIGFuZCBzeW50aGVzaXplcyBhIGJyYW5kLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInByb2dyZXNzXCIpLFxuICAgIHN0YWdlOiBCcmFuZEdlbmVyYXRpb25TdGFnZVNjaGVtYS5kZXNjcmliZShcIkN1cnJlbnQgd29ya2Zsb3cgc3RhZ2UuXCIpLFxuICAgIG1lc3NhZ2U6IG5vbkJsYW5rU3RyaW5nLmRlc2NyaWJlKFwiU2hvcnQgdXNlci1mYWNpbmcgcHJvZ3Jlc3MgbWVzc2FnZS5cIiksXG4gICAgY3VycmVudDogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDb21wbGV0ZWQgaXRlbXMgaW4gdGhpcyBzdGFnZS5cIiksXG4gICAgdG90YWw6IHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVG90YWwgaXRlbXMgaW4gdGhpcyBzdGFnZS5cIiksXG4gIH0pXG4gIC5zdHJpY3QoKVxuICAuZGVzY3JpYmUoXCJQcm9ncmVzcyB1cGRhdGUgZnJvbSBhIHJ1bm5pbmcgYnJhbmQgZ2VuZXJhdGlvbi5cIik7XG5cbi8qKiBQcm9ncmVzcyBldmVudCBlbWl0dGVkIGR1cmluZyBicmFuZCBnZW5lcmF0aW9uLiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRHZW5lcmF0aW9uUHJvZ3Jlc3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWE+O1xuXG4vKiogRmluYWwgc3VjY2Vzc2Z1bCBicmFuZC1nZW5lcmF0aW9uIGV2ZW50LiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kR2VuZXJhdGlvblJlc3VsdEV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJyZXN1bHRcIiksXG4gICAgcGFja2FnZTogQnJhbmRQYWNrYWdlU2NoZW1hLmRlc2NyaWJlKFwiQ29tcGxldGVkIHBvcnRhYmxlIGJyYW5kaW5nIHBhY2thZ2UuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiU3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIGJyYW5kIGdlbmVyYXRpb24uXCIpO1xuXG4vKiogRmluYWwgc3VjY2Vzc2Z1bCBicmFuZC1nZW5lcmF0aW9uIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgQnJhbmRHZW5lcmF0aW9uUmVzdWx0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBCcmFuZEdlbmVyYXRpb25SZXN1bHRFdmVudFNjaGVtYT47XG5cbi8qKiBGaW5hbCBlcnJvciBldmVudCBmcm9tIGEgc3RhcnRlZCBicmFuZC1nZW5lcmF0aW9uIHN0cmVhbS4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgICBtZXNzYWdlOiBub25CbGFua1N0cmluZy5kZXNjcmliZShcIkFjdGlvbmFibGUgZ2VuZXJhdGlvbiBmYWlsdXJlIG1lc3NhZ2UuXCIpLFxuICB9KVxuICAuc3RyaWN0KClcbiAgLmRlc2NyaWJlKFwiRmFpbHVyZSBlbWl0dGVkIGFmdGVyIGEgYnJhbmQtZ2VuZXJhdGlvbiBzdHJlYW0gc3RhcnRlZC5cIik7XG5cbi8qKiBGaW5hbCBlcnJvciBldmVudCBmcm9tIGEgc3RhcnRlZCBicmFuZC1nZW5lcmF0aW9uIHN0cmVhbS4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kR2VuZXJhdGlvbkVycm9yRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hPjtcblxuLyoqIEV2ZXJ5IHNlcnZlci1zZW50IGV2ZW50IGVtaXR0ZWQgYnkgYnJhbmQgZ2VuZXJhdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBCcmFuZEdlbmVyYXRpb25FdmVudFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIEJyYW5kR2VuZXJhdGlvblByb2dyZXNzRXZlbnRTY2hlbWEsXG4gIEJyYW5kR2VuZXJhdGlvblJlc3VsdEV2ZW50U2NoZW1hLFxuICBCcmFuZEdlbmVyYXRpb25FcnJvckV2ZW50U2NoZW1hLFxuXSk7XG5cbi8qKiBTZXJ2ZXItc2VudCBldmVudCBlbWl0dGVkIGJ5IGJyYW5kIGdlbmVyYXRpb24uICovXG5leHBvcnQgdHlwZSBCcmFuZEdlbmVyYXRpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hPjtcblxuLyoqIEJyb3dzZXItc2FmZSByb3V0ZSBjb25maWd1cmF0aW9uIHB1Ymxpc2hlZCBieSB0aGUgQXBwS2l0IGdlbmVyYXRvciBwbHVnaW4uICovXG5leHBvcnQgY29uc3QgR2VuZXJhdG9yQ2xpZW50Q29uZmlnU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBiYXNlUGF0aDogbm9uQmxhbmtTdHJpbmcuZGVzY3JpYmUoXCJNb3VudGVkIEFQSSByb3V0ZSBwcmVmaXggZm9yIHRoZSBnZW5lcmF0b3IgcGx1Z2luLlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIkJyb3dzZXIgY29uZmlndXJhdGlvbiBwdWJsaXNoZWQgYnkgdGhlIEFwcEtpdCBnZW5lcmF0b3IgcGx1Z2luLlwiKTtcblxuLyoqIEJyb3dzZXItc2FmZSBnZW5lcmF0b3IgcGx1Z2luIHJvdXRlIGNvbmZpZ3VyYXRpb24uICovXG5leHBvcnQgdHlwZSBHZW5lcmF0b3JDbGllbnRDb25maWcgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0b3JDbGllbnRDb25maWdTY2hlbWE+O1xuXG4vKiogT3B0aW9ucyBmb3Igb25lIGJyb3dzZXIgYnJhbmQtZ2VuZXJhdGlvbiBzdHJlYW0uICovXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kR2VuZXJhdGlvblN0cmVhbU9wdGlvbnMge1xuICAvKiogQ2FuY2VscyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIEZldGNoIGltcGxlbWVudGF0aW9uLiBEZWZhdWx0cyB0byB0aGUgYnJvd3NlciBnbG9iYWwuICovXG4gIGZldGNoPzogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG59XG5cbi8qKiBCdWlsZCB0aGUgYnJhbmQgZW5kcG9pbnQgZnJvbSB0aGUgZ2VuZXJhdG9yIHBsdWdpbidzIHB1Ymxpc2hlZCBiYXNlIHBhdGguICovXG5leHBvcnQgZnVuY3Rpb24gYnJhbmRHZW5lcmF0ZVVybChiYXNlUGF0aDogc3RyaW5nID0gR0VORVJBVE9SX0JBU0VfUEFUSCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtiYXNlUGF0aC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpfSR7R0VORVJBVE9SX1JPVVRFUy5nZW5lcmF0ZUJyYW5kfWA7XG59XG5cbi8qKiBCdWlsZCB0aGUgZ2VuZXJhdGVkLWJyYW5kIGhpc3RvcnkgZW5kcG9pbnQgZnJvbSB0aGUgcHVibGlzaGVkIGJhc2UgcGF0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmFuZEhpc3RvcnlVcmwoYmFzZVBhdGg6IHN0cmluZyA9IEdFTkVSQVRPUl9CQVNFX1BBVEgpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7YmFzZVBhdGgucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0ke0dFTkVSQVRPUl9ST1VURVMuYnJhbmRIaXN0b3J5fWA7XG59XG5cbi8qKiBQYXJzZSBvbmUgY29tcGxldGUgU1NFIGZyYW1lIGludG8gaXRzIHZhbGlkYXRlZCBicmFuZCBldmVudC4gKi9cbmZ1bmN0aW9uIHBhcnNlRXZlbnRGcmFtZShmcmFtZTogc3RyaW5nKTogQnJhbmRHZW5lcmF0aW9uRXZlbnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBkYXRhID0gZnJhbWVcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSlcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnNsaWNlKDUpLnRyaW1TdGFydCgpKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuICBpZiAoIWRhdGEpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHZhbHVlOiB1bmtub3duID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgcmV0dXJuIEJyYW5kR2VuZXJhdGlvbkV2ZW50U2NoZW1hLnBhcnNlKHZhbHVlKTtcbn1cblxuLyoqIFJlYWQgYSBmYWlsZWQgSFRUUCByZXNwb25zZSB3aXRob3V0IHRydXN0aW5nIGl0cyBwYXlsb2FkIHNoYXBlLiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzcG9uc2VFcnJvcihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGF3YWl0IHJlc3BvbnNlXG4gICAgLmNsb25lKClcbiAgICAuanNvbigpXG4gICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgXCJlcnJvclwiIGluIHZhbHVlKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHZhbHVlLmVycm9yO1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiAmJiBtZXNzYWdlLnRyaW0oKSkgcmV0dXJuIG1lc3NhZ2UudHJpbSgpO1xuICB9XG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCkuY2F0Y2goKCkgPT4gXCJcIik7XG4gIHJldHVybiB0ZXh0LnRyaW0oKSB8fCBgQnJhbmQgZ2VuZXJhdGlvbiBmYWlsZWQgKCR7cmVzcG9uc2Uuc3RhdHVzfSkuYDtcbn1cblxuLyoqIEJyb3dzZXIgY2xpZW50IGZvciB0aGUgZ2VuZXJhdG9yIHBsdWdpbidzIHN0cmVhbWVkIHJvdXRlcy4gKi9cbmV4cG9ydCBjbGFzcyBHZW5lcmF0b3JQbHVnaW5DbGllbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogR2VuZXJhdG9yQ2xpZW50Q29uZmlnO1xuXG4gIC8qKiBDcmVhdGUgYSBjbGllbnQgZnJvbSB0aGUgcGx1Z2luJ3MgcHVibGlzaGVkIGBjbGllbnRDb25maWcoKWAgcGF5bG9hZC4gKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBHZW5lcmF0b3JDbGllbnRDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IEdlbmVyYXRvckNsaWVudENvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuICB9XG5cbiAgLyoqIEdlbmVyYXRlIGEgYnJhbmQgd2hpbGUgeWllbGRpbmcgdmFsaWRhdGVkIHByb2dyZXNzIGFuZCB0ZXJtaW5hbCBldmVudHMuICovXG4gIGFzeW5jICpnZW5lcmF0ZShcbiAgICBpbnB1dDogQnJhbmRHZW5lcmF0aW9uUmVxdWVzdCxcbiAgICBvcHRpb25zOiBCcmFuZEdlbmVyYXRpb25TdHJlYW1PcHRpb25zID0ge30sXG4gICk6IEFzeW5jR2VuZXJhdG9yPEJyYW5kR2VuZXJhdGlvbkV2ZW50PiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IEJyYW5kR2VuZXJhdGlvblJlcXVlc3RTY2hlbWEucGFyc2UoaW5wdXQpO1xuICAgIGNvbnN0IGZldGNoZXIgPSBvcHRpb25zLmZldGNoID8/IGdsb2JhbFRoaXMuZmV0Y2guYmluZChnbG9iYWxUaGlzKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoZXIoYnJhbmRHZW5lcmF0ZVVybCh0aGlzLmNvbmZpZy5iYXNlUGF0aCksIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEFjY2VwdDogXCJ0ZXh0L2V2ZW50LXN0cmVhbVwiLFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSxcbiAgICAgIC4uLihvcHRpb25zLnNpZ25hbCA/IHsgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCB9IDoge30pLFxuICAgIH0pO1xuICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihhd2FpdCByZXNwb25zZUVycm9yKHJlc3BvbnNlKSk7XG4gICAgaWYgKCFyZXNwb25zZS5ib2R5KSB0aHJvdyBuZXcgRXJyb3IoXCJCcmFuZCBnZW5lcmF0aW9uIHJldHVybmVkIG5vIGV2ZW50IHN0cmVhbS5cIik7XG5cbiAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpO1xuICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogIWRvbmUgfSkucmVwbGFjZUFsbChcIlxcclxcblwiLCBcIlxcblwiKTtcbiAgICAgIGxldCBib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKFwiXFxuXFxuXCIpO1xuICAgICAgd2hpbGUgKGJvdW5kYXJ5ID49IDApIHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBwYXJzZUV2ZW50RnJhbWUoYnVmZmVyLnNsaWNlKDAsIGJvdW5kYXJ5KSk7XG4gICAgICAgIGlmIChldmVudCkgeWllbGQgZXZlbnQ7XG4gICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShib3VuZGFyeSArIDIpO1xuICAgICAgICBib3VuZGFyeSA9IGJ1ZmZlci5pbmRleE9mKFwiXFxuXFxuXCIpO1xuICAgICAgfVxuICAgICAgaWYgKGRvbmUpIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBldmVudCA9IHBhcnNlRXZlbnRGcmFtZShidWZmZXIudHJpbSgpKTtcbiAgICBpZiAoZXZlbnQpIHlpZWxkIGV2ZW50O1xuICB9XG5cbiAgLyoqIExpc3QgdGhlIGN1cnJlbnQgdXNlcidzIHBlcnNpc3RlZCBnZW5lcmF0ZWQgYnJhbmRzLCBuZXdlc3QgZmlyc3QuICovXG4gIGFzeW5jIGJyYW5kSGlzdG9yeShvcHRpb25zOiBCcmFuZEdlbmVyYXRpb25TdHJlYW1PcHRpb25zID0ge30pOiBQcm9taXNlPEJyYW5kSGlzdG9yeUVudHJ5W10+IHtcbiAgICBjb25zdCBmZXRjaGVyID0gb3B0aW9ucy5mZXRjaCA/PyBnbG9iYWxUaGlzLmZldGNoLmJpbmQoZ2xvYmFsVGhpcyk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKGJyYW5kSGlzdG9yeVVybCh0aGlzLmNvbmZpZy5iYXNlUGF0aCksIHtcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgIGhlYWRlcnM6IHsgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgLi4uKG9wdGlvbnMuc2lnbmFsID8geyBzaWduYWw6IG9wdGlvbnMuc2lnbmFsIH0gOiB7fSksXG4gICAgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKGF3YWl0IHJlc3BvbnNlRXJyb3IocmVzcG9uc2UpKTtcbiAgICByZXR1cm4gQnJhbmRIaXN0b3J5UmVzcG9uc2VTY2hlbWEucGFyc2UoYXdhaXQgcmVzcG9uc2UuanNvbigpKS5icmFuZHM7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.9.3"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
25
|
+
"@dbx-tools/shared-core": "^0.9.165",
|
|
26
26
|
"zod": "4.3.6"
|
|
27
27
|
},
|
|
28
28
|
"main": "./lib/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"./package.json": "./package.json"
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
|
-
"version": "0.9.
|
|
42
|
+
"version": "0.9.165",
|
|
43
43
|
"types": "./lib/index.d.ts",
|
|
44
44
|
"dbxToolsConfig": {
|
|
45
45
|
"tags": [
|
package/src/brand.ts
CHANGED
|
@@ -18,6 +18,7 @@ export const GENERATOR_BASE_PATH = `/api/${GENERATOR_PLUGIN_NAME}`;
|
|
|
18
18
|
/** Mount-relative route segments owned by the generator plugin. */
|
|
19
19
|
export const GENERATOR_ROUTES = {
|
|
20
20
|
generateBrand: "/brand/generate",
|
|
21
|
+
brandHistory: "/brand/history",
|
|
21
22
|
} as const;
|
|
22
23
|
|
|
23
24
|
/** Input accepted by brand generation. */
|
|
@@ -113,6 +114,31 @@ export const BrandPackageSchema = z
|
|
|
113
114
|
/** Generated branding package. */
|
|
114
115
|
export type BrandPackage = z.infer<typeof BrandPackageSchema>;
|
|
115
116
|
|
|
117
|
+
/** One persisted generated brand available to the browser picker. */
|
|
118
|
+
export const BrandHistoryEntrySchema = z
|
|
119
|
+
.object({
|
|
120
|
+
id: nonBlankString.describe("Stable request-derived brand history identifier."),
|
|
121
|
+
request: BrandGenerationRequestSchema.describe("Free-form request that generated the brand."),
|
|
122
|
+
generatedAt: z.iso.datetime().describe("Time the generated brand was stored."),
|
|
123
|
+
package: BrandPackageSchema.describe("Cached generated branding package."),
|
|
124
|
+
})
|
|
125
|
+
.strict()
|
|
126
|
+
.describe("Persisted generated brand available to one user.");
|
|
127
|
+
|
|
128
|
+
/** Persisted generated brand available to one user. */
|
|
129
|
+
export type BrandHistoryEntry = z.infer<typeof BrandHistoryEntrySchema>;
|
|
130
|
+
|
|
131
|
+
/** Browser response containing the current user's generated brands. */
|
|
132
|
+
export const BrandHistoryResponseSchema = z
|
|
133
|
+
.object({
|
|
134
|
+
brands: z.array(BrandHistoryEntrySchema).describe("Generated brands, newest first."),
|
|
135
|
+
})
|
|
136
|
+
.strict()
|
|
137
|
+
.describe("Current user's persisted generated-brand history.");
|
|
138
|
+
|
|
139
|
+
/** Current user's persisted generated-brand history. */
|
|
140
|
+
export type BrandHistoryResponse = z.infer<typeof BrandHistoryResponseSchema>;
|
|
141
|
+
|
|
116
142
|
/** Observable stages in one brand-generation workflow. */
|
|
117
143
|
export const BrandGenerationStageSchema = z.enum([
|
|
118
144
|
"search",
|
|
@@ -198,6 +224,11 @@ export function brandGenerateUrl(basePath: string = GENERATOR_BASE_PATH): string
|
|
|
198
224
|
return `${basePath.replace(/\/+$/, "")}${GENERATOR_ROUTES.generateBrand}`;
|
|
199
225
|
}
|
|
200
226
|
|
|
227
|
+
/** Build the generated-brand history endpoint from the published base path. */
|
|
228
|
+
export function brandHistoryUrl(basePath: string = GENERATOR_BASE_PATH): string {
|
|
229
|
+
return `${basePath.replace(/\/+$/, "")}${GENERATOR_ROUTES.brandHistory}`;
|
|
230
|
+
}
|
|
231
|
+
|
|
201
232
|
/** Parse one complete SSE frame into its validated brand event. */
|
|
202
233
|
function parseEventFrame(frame: string): BrandGenerationEvent | undefined {
|
|
203
234
|
const data = frame
|
|
@@ -270,4 +301,16 @@ export class GeneratorPluginClient {
|
|
|
270
301
|
const event = parseEventFrame(buffer.trim());
|
|
271
302
|
if (event) yield event;
|
|
272
303
|
}
|
|
304
|
+
|
|
305
|
+
/** List the current user's persisted generated brands, newest first. */
|
|
306
|
+
async brandHistory(options: BrandGenerationStreamOptions = {}): Promise<BrandHistoryEntry[]> {
|
|
307
|
+
const fetcher = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
308
|
+
const response = await fetcher(brandHistoryUrl(this.config.basePath), {
|
|
309
|
+
method: "GET",
|
|
310
|
+
headers: { Accept: "application/json" },
|
|
311
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
312
|
+
});
|
|
313
|
+
if (!response.ok) throw new Error(await responseError(response));
|
|
314
|
+
return BrandHistoryResponseSchema.parse(await response.json()).brands;
|
|
315
|
+
}
|
|
273
316
|
}
|