@lightdash/common 0.1921.0 → 0.1923.0
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/cjs/ee/AiAgent/schemas/visualizations/index.d.ts +5 -4
- package/dist/cjs/ee/AiAgent/schemas/visualizations/index.d.ts.map +1 -1
- package/dist/cjs/ee/AiAgent/schemas/visualizations/index.js +8 -4
- package/dist/cjs/ee/AiAgent/schemas/visualizations/index.js.map +1 -1
- package/dist/cjs/schemas/json/lightdash-project-config-1.0.json +21 -1
- package/dist/cjs/utils/loadLightdashProjectConfig.d.ts.map +1 -1
- package/dist/cjs/utils/loadLightdashProjectConfig.js +4 -1
- package/dist/cjs/utils/loadLightdashProjectConfig.js.map +1 -1
- package/dist/cjs/utils/loadLightdashProjectConfig.mock.d.ts +12 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.mock.d.ts.map +1 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.mock.js +68 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.mock.js.map +1 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.test.d.ts +2 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.test.d.ts.map +1 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.test.js +73 -0
- package/dist/cjs/utils/loadLightdashProjectConfig.test.js.map +1 -0
- package/dist/esm/ee/AiAgent/schemas/visualizations/index.d.ts +5 -4
- package/dist/esm/ee/AiAgent/schemas/visualizations/index.d.ts.map +1 -1
- package/dist/esm/ee/AiAgent/schemas/visualizations/index.js +7 -3
- package/dist/esm/ee/AiAgent/schemas/visualizations/index.js.map +1 -1
- package/dist/esm/schemas/json/lightdash-project-config-1.0.json +21 -1
- package/dist/esm/utils/loadLightdashProjectConfig.d.ts.map +1 -1
- package/dist/esm/utils/loadLightdashProjectConfig.js +4 -1
- package/dist/esm/utils/loadLightdashProjectConfig.js.map +1 -1
- package/dist/esm/utils/loadLightdashProjectConfig.mock.d.ts +12 -0
- package/dist/esm/utils/loadLightdashProjectConfig.mock.d.ts.map +1 -0
- package/dist/esm/utils/loadLightdashProjectConfig.mock.js +65 -0
- package/dist/esm/utils/loadLightdashProjectConfig.mock.js.map +1 -0
- package/dist/esm/utils/loadLightdashProjectConfig.test.d.ts +2 -0
- package/dist/esm/utils/loadLightdashProjectConfig.test.d.ts.map +1 -0
- package/dist/esm/utils/loadLightdashProjectConfig.test.js +71 -0
- package/dist/esm/utils/loadLightdashProjectConfig.test.js.map +1 -0
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/ee/AiAgent/schemas/visualizations/index.d.ts +5 -4
- package/dist/types/ee/AiAgent/schemas/visualizations/index.d.ts.map +1 -1
- package/dist/types/utils/loadLightdashProjectConfig.d.ts.map +1 -1
- package/dist/types/utils/loadLightdashProjectConfig.mock.d.ts +12 -0
- package/dist/types/utils/loadLightdashProjectConfig.mock.d.ts.map +1 -0
- package/dist/types/utils/loadLightdashProjectConfig.test.d.ts +2 -0
- package/dist/types/utils/loadLightdashProjectConfig.test.d.ts.map +1 -0
- package/package.json +3 -2
@@ -2,10 +2,11 @@ import { z } from 'zod';
|
|
2
2
|
export * from './tableViz';
|
3
3
|
export * from './timeSeriesViz';
|
4
4
|
export * from './verticalBarViz';
|
5
|
-
export declare const ToolNameSchema: z.ZodEnum<["
|
5
|
+
export declare const ToolNameSchema: z.ZodEnum<["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig", "findExplores", "findFields", "findDashboards", "findCharts"]>;
|
6
6
|
export type ToolName = z.infer<typeof ToolNameSchema>;
|
7
7
|
export declare const isToolName: (toolName: string) => toolName is ToolName;
|
8
|
-
export declare const ToolDisplayMessagesSchema: z.ZodRecord<z.ZodEnum<["
|
9
|
-
export declare const TOOL_DISPLAY_MESSAGES: Partial<Record<"
|
10
|
-
export declare const TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL: Partial<Record<"
|
8
|
+
export declare const ToolDisplayMessagesSchema: z.ZodRecord<z.ZodEnum<["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig", "findExplores", "findFields", "findDashboards", "findCharts"]>, z.ZodString>;
|
9
|
+
export declare const TOOL_DISPLAY_MESSAGES: Partial<Record<"generateBarVizConfig" | "generateTableVizConfig" | "generateTimeSeriesVizConfig" | "findExplores" | "findFields" | "findDashboards" | "findCharts", string>>;
|
10
|
+
export declare const TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL: Partial<Record<"generateBarVizConfig" | "generateTableVizConfig" | "generateTimeSeriesVizConfig" | "findExplores" | "findFields" | "findDashboards" | "findCharts", string>>;
|
11
|
+
export declare const AVAILABLE_VISUALIZATION_TYPES: readonly ["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig"];
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AASjC,eAAO,MAAM,cAAc,4JAMzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,QAAQ,IAAI,QACZ,CAAC;AAG/C,eAAO,MAAM,yBAAyB,sLAAuC,CAAC;AAE9E,eAAO,MAAM,qBAAqB,8KAQhC,CAAC;AAGH,eAAO,MAAM,qCAAqC,8KAS5C,CAAC;AAEP,eAAO,MAAM,6BAA6B,4FAAqB,CAAC"}
|
@@ -1,18 +1,21 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL = exports.TOOL_DISPLAY_MESSAGES = exports.ToolDisplayMessagesSchema = exports.isToolName = exports.ToolNameSchema = void 0;
|
3
|
+
exports.AVAILABLE_VISUALIZATION_TYPES = exports.TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL = exports.TOOL_DISPLAY_MESSAGES = exports.ToolDisplayMessagesSchema = exports.isToolName = exports.ToolNameSchema = void 0;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const zod_1 = require("zod");
|
6
6
|
tslib_1.__exportStar(require("./tableViz"), exports);
|
7
7
|
tslib_1.__exportStar(require("./timeSeriesViz"), exports);
|
8
8
|
tslib_1.__exportStar(require("./verticalBarViz"), exports);
|
9
|
+
const VisualizationTools = [
|
10
|
+
'generateBarVizConfig',
|
11
|
+
'generateTableVizConfig',
|
12
|
+
'generateTimeSeriesVizConfig',
|
13
|
+
];
|
9
14
|
// define tool names
|
10
15
|
exports.ToolNameSchema = zod_1.z.enum([
|
16
|
+
...VisualizationTools,
|
11
17
|
'findExplores',
|
12
18
|
'findFields',
|
13
|
-
'generateBarVizConfig',
|
14
|
-
'generateTableVizConfig',
|
15
|
-
'generateTimeSeriesVizConfig',
|
16
19
|
'findDashboards',
|
17
20
|
'findCharts',
|
18
21
|
]);
|
@@ -39,4 +42,5 @@ exports.TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL = exports.ToolDisplayMessagesSchem
|
|
39
42
|
generateTimeSeriesVizConfig: 'Generated a line chart',
|
40
43
|
findCharts: 'Found relevant charts',
|
41
44
|
});
|
45
|
+
exports.AVAILABLE_VISUALIZATION_TYPES = VisualizationTools;
|
42
46
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qDAA2B;AAC3B,0DAAgC;AAChC,2DAAiC;AAEjC,oBAAoB;AACP,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACjC,cAAc;IACd,YAAY;IACZ,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qDAA2B;AAC3B,0DAAgC;AAChC,2DAAiC;AAEjC,MAAM,kBAAkB,GAAG;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,6BAA6B;CACvB,CAAC;AAEX,oBAAoB;AACP,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACjC,GAAG,kBAAkB;IACrB,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,YAAY;CACf,CAAC,CAAC;AAII,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAwB,EAAE,CACjE,sBAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AADlC,QAAA,UAAU,cACwB;AAE/C,0BAA0B;AACb,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC,sBAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEjE,QAAA,qBAAqB,GAAG,iCAAyB,CAAC,KAAK,CAAC;IACjE,YAAY,EAAE,2BAA2B;IACzC,cAAc,EAAE,6BAA6B;IAC7C,UAAU,EAAE,yBAAyB;IACrC,oBAAoB,EAAE,wBAAwB;IAC9C,sBAAsB,EAAE,oBAAoB;IAC5C,2BAA2B,EAAE,yBAAyB;IACtD,UAAU,EAAE,yBAAyB;CACxC,CAAC,CAAC;AAEH,2BAA2B;AACd,QAAA,qCAAqC,GAC9C,iCAAyB,CAAC,KAAK,CAAC;IAC5B,YAAY,EAAE,yBAAyB;IACvC,cAAc,EAAE,2BAA2B;IAC3C,UAAU,EAAE,uBAAuB;IACnC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,mBAAmB;IAC3C,2BAA2B,EAAE,wBAAwB;IACrD,UAAU,EAAE,uBAAuB;CACtC,CAAC,CAAC;AAEM,QAAA,6BAA6B,GAAG,kBAAkB,CAAC"}
|
@@ -64,6 +64,7 @@
|
|
64
64
|
"options": {
|
65
65
|
"description": "A list of possible values for the parameter",
|
66
66
|
"type": "array",
|
67
|
+
"minItems": 1,
|
67
68
|
"items": {
|
68
69
|
"type": "string"
|
69
70
|
}
|
@@ -104,7 +105,26 @@
|
|
104
105
|
"required": ["model", "dimension"]
|
105
106
|
}
|
106
107
|
},
|
107
|
-
"required": ["label"]
|
108
|
+
"required": ["label"],
|
109
|
+
"anyOf": [
|
110
|
+
{
|
111
|
+
"required": ["options_from_dimension"],
|
112
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"required": ["options"],
|
116
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"properties": {
|
120
|
+
"allow_custom_values": {
|
121
|
+
"enum": [true]
|
122
|
+
}
|
123
|
+
},
|
124
|
+
"required": ["allow_custom_values"],
|
125
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
126
|
+
}
|
127
|
+
]
|
108
128
|
}
|
109
129
|
}
|
110
130
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"loadLightdashProjectConfig.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,iCAAiC,CAAC;AAKzC,eAAO,MAAM,0BAA0B,qBACjB,MAAM,aACb,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,KAC7D,OAAO,CAAC,sBAAsB,CAyChC,CAAC"}
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadLightdashProjectConfig = void 0;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const ajv_1 = tslib_1.__importDefault(require("ajv"));
|
6
|
+
const ajv_errors_1 = tslib_1.__importDefault(require("ajv-errors"));
|
6
7
|
const better_ajv_errors_1 = tslib_1.__importDefault(require("better-ajv-errors"));
|
7
8
|
const yaml = tslib_1.__importStar(require("js-yaml"));
|
8
9
|
const lightdash_project_config_1_0_json_1 = tslib_1.__importDefault(require("../schemas/json/lightdash-project-config-1.0.json"));
|
@@ -22,7 +23,9 @@ const loadLightdashProjectConfig = async (yamlFileContents, onLoaded) => {
|
|
22
23
|
...defaultConfig,
|
23
24
|
...loadedConfig,
|
24
25
|
};
|
25
|
-
const ajv = new ajv_1.default({ coerceTypes: true });
|
26
|
+
const ajv = new ajv_1.default({ coerceTypes: true, allErrors: true });
|
27
|
+
// This method call extends JSON schema to utilize AJV Errors
|
28
|
+
(0, ajv_errors_1.default)(ajv);
|
26
29
|
const validate = ajv.compile(lightdash_project_config_1_0_json_1.default);
|
27
30
|
if (!validate(configFile)) {
|
28
31
|
const errors = (0, better_ajv_errors_1.default)(lightdash_project_config_1_0_json_1.default, configFile, validate.errors || [], { indent: 2 });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"loadLightdashProjectConfig.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AACtB,kFAAgD;AAChD,sDAAgC;AAChC,kIAA6F;AAC7F,4CAA6C;AAC7C,4EAGyC;AAEzC,MAAM,aAAa,GAA2B;IAC1C,SAAS,EAAE,iDAAwB;CACtC,CAAC;AACK,MAAM,0BAA0B,GAAG,KAAK,EAC3C,gBAAwB,EACxB,QAA4D,EAC7B,EAAE;IACjC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,gBAAgB,CACgB,CAAC;IACrC,kDAAkD;IAClD,MAAM,UAAU,GAA2B;QACvC,GAAG,aAAa;QAChB,GAAG,YAAY;KAClB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AACtB,oEAAmC;AACnC,kFAAgD;AAChD,sDAAgC;AAChC,kIAA6F;AAC7F,4CAA6C;AAC7C,4EAGyC;AAEzC,MAAM,aAAa,GAA2B;IAC1C,SAAS,EAAE,iDAAwB;CACtC,CAAC;AACK,MAAM,0BAA0B,GAAG,KAAK,EAC3C,gBAAwB,EACxB,QAA4D,EAC7B,EAAE;IACjC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,gBAAgB,CACgB,CAAC;IACrC,kDAAkD;IAClD,MAAM,UAAU,GAA2B;QACvC,GAAG,aAAa;QAChB,GAAG,YAAY;KAClB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,6DAA6D;IAC7D,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CACxB,2CAA4B,CAC/B,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,IAAA,2BAAe,EAC1B,2CAA4B,EAC5B,UAAU,EACV,QAAQ,CAAC,MAAM,IAAI,EAAE,EACrB,EAAE,MAAM,EAAE,CAAC,EAAE,CAChB,CAAC;QACF,MAAM,IAAI,mBAAU,CAChB,8CAA8C,MAAM,EAAE,CACzD,CAAC;IACN,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAChC,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AA5CW,QAAA,0BAA0B,8BA4CrC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/**
|
2
|
+
* Mock YAML content for lightdash project config tests
|
3
|
+
*/
|
4
|
+
export declare const emptyConfig = "";
|
5
|
+
export declare const validConfigWithParameters = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options:\n - option1\n - option2\n";
|
6
|
+
export declare const validConfigWithOptionsFromDimension = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options_from_dimension:\n model: test_model\n dimension: test_dimension\n";
|
7
|
+
export declare const validConfigWithAllowCustomValues = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n allow_custom_values: true\n";
|
8
|
+
export declare const invalidConfigWithNoOptions = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n";
|
9
|
+
export declare const invalidConfigWithAllowCustomValuesFalse = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n allow_custom_values: false\n";
|
10
|
+
export declare const configWithEmptyOptionsArray = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options: []\n";
|
11
|
+
export declare const invalidConfigWithIncompleteOptionsFromDimension = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options_from_dimension:\n model: test_model\n";
|
12
|
+
//# sourceMappingURL=loadLightdashProjectConfig.mock.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.mock.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.mock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,yBAAyB,sJASrC,CAAC;AAEF,eAAO,MAAM,mCAAmC,6LAS/C,CAAC;AAEF,eAAO,MAAM,gCAAgC,qIAO5C,CAAC;AAEF,eAAO,MAAM,0BAA0B,sGAMtC,CAAC;AAEF,eAAO,MAAM,uCAAuC,sIAOnD,CAAC;AAEF,eAAO,MAAM,2BAA2B,uHAOvC,CAAC;AAEF,eAAO,MAAM,+CAA+C,4JAQ3D,CAAC"}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Mock YAML content for lightdash project config tests
|
4
|
+
*/
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.invalidConfigWithIncompleteOptionsFromDimension = exports.configWithEmptyOptionsArray = exports.invalidConfigWithAllowCustomValuesFalse = exports.invalidConfigWithNoOptions = exports.validConfigWithAllowCustomValues = exports.validConfigWithOptionsFromDimension = exports.validConfigWithParameters = exports.emptyConfig = void 0;
|
7
|
+
exports.emptyConfig = '';
|
8
|
+
exports.validConfigWithParameters = `
|
9
|
+
spotlight:
|
10
|
+
default_visibility: show
|
11
|
+
parameters:
|
12
|
+
test_param:
|
13
|
+
label: Test Parameter
|
14
|
+
options:
|
15
|
+
- option1
|
16
|
+
- option2
|
17
|
+
`;
|
18
|
+
exports.validConfigWithOptionsFromDimension = `
|
19
|
+
spotlight:
|
20
|
+
default_visibility: show
|
21
|
+
parameters:
|
22
|
+
test_param:
|
23
|
+
label: Test Parameter
|
24
|
+
options_from_dimension:
|
25
|
+
model: test_model
|
26
|
+
dimension: test_dimension
|
27
|
+
`;
|
28
|
+
exports.validConfigWithAllowCustomValues = `
|
29
|
+
spotlight:
|
30
|
+
default_visibility: show
|
31
|
+
parameters:
|
32
|
+
test_param:
|
33
|
+
label: Test Parameter
|
34
|
+
allow_custom_values: true
|
35
|
+
`;
|
36
|
+
exports.invalidConfigWithNoOptions = `
|
37
|
+
spotlight:
|
38
|
+
default_visibility: show
|
39
|
+
parameters:
|
40
|
+
test_param:
|
41
|
+
label: Test Parameter
|
42
|
+
`;
|
43
|
+
exports.invalidConfigWithAllowCustomValuesFalse = `
|
44
|
+
spotlight:
|
45
|
+
default_visibility: show
|
46
|
+
parameters:
|
47
|
+
test_param:
|
48
|
+
label: Test Parameter
|
49
|
+
allow_custom_values: false
|
50
|
+
`;
|
51
|
+
exports.configWithEmptyOptionsArray = `
|
52
|
+
spotlight:
|
53
|
+
default_visibility: show
|
54
|
+
parameters:
|
55
|
+
test_param:
|
56
|
+
label: Test Parameter
|
57
|
+
options: []
|
58
|
+
`;
|
59
|
+
exports.invalidConfigWithIncompleteOptionsFromDimension = `
|
60
|
+
spotlight:
|
61
|
+
default_visibility: show
|
62
|
+
parameters:
|
63
|
+
test_param:
|
64
|
+
label: Test Parameter
|
65
|
+
options_from_dimension:
|
66
|
+
model: test_model
|
67
|
+
`;
|
68
|
+
//# sourceMappingURL=loadLightdashProjectConfig.mock.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.mock.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.mock.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,WAAW,GAAG,EAAE,CAAC;AAEjB,QAAA,yBAAyB,GAAG;;;;;;;;;CASxC,CAAC;AAEW,QAAA,mCAAmC,GAAG;;;;;;;;;CASlD,CAAC;AAEW,QAAA,gCAAgC,GAAG;;;;;;;CAO/C,CAAC;AAEW,QAAA,0BAA0B,GAAG;;;;;;CAMzC,CAAC;AAEW,QAAA,uCAAuC,GAAG;;;;;;;CAOtD,CAAC;AAEW,QAAA,2BAA2B,GAAG;;;;;;;CAO1C,CAAC;AAEW,QAAA,+CAA+C,GAAG;;;;;;;;CAQ9D,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.test.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const errors_1 = require("../types/errors");
|
4
|
+
const loadLightdashProjectConfig_1 = require("./loadLightdashProjectConfig");
|
5
|
+
const loadLightdashProjectConfig_mock_1 = require("./loadLightdashProjectConfig.mock");
|
6
|
+
describe('loadLightdashProjectConfig', () => {
|
7
|
+
it('should load an empty config', async () => {
|
8
|
+
const config = await (0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.emptyConfig);
|
9
|
+
expect(config).toEqual({
|
10
|
+
spotlight: {
|
11
|
+
default_visibility: 'show',
|
12
|
+
},
|
13
|
+
});
|
14
|
+
});
|
15
|
+
it('should load a valid config with parameters', async () => {
|
16
|
+
const config = await (0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.validConfigWithParameters);
|
17
|
+
expect(config).toEqual({
|
18
|
+
spotlight: {
|
19
|
+
default_visibility: 'show',
|
20
|
+
},
|
21
|
+
parameters: {
|
22
|
+
test_param: {
|
23
|
+
label: 'Test Parameter',
|
24
|
+
options: ['option1', 'option2'],
|
25
|
+
},
|
26
|
+
},
|
27
|
+
});
|
28
|
+
});
|
29
|
+
it('should load a valid config with parameters using options_from_dimension', async () => {
|
30
|
+
const config = await (0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.validConfigWithOptionsFromDimension);
|
31
|
+
expect(config).toEqual({
|
32
|
+
spotlight: {
|
33
|
+
default_visibility: 'show',
|
34
|
+
},
|
35
|
+
parameters: {
|
36
|
+
test_param: {
|
37
|
+
label: 'Test Parameter',
|
38
|
+
options_from_dimension: {
|
39
|
+
model: 'test_model',
|
40
|
+
dimension: 'test_dimension',
|
41
|
+
},
|
42
|
+
},
|
43
|
+
},
|
44
|
+
});
|
45
|
+
});
|
46
|
+
it('should load a valid config with parameters using allow_custom_values', async () => {
|
47
|
+
const config = await (0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.validConfigWithAllowCustomValues);
|
48
|
+
expect(config).toEqual({
|
49
|
+
spotlight: {
|
50
|
+
default_visibility: 'show',
|
51
|
+
},
|
52
|
+
parameters: {
|
53
|
+
test_param: {
|
54
|
+
label: 'Test Parameter',
|
55
|
+
allow_custom_values: true,
|
56
|
+
},
|
57
|
+
},
|
58
|
+
});
|
59
|
+
});
|
60
|
+
it('should throw an error for invalid parameter with no options', async () => {
|
61
|
+
await expect((0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.invalidConfigWithNoOptions)).rejects.toThrow(errors_1.ParseError);
|
62
|
+
});
|
63
|
+
it('should throw an error for invalid parameter with allow_custom_values set to false', async () => {
|
64
|
+
await expect((0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.invalidConfigWithAllowCustomValuesFalse)).rejects.toThrow(errors_1.ParseError);
|
65
|
+
});
|
66
|
+
it('should throw an error for parameter with empty options array', async () => {
|
67
|
+
await expect((0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.configWithEmptyOptionsArray)).rejects.toThrow(errors_1.ParseError);
|
68
|
+
});
|
69
|
+
it('should throw an error for invalid parameter with incomplete options_from_dimension', async () => {
|
70
|
+
await expect((0, loadLightdashProjectConfig_1.loadLightdashProjectConfig)(loadLightdashProjectConfig_mock_1.invalidConfigWithIncompleteOptionsFromDimension)).rejects.toThrow(errors_1.ParseError);
|
71
|
+
});
|
72
|
+
});
|
73
|
+
//# sourceMappingURL=loadLightdashProjectConfig.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.test.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.test.ts"],"names":[],"mappings":";;AAAA,4CAA6C;AAC7C,6EAA0E;AAC1E,uFAS2C;AAE3C,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA0B,EAAC,6CAAW,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,SAAS,EAAE;gBACP,kBAAkB,EAAE,MAAM;aAC7B;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA0B,EAC3C,2DAAyB,CAC5B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,SAAS,EAAE;gBACP,kBAAkB,EAAE,MAAM;aAC7B;YACD,UAAU,EAAE;gBACR,UAAU,EAAE;oBACR,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;iBAClC;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA0B,EAC3C,qEAAmC,CACtC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,SAAS,EAAE;gBACP,kBAAkB,EAAE,MAAM;aAC7B;YACD,UAAU,EAAE;gBACR,UAAU,EAAE;oBACR,KAAK,EAAE,gBAAgB;oBACvB,sBAAsB,EAAE;wBACpB,KAAK,EAAE,YAAY;wBACnB,SAAS,EAAE,gBAAgB;qBAC9B;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA0B,EAC3C,kEAAgC,CACnC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,SAAS,EAAE;gBACP,kBAAkB,EAAE,MAAM;aAC7B;YACD,UAAU,EAAE;gBACR,UAAU,EAAE;oBACR,KAAK,EAAE,gBAAgB;oBACvB,mBAAmB,EAAE,IAAI;iBAC5B;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,CACR,IAAA,uDAA0B,EAAC,4DAA0B,CAAC,CACzD,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,MAAM,CACR,IAAA,uDAA0B,EAAC,yEAAuC,CAAC,CACtE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,CACR,IAAA,uDAA0B,EAAC,6DAA2B,CAAC,CAC1D,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;QAChG,MAAM,MAAM,CACR,IAAA,uDAA0B,EACtB,iFAA+C,CAClD,CACJ,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAU,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
@@ -2,10 +2,11 @@ import { z } from 'zod';
|
|
2
2
|
export * from './tableViz';
|
3
3
|
export * from './timeSeriesViz';
|
4
4
|
export * from './verticalBarViz';
|
5
|
-
export declare const ToolNameSchema: z.ZodEnum<["
|
5
|
+
export declare const ToolNameSchema: z.ZodEnum<["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig", "findExplores", "findFields", "findDashboards", "findCharts"]>;
|
6
6
|
export type ToolName = z.infer<typeof ToolNameSchema>;
|
7
7
|
export declare const isToolName: (toolName: string) => toolName is ToolName;
|
8
|
-
export declare const ToolDisplayMessagesSchema: z.ZodRecord<z.ZodEnum<["
|
9
|
-
export declare const TOOL_DISPLAY_MESSAGES: Partial<Record<"
|
10
|
-
export declare const TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL: Partial<Record<"
|
8
|
+
export declare const ToolDisplayMessagesSchema: z.ZodRecord<z.ZodEnum<["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig", "findExplores", "findFields", "findDashboards", "findCharts"]>, z.ZodString>;
|
9
|
+
export declare const TOOL_DISPLAY_MESSAGES: Partial<Record<"generateBarVizConfig" | "generateTableVizConfig" | "generateTimeSeriesVizConfig" | "findExplores" | "findFields" | "findDashboards" | "findCharts", string>>;
|
10
|
+
export declare const TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL: Partial<Record<"generateBarVizConfig" | "generateTableVizConfig" | "generateTimeSeriesVizConfig" | "findExplores" | "findFields" | "findDashboards" | "findCharts", string>>;
|
11
|
+
export declare const AVAILABLE_VISUALIZATION_TYPES: readonly ["generateBarVizConfig", "generateTableVizConfig", "generateTimeSeriesVizConfig"];
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AASjC,eAAO,MAAM,cAAc,4JAMzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,QAAQ,IAAI,QACZ,CAAC;AAG/C,eAAO,MAAM,yBAAyB,sLAAuC,CAAC;AAE9E,eAAO,MAAM,qBAAqB,8KAQhC,CAAC;AAGH,eAAO,MAAM,qCAAqC,8KAS5C,CAAC;AAEP,eAAO,MAAM,6BAA6B,4FAAqB,CAAC"}
|
@@ -2,13 +2,16 @@ import { z } from 'zod';
|
|
2
2
|
export * from './tableViz';
|
3
3
|
export * from './timeSeriesViz';
|
4
4
|
export * from './verticalBarViz';
|
5
|
+
const VisualizationTools = [
|
6
|
+
'generateBarVizConfig',
|
7
|
+
'generateTableVizConfig',
|
8
|
+
'generateTimeSeriesVizConfig',
|
9
|
+
];
|
5
10
|
// define tool names
|
6
11
|
export const ToolNameSchema = z.enum([
|
12
|
+
...VisualizationTools,
|
7
13
|
'findExplores',
|
8
14
|
'findFields',
|
9
|
-
'generateBarVizConfig',
|
10
|
-
'generateTableVizConfig',
|
11
|
-
'generateTimeSeriesVizConfig',
|
12
15
|
'findDashboards',
|
13
16
|
'findCharts',
|
14
17
|
]);
|
@@ -34,4 +37,5 @@ export const TOOL_DISPLAY_MESSAGES_AFTER_TOOL_CALL = ToolDisplayMessagesSchema.p
|
|
34
37
|
generateTimeSeriesVizConfig: 'Generated a line chart',
|
35
38
|
findCharts: 'Found relevant charts',
|
36
39
|
});
|
40
|
+
export const AVAILABLE_VISUALIZATION_TYPES = VisualizationTools;
|
37
41
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,oBAAoB;AACpB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,cAAc;IACd,YAAY;IACZ,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/ee/AiAgent/schemas/visualizations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,MAAM,kBAAkB,GAAG;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,6BAA6B;CACvB,CAAC;AAEX,oBAAoB;AACpB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,GAAG,kBAAkB;IACrB,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,YAAY;CACf,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAwB,EAAE,CACjE,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AAE/C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,KAAK,CAAC;IACjE,YAAY,EAAE,2BAA2B;IACzC,cAAc,EAAE,6BAA6B;IAC7C,UAAU,EAAE,yBAAyB;IACrC,oBAAoB,EAAE,wBAAwB;IAC9C,sBAAsB,EAAE,oBAAoB;IAC5C,2BAA2B,EAAE,yBAAyB;IACtD,UAAU,EAAE,yBAAyB;CACxC,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qCAAqC,GAC9C,yBAAyB,CAAC,KAAK,CAAC;IAC5B,YAAY,EAAE,yBAAyB;IACvC,cAAc,EAAE,2BAA2B;IAC3C,UAAU,EAAE,uBAAuB;IACnC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,mBAAmB;IAC3C,2BAA2B,EAAE,wBAAwB;IACrD,UAAU,EAAE,uBAAuB;CACtC,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC"}
|
@@ -64,6 +64,7 @@
|
|
64
64
|
"options": {
|
65
65
|
"description": "A list of possible values for the parameter",
|
66
66
|
"type": "array",
|
67
|
+
"minItems": 1,
|
67
68
|
"items": {
|
68
69
|
"type": "string"
|
69
70
|
}
|
@@ -104,7 +105,26 @@
|
|
104
105
|
"required": ["model", "dimension"]
|
105
106
|
}
|
106
107
|
},
|
107
|
-
"required": ["label"]
|
108
|
+
"required": ["label"],
|
109
|
+
"anyOf": [
|
110
|
+
{
|
111
|
+
"required": ["options_from_dimension"],
|
112
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"required": ["options"],
|
116
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"properties": {
|
120
|
+
"allow_custom_values": {
|
121
|
+
"enum": [true]
|
122
|
+
}
|
123
|
+
},
|
124
|
+
"required": ["allow_custom_values"],
|
125
|
+
"errorMessage": "Must have one of the following properties: allow_custom_values, options, options_from_dimension"
|
126
|
+
}
|
127
|
+
]
|
108
128
|
}
|
109
129
|
}
|
110
130
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"loadLightdashProjectConfig.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,iCAAiC,CAAC;AAKzC,eAAO,MAAM,0BAA0B,qBACjB,MAAM,aACb,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,KAC7D,OAAO,CAAC,sBAAsB,CAyChC,CAAC"}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import Ajv from 'ajv';
|
2
|
+
import AjvErrors from 'ajv-errors';
|
2
3
|
import betterAjvErrors from 'better-ajv-errors';
|
3
4
|
import * as yaml from 'js-yaml';
|
4
5
|
import lightdashProjectConfigSchema from '../schemas/json/lightdash-project-config-1.0.json';
|
@@ -18,7 +19,9 @@ export const loadLightdashProjectConfig = async (yamlFileContents, onLoaded) =>
|
|
18
19
|
...defaultConfig,
|
19
20
|
...loadedConfig,
|
20
21
|
};
|
21
|
-
const ajv = new Ajv({ coerceTypes: true });
|
22
|
+
const ajv = new Ajv({ coerceTypes: true, allErrors: true });
|
23
|
+
// This method call extends JSON schema to utilize AJV Errors
|
24
|
+
AjvErrors(ajv);
|
22
25
|
const validate = ajv.compile(lightdashProjectConfigSchema);
|
23
26
|
if (!validate(configFile)) {
|
24
27
|
const errors = betterAjvErrors(lightdashProjectConfigSchema, configFile, validate.errors || [], { indent: 2 });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"loadLightdashProjectConfig.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,4BAA4B,MAAM,mDAAmD,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACH,wBAAwB,GAE3B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,aAAa,GAA2B;IAC1C,SAAS,EAAE,wBAAwB;CACtC,CAAC;AACF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,gBAAwB,EACxB,QAA4D,EAC7B,EAAE;IACjC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,gBAAgB,CACgB,CAAC;IACrC,kDAAkD;IAClD,MAAM,UAAU,GAA2B;QACvC,GAAG,aAAa;QAChB,GAAG,YAAY;KAClB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,4BAA4B,MAAM,mDAAmD,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACH,wBAAwB,GAE3B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,aAAa,GAA2B;IAC1C,SAAS,EAAE,wBAAwB;CACtC,CAAC;AACF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC3C,gBAAwB,EACxB,QAA4D,EAC7B,EAAE;IACjC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC1B,gBAAgB,CACgB,CAAC;IACrC,kDAAkD;IAClD,MAAM,UAAU,GAA2B;QACvC,GAAG,aAAa;QAChB,GAAG,YAAY;KAClB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,6DAA6D;IAC7D,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CACxB,4BAA4B,CAC/B,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,eAAe,CAC1B,4BAA4B,EAC5B,UAAU,EACV,QAAQ,CAAC,MAAM,IAAI,EAAE,EACrB,EAAE,MAAM,EAAE,CAAC,EAAE,CAChB,CAAC;QACF,MAAM,IAAI,UAAU,CAChB,8CAA8C,MAAM,EAAE,CACzD,CAAC;IACN,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAChC,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/**
|
2
|
+
* Mock YAML content for lightdash project config tests
|
3
|
+
*/
|
4
|
+
export declare const emptyConfig = "";
|
5
|
+
export declare const validConfigWithParameters = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options:\n - option1\n - option2\n";
|
6
|
+
export declare const validConfigWithOptionsFromDimension = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options_from_dimension:\n model: test_model\n dimension: test_dimension\n";
|
7
|
+
export declare const validConfigWithAllowCustomValues = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n allow_custom_values: true\n";
|
8
|
+
export declare const invalidConfigWithNoOptions = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n";
|
9
|
+
export declare const invalidConfigWithAllowCustomValuesFalse = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n allow_custom_values: false\n";
|
10
|
+
export declare const configWithEmptyOptionsArray = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options: []\n";
|
11
|
+
export declare const invalidConfigWithIncompleteOptionsFromDimension = "\nspotlight:\n default_visibility: show\nparameters:\n test_param:\n label: Test Parameter\n options_from_dimension:\n model: test_model\n";
|
12
|
+
//# sourceMappingURL=loadLightdashProjectConfig.mock.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.mock.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.mock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,yBAAyB,sJASrC,CAAC;AAEF,eAAO,MAAM,mCAAmC,6LAS/C,CAAC;AAEF,eAAO,MAAM,gCAAgC,qIAO5C,CAAC;AAEF,eAAO,MAAM,0BAA0B,sGAMtC,CAAC;AAEF,eAAO,MAAM,uCAAuC,sIAOnD,CAAC;AAEF,eAAO,MAAM,2BAA2B,uHAOvC,CAAC;AAEF,eAAO,MAAM,+CAA+C,4JAQ3D,CAAC"}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/**
|
2
|
+
* Mock YAML content for lightdash project config tests
|
3
|
+
*/
|
4
|
+
export const emptyConfig = '';
|
5
|
+
export const validConfigWithParameters = `
|
6
|
+
spotlight:
|
7
|
+
default_visibility: show
|
8
|
+
parameters:
|
9
|
+
test_param:
|
10
|
+
label: Test Parameter
|
11
|
+
options:
|
12
|
+
- option1
|
13
|
+
- option2
|
14
|
+
`;
|
15
|
+
export const validConfigWithOptionsFromDimension = `
|
16
|
+
spotlight:
|
17
|
+
default_visibility: show
|
18
|
+
parameters:
|
19
|
+
test_param:
|
20
|
+
label: Test Parameter
|
21
|
+
options_from_dimension:
|
22
|
+
model: test_model
|
23
|
+
dimension: test_dimension
|
24
|
+
`;
|
25
|
+
export const validConfigWithAllowCustomValues = `
|
26
|
+
spotlight:
|
27
|
+
default_visibility: show
|
28
|
+
parameters:
|
29
|
+
test_param:
|
30
|
+
label: Test Parameter
|
31
|
+
allow_custom_values: true
|
32
|
+
`;
|
33
|
+
export const invalidConfigWithNoOptions = `
|
34
|
+
spotlight:
|
35
|
+
default_visibility: show
|
36
|
+
parameters:
|
37
|
+
test_param:
|
38
|
+
label: Test Parameter
|
39
|
+
`;
|
40
|
+
export const invalidConfigWithAllowCustomValuesFalse = `
|
41
|
+
spotlight:
|
42
|
+
default_visibility: show
|
43
|
+
parameters:
|
44
|
+
test_param:
|
45
|
+
label: Test Parameter
|
46
|
+
allow_custom_values: false
|
47
|
+
`;
|
48
|
+
export const configWithEmptyOptionsArray = `
|
49
|
+
spotlight:
|
50
|
+
default_visibility: show
|
51
|
+
parameters:
|
52
|
+
test_param:
|
53
|
+
label: Test Parameter
|
54
|
+
options: []
|
55
|
+
`;
|
56
|
+
export const invalidConfigWithIncompleteOptionsFromDimension = `
|
57
|
+
spotlight:
|
58
|
+
default_visibility: show
|
59
|
+
parameters:
|
60
|
+
test_param:
|
61
|
+
label: Test Parameter
|
62
|
+
options_from_dimension:
|
63
|
+
model: test_model
|
64
|
+
`;
|
65
|
+
//# sourceMappingURL=loadLightdashProjectConfig.mock.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.mock.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.mock.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;CASxC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG;;;;;;;;;CASlD,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;CAO/C,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;CAMzC,CAAC;AAEF,MAAM,CAAC,MAAM,uCAAuC,GAAG;;;;;;;CAOtD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;CAO1C,CAAC;AAEF,MAAM,CAAC,MAAM,+CAA+C,GAAG;;;;;;;;CAQ9D,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.test.d.ts","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import { ParseError } from '../types/errors';
|
2
|
+
import { loadLightdashProjectConfig } from './loadLightdashProjectConfig';
|
3
|
+
import { configWithEmptyOptionsArray, emptyConfig, invalidConfigWithAllowCustomValuesFalse, invalidConfigWithIncompleteOptionsFromDimension, invalidConfigWithNoOptions, validConfigWithAllowCustomValues, validConfigWithOptionsFromDimension, validConfigWithParameters, } from './loadLightdashProjectConfig.mock';
|
4
|
+
describe('loadLightdashProjectConfig', () => {
|
5
|
+
it('should load an empty config', async () => {
|
6
|
+
const config = await loadLightdashProjectConfig(emptyConfig);
|
7
|
+
expect(config).toEqual({
|
8
|
+
spotlight: {
|
9
|
+
default_visibility: 'show',
|
10
|
+
},
|
11
|
+
});
|
12
|
+
});
|
13
|
+
it('should load a valid config with parameters', async () => {
|
14
|
+
const config = await loadLightdashProjectConfig(validConfigWithParameters);
|
15
|
+
expect(config).toEqual({
|
16
|
+
spotlight: {
|
17
|
+
default_visibility: 'show',
|
18
|
+
},
|
19
|
+
parameters: {
|
20
|
+
test_param: {
|
21
|
+
label: 'Test Parameter',
|
22
|
+
options: ['option1', 'option2'],
|
23
|
+
},
|
24
|
+
},
|
25
|
+
});
|
26
|
+
});
|
27
|
+
it('should load a valid config with parameters using options_from_dimension', async () => {
|
28
|
+
const config = await loadLightdashProjectConfig(validConfigWithOptionsFromDimension);
|
29
|
+
expect(config).toEqual({
|
30
|
+
spotlight: {
|
31
|
+
default_visibility: 'show',
|
32
|
+
},
|
33
|
+
parameters: {
|
34
|
+
test_param: {
|
35
|
+
label: 'Test Parameter',
|
36
|
+
options_from_dimension: {
|
37
|
+
model: 'test_model',
|
38
|
+
dimension: 'test_dimension',
|
39
|
+
},
|
40
|
+
},
|
41
|
+
},
|
42
|
+
});
|
43
|
+
});
|
44
|
+
it('should load a valid config with parameters using allow_custom_values', async () => {
|
45
|
+
const config = await loadLightdashProjectConfig(validConfigWithAllowCustomValues);
|
46
|
+
expect(config).toEqual({
|
47
|
+
spotlight: {
|
48
|
+
default_visibility: 'show',
|
49
|
+
},
|
50
|
+
parameters: {
|
51
|
+
test_param: {
|
52
|
+
label: 'Test Parameter',
|
53
|
+
allow_custom_values: true,
|
54
|
+
},
|
55
|
+
},
|
56
|
+
});
|
57
|
+
});
|
58
|
+
it('should throw an error for invalid parameter with no options', async () => {
|
59
|
+
await expect(loadLightdashProjectConfig(invalidConfigWithNoOptions)).rejects.toThrow(ParseError);
|
60
|
+
});
|
61
|
+
it('should throw an error for invalid parameter with allow_custom_values set to false', async () => {
|
62
|
+
await expect(loadLightdashProjectConfig(invalidConfigWithAllowCustomValuesFalse)).rejects.toThrow(ParseError);
|
63
|
+
});
|
64
|
+
it('should throw an error for parameter with empty options array', async () => {
|
65
|
+
await expect(loadLightdashProjectConfig(configWithEmptyOptionsArray)).rejects.toThrow(ParseError);
|
66
|
+
});
|
67
|
+
it('should throw an error for invalid parameter with incomplete options_from_dimension', async () => {
|
68
|
+
await expect(loadLightdashProjectConfig(invalidConfigWithIncompleteOptionsFromDimension)).rejects.toThrow(ParseError);
|
69
|
+
});
|
70
|
+
});
|
71
|
+
//# sourceMappingURL=loadLightdashProjectConfig.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"loadLightdashProjectConfig.test.js","sourceRoot":"","sources":["../../../src/utils/loadLightdashProjectConfig.test.ts"],"names":[],"mappings":"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"}
|