@finos/legend-application 15.0.18 → 15.0.19
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/lib/application/LegendApplicationConfig.d.ts +7 -1
- package/lib/application/LegendApplicationConfig.d.ts.map +1 -1
- package/lib/application/LegendApplicationConfig.js +3 -1
- package/lib/application/LegendApplicationConfig.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/DocumentationService.d.ts +8 -0
- package/lib/stores/DocumentationService.d.ts.map +1 -1
- package/lib/stores/DocumentationService.js +8 -1
- package/lib/stores/DocumentationService.js.map +1 -1
- package/package.json +1 -1
- package/src/application/LegendApplicationConfig.ts +12 -0
- package/src/stores/DocumentationService.ts +28 -0
|
@@ -15,18 +15,23 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { type ExtensionsConfigurationData } from '@finos/legend-shared';
|
|
17
17
|
import type { LegendApplicationConfigurationInput } from './LegendApplication.js';
|
|
18
|
-
import { type KeyedDocumentationEntry, type DocumentationEntryData, type ContextualDocumentationConfig, type ContextualDocumentationEntry, type DocumentationRegistryEntry } from '../stores/DocumentationService.js';
|
|
18
|
+
import { type KeyedDocumentationEntry, type DocumentationEntryData, type ContextualDocumentationConfig, type ContextualDocumentationEntry, type DocumentationRegistryEntry, type DocumentationLinkEntry } from '../stores/DocumentationService.js';
|
|
19
19
|
import type { SettingOverrideConfigData } from '../stores/SettingService.js';
|
|
20
20
|
export interface LegendApplicationVersionData {
|
|
21
21
|
buildTime: string;
|
|
22
22
|
version: string;
|
|
23
23
|
commitSHA: string;
|
|
24
24
|
}
|
|
25
|
+
export interface LegendApplicationLink {
|
|
26
|
+
url: string;
|
|
27
|
+
label: string;
|
|
28
|
+
}
|
|
25
29
|
export interface LegendApplicationConfigurationData {
|
|
26
30
|
appName: string;
|
|
27
31
|
env: string;
|
|
28
32
|
documentation?: {
|
|
29
33
|
url: string;
|
|
34
|
+
links?: Record<string, LegendApplicationLink>;
|
|
30
35
|
registry?: DocumentationRegistryEntry[];
|
|
31
36
|
entries?: Record<string, DocumentationEntryData>;
|
|
32
37
|
contextualEntries?: ContextualDocumentationConfig;
|
|
@@ -43,6 +48,7 @@ export declare abstract class LegendApplicationConfig {
|
|
|
43
48
|
readonly env: string;
|
|
44
49
|
readonly applicationStorageKey: string;
|
|
45
50
|
readonly documentationUrl?: string | undefined;
|
|
51
|
+
readonly documentationLinkEntries?: DocumentationLinkEntry[];
|
|
46
52
|
readonly documentationRegistryEntries: DocumentationRegistryEntry[];
|
|
47
53
|
readonly keyedDocumentationEntries: KeyedDocumentationEntry[];
|
|
48
54
|
readonly contextualDocEntries: ContextualDocumentationEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendApplicationConfig.d.ts","sourceRoot":"","sources":["../../src/application/LegendApplicationConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,2BAA2B,EAEjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"LegendApplicationConfig.d.ts","sourceRoot":"","sources":["../../src/application/LegendApplicationConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGL,KAAK,2BAA2B,EAEjC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAE5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kCAAkC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAC9C,QAAQ,CAAC,EAAE,0BAA0B,EAAE,CAAC;QACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACjD,iBAAiB,CAAC,EAAE,6BAA6B,CAAC;KACnD,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;KAC/C,CAAC;IAIF,UAAU,CAAC,EAAE,2BAA2B,CAAC;CAC1C;AAED,8BAAsB,uBAAuB;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAGvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,sBAAsB,EAAE,CAAM;IAClE,QAAQ,CAAC,4BAA4B,EAAE,0BAA0B,EAAE,CAAM;IACzE,QAAQ,CAAC,yBAAyB,EAAE,uBAAuB,EAAE,CAAM;IACnE,QAAQ,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,CAAM;IAGnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAGlC,KAAK,EAAE,mCAAmC,CAAC,kCAAkC,CAAC;IA4ChF,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAOxD,QAAQ,CAAC,+BAA+B,IAAI,MAAM;CACnD"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { guaranteeNonEmptyString, guaranteeNonNullable, URL_SEPARATOR, } from '@finos/legend-shared';
|
|
17
|
-
import { collectKeyedDocumentationEntriesFromConfig, collectContextualDocumentationEntries, } from '../stores/DocumentationService.js';
|
|
17
|
+
import { collectKeyedDocumentationEntriesFromConfig, collectContextualDocumentationEntries, collectDocumentationLinkEntryFromConfig, } from '../stores/DocumentationService.js';
|
|
18
18
|
export class LegendApplicationConfig {
|
|
19
19
|
appName;
|
|
20
20
|
baseAddress;
|
|
@@ -22,6 +22,7 @@ export class LegendApplicationConfig {
|
|
|
22
22
|
applicationStorageKey;
|
|
23
23
|
// documentation
|
|
24
24
|
documentationUrl;
|
|
25
|
+
documentationLinkEntries = [];
|
|
25
26
|
documentationRegistryEntries = [];
|
|
26
27
|
keyedDocumentationEntries = [];
|
|
27
28
|
contextualDocEntries = [];
|
|
@@ -38,6 +39,7 @@ export class LegendApplicationConfig {
|
|
|
38
39
|
this.getDefaultApplicationStorageKey();
|
|
39
40
|
// Documentation
|
|
40
41
|
this.documentationUrl = input.configData.documentation?.url;
|
|
42
|
+
this.documentationLinkEntries = collectDocumentationLinkEntryFromConfig(input.configData.documentation?.links ?? {});
|
|
41
43
|
this.documentationRegistryEntries =
|
|
42
44
|
input.configData.documentation?.registry ?? [];
|
|
43
45
|
this.keyedDocumentationEntries = collectKeyedDocumentationEntriesFromConfig(input.configData.documentation?.entries ?? {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendApplicationConfig.js","sourceRoot":"","sources":["../../src/application/LegendApplicationConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EAEpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0CAA0C,EAC1C,qCAAqC,
|
|
1
|
+
{"version":3,"file":"LegendApplicationConfig.js","sourceRoot":"","sources":["../../src/application/LegendApplicationConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EAEpB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,0CAA0C,EAC1C,qCAAqC,EAOrC,uCAAuC,GACxC,MAAM,mCAAmC,CAAC;AAkC3C,MAAM,OAAgB,uBAAuB;IAClC,OAAO,CAAS;IAChB,WAAW,CAAS;IACpB,GAAG,CAAS;IACZ,qBAAqB,CAAS;IAEvC,gBAAgB;IACP,gBAAgB,CAAsB;IACtC,wBAAwB,GAA8B,EAAE,CAAC;IACzD,4BAA4B,GAAiC,EAAE,CAAC;IAChE,yBAAyB,GAA8B,EAAE,CAAC;IAC1D,oBAAoB,GAAmC,EAAE,CAAC;IAEnE,UAAU;IACD,UAAU,CAAS;IACnB,mBAAmB,CAAS;IAC5B,kBAAkB,CAAS;IAEpC,YACE,KAA8E;QAE9E,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,uBAAuB,CACpC,KAAK,CAAC,UAAU,CAAC,OAAO,EACxB,kEAAkE,CACnE,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,uBAAuB,CAChC,KAAK,CAAC,UAAU,CAAC,GAAG,EACpB,8DAA8D,CAC/D,CAAC;QACF,IAAI,CAAC,qBAAqB;YACxB,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU;gBACxC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAEzC,gBAAgB;QAChB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC;QAC5D,IAAI,CAAC,wBAAwB,GAAG,uCAAuC,CACrE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,CAC5C,CAAC;QACF,IAAI,CAAC,4BAA4B;YAC/B,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,yBAAyB,GAAG,0CAA0C,CACzE,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,IAAI,EAAE,CAC9C,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,qCAAqC,CAC/D,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,IAAI,EAAE,CACxD,CAAC;QAEF,UAAU;QACV,IAAI,CAAC,UAAU,GAAG,oBAAoB,CACpC,KAAK,CAAC,WAAW,CAAC,OAAO,EACzB,+DAA+D,CAChE,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,CAC7C,KAAK,CAAC,WAAW,CAAC,SAAS,EAC3B,iEAAiE,CAClE,CAAC;QACF,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAC5C,KAAK,CAAC,WAAW,CAAC,SAAS,EAC3B,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAES,MAAM,CAAC,kBAAkB,CAAC,GAAW;QAC7C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;SACrC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CAGF"}
|
package/lib/index.css
CHANGED
package/lib/package.json
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { type MarkdownText, type PlainObject, SerializationFactory } from '@finos/legend-shared';
|
|
17
17
|
import type { GenericLegendApplicationStore } from './ApplicationStore.js';
|
|
18
|
+
import type { LegendApplicationLink } from '../application/LegendApplicationConfig.js';
|
|
18
19
|
export type DocumentationRegistryEntry = {
|
|
19
20
|
url: string;
|
|
20
21
|
/**
|
|
@@ -61,7 +62,13 @@ export type KeyedDocumentationEntry = {
|
|
|
61
62
|
key: string;
|
|
62
63
|
content: DocumentationEntry;
|
|
63
64
|
};
|
|
65
|
+
export type DocumentationLinkEntry = {
|
|
66
|
+
key: string;
|
|
67
|
+
label: string;
|
|
68
|
+
url: string;
|
|
69
|
+
};
|
|
64
70
|
export declare const collectKeyedDocumentationEntriesFromConfig: (rawEntries: Record<string, DocumentationEntryData>) => KeyedDocumentationEntry[];
|
|
71
|
+
export declare const collectDocumentationLinkEntryFromConfig: (rawEntries: Record<string, LegendApplicationLink>) => DocumentationLinkEntry[];
|
|
65
72
|
export type ContextualDocumentationConfig = Record<string, string>;
|
|
66
73
|
export type ContextualDocumentationEntry = {
|
|
67
74
|
context: string;
|
|
@@ -70,6 +77,7 @@ export type ContextualDocumentationEntry = {
|
|
|
70
77
|
export declare const collectContextualDocumentationEntries: (config: ContextualDocumentationConfig) => ContextualDocumentationEntry[];
|
|
71
78
|
export declare class DocumentationService {
|
|
72
79
|
readonly url?: string | undefined;
|
|
80
|
+
readonly links?: DocumentationLinkEntry[] | undefined;
|
|
73
81
|
private readonly docRegistry;
|
|
74
82
|
private readonly contextualDocIndex;
|
|
75
83
|
constructor(applicationStore: GenericLegendApplicationStore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentationService.d.ts","sourceRoot":"","sources":["../../src/stores/DocumentationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"DocumentationService.d.ts","sourceRoot":"","sources":["../../src/stores/DocumentationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { SerializationFactory, LogEvent, uniq, } from '@finos/legend-shared';
|
|
16
|
+
import { SerializationFactory, LogEvent, uniq, guaranteeNonEmptyString, } from '@finos/legend-shared';
|
|
17
17
|
import { createModelSchema, custom, list, optional, primitive, } from 'serializr';
|
|
18
18
|
import { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';
|
|
19
19
|
class DocumentationEntry {
|
|
@@ -41,17 +41,24 @@ export const collectKeyedDocumentationEntriesFromConfig = (rawEntries) => Object
|
|
|
41
41
|
key: entry[0],
|
|
42
42
|
content: DocumentationEntry.create(entry[1], entry[0]),
|
|
43
43
|
}));
|
|
44
|
+
export const collectDocumentationLinkEntryFromConfig = (rawEntries) => Object.entries(rawEntries).map((entry) => ({
|
|
45
|
+
key: guaranteeNonEmptyString(entry[0], "Documentation link 'key' is missing"),
|
|
46
|
+
label: guaranteeNonEmptyString(entry[1].label, "Documentation link 'label' is missing"),
|
|
47
|
+
url: guaranteeNonEmptyString(entry[1].url, "Documentation link 'url' is missing"),
|
|
48
|
+
}));
|
|
44
49
|
export const collectContextualDocumentationEntries = (config) => Object.entries(config).map((entry) => ({
|
|
45
50
|
context: entry[0],
|
|
46
51
|
documentationKey: entry[1],
|
|
47
52
|
}));
|
|
48
53
|
export class DocumentationService {
|
|
49
54
|
url;
|
|
55
|
+
links;
|
|
50
56
|
docRegistry = new Map();
|
|
51
57
|
contextualDocIndex = new Map();
|
|
52
58
|
constructor(applicationStore) {
|
|
53
59
|
// set the main documenation site url
|
|
54
60
|
this.url = applicationStore.config.documentationUrl;
|
|
61
|
+
this.links = applicationStore.config.documentationLinkEntries;
|
|
55
62
|
/**
|
|
56
63
|
* NOTE: the order of documentation entry overidding is (the later override the former):
|
|
57
64
|
* 1. Natively specified: specified in the codebase (no overriding allowed within this group of documentation entries):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentationService.js","sourceRoot":"","sources":["../../src/stores/DocumentationService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAIL,oBAAoB,EACpB,QAAQ,EACR,IAAI,
|
|
1
|
+
{"version":3,"file":"DocumentationService.js","sourceRoot":"","sources":["../../src/stores/DocumentationService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -29,6 +29,8 @@ import {
|
|
|
29
29
|
type ContextualDocumentationConfig,
|
|
30
30
|
type ContextualDocumentationEntry,
|
|
31
31
|
type DocumentationRegistryEntry,
|
|
32
|
+
type DocumentationLinkEntry,
|
|
33
|
+
collectDocumentationLinkEntryFromConfig,
|
|
32
34
|
} from '../stores/DocumentationService.js';
|
|
33
35
|
import type { SettingOverrideConfigData } from '../stores/SettingService.js';
|
|
34
36
|
|
|
@@ -38,11 +40,17 @@ export interface LegendApplicationVersionData {
|
|
|
38
40
|
commitSHA: string;
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
export interface LegendApplicationLink {
|
|
44
|
+
url: string;
|
|
45
|
+
label: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
41
48
|
export interface LegendApplicationConfigurationData {
|
|
42
49
|
appName: string;
|
|
43
50
|
env: string;
|
|
44
51
|
documentation?: {
|
|
45
52
|
url: string;
|
|
53
|
+
links?: Record<string, LegendApplicationLink>;
|
|
46
54
|
registry?: DocumentationRegistryEntry[];
|
|
47
55
|
entries?: Record<string, DocumentationEntryData>;
|
|
48
56
|
contextualEntries?: ContextualDocumentationConfig;
|
|
@@ -65,6 +73,7 @@ export abstract class LegendApplicationConfig {
|
|
|
65
73
|
|
|
66
74
|
// documentation
|
|
67
75
|
readonly documentationUrl?: string | undefined;
|
|
76
|
+
readonly documentationLinkEntries?: DocumentationLinkEntry[] = [];
|
|
68
77
|
readonly documentationRegistryEntries: DocumentationRegistryEntry[] = [];
|
|
69
78
|
readonly keyedDocumentationEntries: KeyedDocumentationEntry[] = [];
|
|
70
79
|
readonly contextualDocEntries: ContextualDocumentationEntry[] = [];
|
|
@@ -92,6 +101,9 @@ export abstract class LegendApplicationConfig {
|
|
|
92
101
|
|
|
93
102
|
// Documentation
|
|
94
103
|
this.documentationUrl = input.configData.documentation?.url;
|
|
104
|
+
this.documentationLinkEntries = collectDocumentationLinkEntryFromConfig(
|
|
105
|
+
input.configData.documentation?.links ?? {},
|
|
106
|
+
);
|
|
95
107
|
this.documentationRegistryEntries =
|
|
96
108
|
input.configData.documentation?.registry ?? [];
|
|
97
109
|
this.keyedDocumentationEntries = collectKeyedDocumentationEntriesFromConfig(
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
SerializationFactory,
|
|
22
22
|
LogEvent,
|
|
23
23
|
uniq,
|
|
24
|
+
guaranteeNonEmptyString,
|
|
24
25
|
} from '@finos/legend-shared';
|
|
25
26
|
import {
|
|
26
27
|
createModelSchema,
|
|
@@ -31,6 +32,7 @@ import {
|
|
|
31
32
|
} from 'serializr';
|
|
32
33
|
import { APPLICATION_EVENT } from '../__lib__/LegendApplicationEvent.js';
|
|
33
34
|
import type { GenericLegendApplicationStore } from './ApplicationStore.js';
|
|
35
|
+
import type { LegendApplicationLink } from '../application/LegendApplicationConfig.js';
|
|
34
36
|
|
|
35
37
|
export type DocumentationRegistryEntry = {
|
|
36
38
|
url: string;
|
|
@@ -104,6 +106,12 @@ export type KeyedDocumentationEntry = {
|
|
|
104
106
|
content: DocumentationEntry;
|
|
105
107
|
};
|
|
106
108
|
|
|
109
|
+
export type DocumentationLinkEntry = {
|
|
110
|
+
key: string;
|
|
111
|
+
label: string;
|
|
112
|
+
url: string;
|
|
113
|
+
};
|
|
114
|
+
|
|
107
115
|
export const collectKeyedDocumentationEntriesFromConfig = (
|
|
108
116
|
rawEntries: Record<string, DocumentationEntryData>,
|
|
109
117
|
): KeyedDocumentationEntry[] =>
|
|
@@ -112,6 +120,24 @@ export const collectKeyedDocumentationEntriesFromConfig = (
|
|
|
112
120
|
content: DocumentationEntry.create(entry[1], entry[0]),
|
|
113
121
|
}));
|
|
114
122
|
|
|
123
|
+
export const collectDocumentationLinkEntryFromConfig = (
|
|
124
|
+
rawEntries: Record<string, LegendApplicationLink>,
|
|
125
|
+
): DocumentationLinkEntry[] =>
|
|
126
|
+
Object.entries(rawEntries).map((entry) => ({
|
|
127
|
+
key: guaranteeNonEmptyString(
|
|
128
|
+
entry[0],
|
|
129
|
+
"Documentation link 'key' is missing",
|
|
130
|
+
),
|
|
131
|
+
label: guaranteeNonEmptyString(
|
|
132
|
+
entry[1].label,
|
|
133
|
+
"Documentation link 'label' is missing",
|
|
134
|
+
),
|
|
135
|
+
url: guaranteeNonEmptyString(
|
|
136
|
+
entry[1].url,
|
|
137
|
+
"Documentation link 'url' is missing",
|
|
138
|
+
),
|
|
139
|
+
}));
|
|
140
|
+
|
|
115
141
|
export type ContextualDocumentationConfig = Record<string, string>;
|
|
116
142
|
export type ContextualDocumentationEntry = {
|
|
117
143
|
context: string;
|
|
@@ -127,6 +153,7 @@ export const collectContextualDocumentationEntries = (
|
|
|
127
153
|
|
|
128
154
|
export class DocumentationService {
|
|
129
155
|
readonly url?: string | undefined;
|
|
156
|
+
readonly links?: DocumentationLinkEntry[] | undefined;
|
|
130
157
|
|
|
131
158
|
private readonly docRegistry = new Map<string, DocumentationEntry>();
|
|
132
159
|
private readonly contextualDocIndex = new Map<string, DocumentationEntry>();
|
|
@@ -134,6 +161,7 @@ export class DocumentationService {
|
|
|
134
161
|
constructor(applicationStore: GenericLegendApplicationStore) {
|
|
135
162
|
// set the main documenation site url
|
|
136
163
|
this.url = applicationStore.config.documentationUrl;
|
|
164
|
+
this.links = applicationStore.config.documentationLinkEntries;
|
|
137
165
|
|
|
138
166
|
/**
|
|
139
167
|
* NOTE: the order of documentation entry overidding is (the later override the former):
|