@lightdash/common 0.1610.0 → 0.1610.1
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/types/promotion.d.ts +3 -1
- package/dist/cjs/types/promotion.d.ts.map +1 -1
- package/dist/cjs/utils/slug.test.js +78 -58
- package/dist/cjs/utils/slug.test.js.map +1 -1
- package/dist/cjs/utils/slugs.d.ts +4 -28
- package/dist/cjs/utils/slugs.d.ts.map +1 -1
- package/dist/cjs/utils/slugs.js +37 -40
- package/dist/cjs/utils/slugs.js.map +1 -1
- package/dist/esm/types/promotion.d.ts +3 -1
- package/dist/esm/types/promotion.d.ts.map +1 -1
- package/dist/esm/utils/slug.test.js +79 -59
- package/dist/esm/utils/slug.test.js.map +1 -1
- package/dist/esm/utils/slugs.d.ts +4 -28
- package/dist/esm/utils/slugs.d.ts.map +1 -1
- package/dist/esm/utils/slugs.js +32 -36
- package/dist/esm/utils/slugs.js.map +1 -1
- package/dist/tsconfig.types.tsbuildinfo +1 -1
- package/dist/types/types/promotion.d.ts +3 -1
- package/dist/types/types/promotion.d.ts.map +1 -1
- package/dist/types/utils/slugs.d.ts +4 -28
- package/dist/types/utils/slugs.d.ts.map +1 -1
- package/package.json +1 -1
@@ -7,12 +7,14 @@ export declare enum PromotionAction {
|
|
7
7
|
UPDATE = "update",
|
8
8
|
DELETE = "delete"
|
9
9
|
}
|
10
|
-
export type PromotedSpace = Omit<SpaceSummary, 'userAccess'
|
10
|
+
export type PromotedSpace = Omit<SpaceSummary, 'userAccess'>;
|
11
11
|
export type PromotedDashboard = DashboardDAO & {
|
12
12
|
spaceSlug: string;
|
13
|
+
spacePath: string;
|
13
14
|
};
|
14
15
|
export type PromotedChart = SavedChartDAO & {
|
15
16
|
spaceSlug: string;
|
17
|
+
spacePath: string;
|
16
18
|
oldUuid: string;
|
17
19
|
};
|
18
20
|
export type PromotionChanges = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/types/promotion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,eAAe;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,
|
1
|
+
{"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/types/promotion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,eAAe;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE;QACJ,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,aAAa,CAAC;KACvB,EAAE,CAAC;IACJ,UAAU,EAAE;QACR,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,iBAAiB,CAAC;KAC3B,EAAE,CAAC;IACJ,MAAM,EAAE;QACJ,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,aAAa,CAAC;KACvB,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC7B,CAAC"}
|
@@ -39,73 +39,93 @@ describe('Slug', () => {
|
|
39
39
|
// Handle japanese characters
|
40
40
|
expect((0, slugs_1.generateSlug)('ライトダッシュ').length).toEqual(5);
|
41
41
|
});
|
42
|
-
describe('getSlugsWithHierarchy', () => {
|
43
|
-
test('should return array with single slug for non-hierarchical slug', () => {
|
44
|
-
expect((0, slugs_1.getSlugsWithHierarchy)('my-space')).toEqual(['my-space']);
|
45
|
-
});
|
46
|
-
test('should return array with hierarchical slugs', () => {
|
47
|
-
expect((0, slugs_1.getSlugsWithHierarchy)('parent-space/child-space')).toEqual([
|
48
|
-
'parent-space',
|
49
|
-
'parent-space/child-space',
|
50
|
-
]);
|
51
|
-
});
|
52
|
-
test('should handle multiple levels of hierarchy', () => {
|
53
|
-
expect((0, slugs_1.getSlugsWithHierarchy)('grandparent-space/parent-space/child-space')).toEqual([
|
54
|
-
'grandparent-space',
|
55
|
-
'grandparent-space/parent-space',
|
56
|
-
'grandparent-space/parent-space/child-space',
|
57
|
-
]);
|
58
|
-
});
|
59
|
-
});
|
60
|
-
describe('getParentSlug', () => {
|
61
|
-
test('should return empty string for non-hierarchical slug', () => {
|
62
|
-
expect((0, slugs_1.getParentSlug)('my-space')).toEqual('');
|
63
|
-
});
|
64
|
-
test('should return parent slug for hierarchical slug', () => {
|
65
|
-
expect((0, slugs_1.getParentSlug)('parent-space/child-space')).toEqual('parent-space');
|
66
|
-
});
|
67
|
-
test('should return parent path for deeply nested slug', () => {
|
68
|
-
expect((0, slugs_1.getParentSlug)('grandparent-space/parent-space/child-space')).toEqual('grandparent-space/parent-space');
|
69
|
-
});
|
70
|
-
});
|
71
|
-
describe('getLabelFromSlug', () => {
|
72
|
-
test('should return same slug for non-hierarchical slug', () => {
|
73
|
-
expect((0, slugs_1.getLabelFromSlug)('my-space')).toEqual('my-space');
|
74
|
-
});
|
75
|
-
test('should return last part of hierarchical slug', () => {
|
76
|
-
expect((0, slugs_1.getLabelFromSlug)('parent-space/child-space')).toEqual('child-space');
|
77
|
-
});
|
78
|
-
test('should return last part of deeply nested slug', () => {
|
79
|
-
expect((0, slugs_1.getLabelFromSlug)('grandparent-space/parent-space/child-space')).toEqual('child-space');
|
80
|
-
});
|
81
|
-
});
|
82
42
|
describe('getLtreePathFromSlug', () => {
|
83
|
-
test('should
|
43
|
+
test('should return ltree path from slug', () => {
|
84
44
|
expect((0, slugs_1.getLtreePathFromSlug)('my-space')).toEqual('my_space');
|
85
45
|
});
|
86
|
-
test('should
|
87
|
-
expect((0, slugs_1.getLtreePathFromSlug)('parent-space/child-space')).toEqual('
|
88
|
-
});
|
89
|
-
test('should handle deeply nested slugs', () => {
|
90
|
-
expect((0, slugs_1.getLtreePathFromSlug)('grandparent-space/parent-space/child-space')).toEqual('grandparent_space.parent_space.child_space');
|
91
|
-
});
|
92
|
-
test('should remove non-alphanumeric characters except underscores', () => {
|
93
|
-
expect((0, slugs_1.getLtreePathFromSlug)('my!space@name')).toEqual('my_space_name');
|
94
|
-
expect((0, slugs_1.getLtreePathFromSlug)('my space name')).toEqual('my_space_name');
|
95
|
-
expect((0, slugs_1.getLtreePathFromSlug)('my_space_name')).toEqual('my_space_name');
|
96
|
-
});
|
97
|
-
test('should handle mixed case slugs', () => {
|
98
|
-
expect((0, slugs_1.getLtreePathFromSlug)('MySpace/ChildSpace')).toEqual('myspace.childspace');
|
99
|
-
});
|
100
|
-
test('should handle empty slug', () => {
|
101
|
-
expect((0, slugs_1.getLtreePathFromSlug)('')).toEqual('');
|
46
|
+
test('should return ltree path from legacy hierarchical slug', () => {
|
47
|
+
expect((0, slugs_1.getLtreePathFromSlug)('parent-space/child-space')).toEqual('parent_space___child_space');
|
102
48
|
});
|
103
49
|
test('should not trim hyphens from slug', () => {
|
104
50
|
expect((0, slugs_1.getLtreePathFromSlug)('-my-space-name-with-hyphens-')).toEqual('_my_space_name_with_hyphens_');
|
105
51
|
});
|
106
52
|
test('should not trim hyphens from deeply nested slug', () => {
|
107
|
-
expect((0, slugs_1.getLtreePathFromSlug)('grandparent-space-/-parent-space/child-space-')).toEqual('
|
53
|
+
expect((0, slugs_1.getLtreePathFromSlug)('grandparent-space-/-parent-space/child-space-')).toEqual('grandparent_space_____parent_space___child_space_');
|
108
54
|
});
|
109
55
|
});
|
110
56
|
});
|
57
|
+
describe('getLtreePathFromContentAsCodePath', () => {
|
58
|
+
test('root', () => {
|
59
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)('my-space')).toEqual('my_space');
|
60
|
+
});
|
61
|
+
test('nested', () => {
|
62
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)('parent/child/-grandchild/final-child')).toEqual('parent.child._grandchild.final_child');
|
63
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)('-parent-/-child-')).toEqual('_parent_._child_');
|
64
|
+
});
|
65
|
+
test('new slugs', () => {
|
66
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)('-foo/-foo___bar/-foo___bar___boo')).toEqual('_foo._foo___bar._foo___bar___boo');
|
67
|
+
});
|
68
|
+
});
|
69
|
+
describe('getContentAsCodePathFromLtreePath', () => {
|
70
|
+
test('root', () => {
|
71
|
+
expect((0, slugs_1.getContentAsCodePathFromLtreePath)('my_space')).toEqual('my-space');
|
72
|
+
expect((0, slugs_1.getContentAsCodePathFromLtreePath)('_my_space')).toEqual('-my-space');
|
73
|
+
});
|
74
|
+
test('nested', () => {
|
75
|
+
expect((0, slugs_1.getContentAsCodePathFromLtreePath)('parent.child._grandchild.final_child')).toEqual('parent/child/-grandchild/final-child');
|
76
|
+
});
|
77
|
+
test('new slugs', () => {
|
78
|
+
expect((0, slugs_1.getContentAsCodePathFromLtreePath)('_foo._foo___bar._foo___bar___boo')).toEqual('-foo/-foo---bar/-foo---bar---boo');
|
79
|
+
});
|
80
|
+
});
|
81
|
+
describe('getContentAsCodePathFromLtreePath + getLtreePathFromContentAsCodePath', () => {
|
82
|
+
test('should be the inverse of each other', () => {
|
83
|
+
expect((0, slugs_1.getContentAsCodePathFromLtreePath)((0, slugs_1.getLtreePathFromContentAsCodePath)('my-space'))).toEqual('my-space');
|
84
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)((0, slugs_1.getContentAsCodePathFromLtreePath)('__my_space_'))).toEqual('__my_space_');
|
85
|
+
expect((0, slugs_1.getLtreePathFromContentAsCodePath)((0, slugs_1.getContentAsCodePathFromLtreePath)('__my_space_.foo.bar'))).toEqual('__my_space_.foo.bar');
|
86
|
+
});
|
87
|
+
});
|
88
|
+
describe('getDeepestPaths', () => {
|
89
|
+
test('should return the deepest paths', () => {
|
90
|
+
expect((0, slugs_1.getDeepestPaths)([
|
91
|
+
'dash',
|
92
|
+
'charts',
|
93
|
+
'charts2',
|
94
|
+
'charts2.charts2_child',
|
95
|
+
])).toEqual(['dash', 'charts', 'charts2.charts2_child']);
|
96
|
+
expect((0, slugs_1.getDeepestPaths)([
|
97
|
+
'jaffle_shop.dashboards.dashboards_marketing',
|
98
|
+
'jaffle_shop.sub_charts_2.sub_charts_2_child',
|
99
|
+
'jaffle_shop.dashboards',
|
100
|
+
'jaffle_shop.sub_charts',
|
101
|
+
'jaffle_shop.sub_charts_2',
|
102
|
+
])).toEqual([
|
103
|
+
'jaffle_shop.dashboards.dashboards_marketing',
|
104
|
+
'jaffle_shop.sub_charts_2.sub_charts_2_child',
|
105
|
+
'jaffle_shop.sub_charts',
|
106
|
+
]);
|
107
|
+
expect((0, slugs_1.getDeepestPaths)([
|
108
|
+
'a.b.c.d',
|
109
|
+
'a.b.c',
|
110
|
+
'a.b.c.d.e',
|
111
|
+
'a.b.c.d.e.f',
|
112
|
+
'a.b.c.d.e.f.g',
|
113
|
+
'a.b.c.d.e.f.g.h',
|
114
|
+
'a.b.c.d.e.f.g.h.i',
|
115
|
+
'foo',
|
116
|
+
'bar',
|
117
|
+
])).toEqual(['a.b.c.d.e.f.g.h.i', 'foo', 'bar']);
|
118
|
+
expect((0, slugs_1.getDeepestPaths)(['a'])).toEqual(['a']);
|
119
|
+
expect((0, slugs_1.getDeepestPaths)(['a', 'b'])).toEqual(['a', 'b']);
|
120
|
+
});
|
121
|
+
});
|
122
|
+
describe('isSubpath', () => {
|
123
|
+
test('should return true if the path is a subpath of the other path', () => {
|
124
|
+
expect((0, slugs_1.isSubPath)('a.b.c', 'a.b')).toEqual(false);
|
125
|
+
expect((0, slugs_1.isSubPath)('a.b.c', 'a.b.c')).toEqual(false);
|
126
|
+
expect((0, slugs_1.isSubPath)('a.b.c', 'a.b.c.d')).toEqual(true);
|
127
|
+
expect((0, slugs_1.isSubPath)('a', 'a')).toEqual(false);
|
128
|
+
expect((0, slugs_1.isSubPath)('a', 'a.b')).toEqual(true);
|
129
|
+
});
|
130
|
+
});
|
111
131
|
//# sourceMappingURL=slug.test.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slug.test.js","sourceRoot":"","sources":["../../../src/utils/slug.test.ts"],"names":[],"mappings":";;AAAA,
|
1
|
+
{"version":3,"file":"slug.test.js","sourceRoot":"","sources":["../../../src/utils/slug.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,31 +1,7 @@
|
|
1
1
|
export declare const generateSlug: (name: string) => string;
|
2
|
-
/**
|
3
|
-
* Get all slugs with hierarchy for a given slug
|
4
|
-
* For example, "parent-space/child-space" will return ["parent-space", "parent-space/child-space"]
|
5
|
-
* @param slug - The slug to get the hierarchy for
|
6
|
-
* @returns An array of slugs with hierarchy
|
7
|
-
*/
|
8
|
-
export declare const getSlugsWithHierarchy: (slug: string) => string[];
|
9
|
-
/**
|
10
|
-
* Get the parent slug from a slug with hierarchy
|
11
|
-
* For example, "parent-space/child-space" will return "parent-space"
|
12
|
-
* @param slug - The slug to get the parent slug from
|
13
|
-
* @returns The parent slug
|
14
|
-
*/
|
15
|
-
export declare const getParentSlug: (slug: string) => string;
|
16
|
-
/**
|
17
|
-
* Get the label from a slug with hierarchy
|
18
|
-
* For example, "parent-space/child-space" will return "child-space"
|
19
|
-
* @param slug - The slug to get the label from
|
20
|
-
* @returns The label
|
21
|
-
*/
|
22
|
-
export declare const getLabelFromSlug: (slug: string) => string;
|
23
|
-
/**
|
24
|
-
* Get the ltree path from a slug with hierarchy
|
25
|
-
* For example, "parent-space/child-space" will return "parent_space.child_space"
|
26
|
-
* Verifies that each slug is a valid PostgreSQL ltree label (A-Za-z0-9_)
|
27
|
-
* @param slug - The slug to get the ltree path from
|
28
|
-
* @returns The ltree path
|
29
|
-
*/
|
30
2
|
export declare const getLtreePathFromSlug: (slug: string) => string;
|
3
|
+
export declare const getLtreePathFromContentAsCodePath: (path: string) => string;
|
4
|
+
export declare const getContentAsCodePathFromLtreePath: (path: string) => string;
|
5
|
+
export declare const getDeepestPaths: (paths: string[]) => string[];
|
6
|
+
export declare const isSubPath: (path: string, subPath: string) => boolean;
|
31
7
|
//# sourceMappingURL=slugs.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slugs.d.ts","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,SAAU,MAAM,WAQxC,CAAC;AAEF
|
1
|
+
{"version":3,"file":"slugs.d.ts","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,SAAU,MAAM,WAQxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,WAQhD,CAAC;AAEF,eAAO,MAAM,iCAAiC,SAAU,MAAM,WACf,CAAC;AAEhD,eAAO,MAAM,iCAAiC,SAAU,MAAM,WACf,CAAC;AAEhD,eAAO,MAAM,eAAe,UAAW,MAAM,EAAE,KAAG,MAAM,EA4BvD,CAAC;AAEF,eAAO,MAAM,SAAS,SAAU,MAAM,WAAW,MAAM,YACK,CAAC"}
|
package/dist/cjs/utils/slugs.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.isSubPath = exports.getDeepestPaths = exports.getContentAsCodePathFromLtreePath = exports.getLtreePathFromContentAsCodePath = exports.getLtreePathFromSlug = exports.generateSlug = void 0;
|
4
4
|
const sanitizeSlug = (slug, trimHyphens = true) => {
|
5
5
|
let sanitizedSlug = slug
|
6
6
|
.toLowerCase()
|
@@ -22,46 +22,43 @@ const generateSlug = (name) => {
|
|
22
22
|
return sanitizedSlug;
|
23
23
|
};
|
24
24
|
exports.generateSlug = generateSlug;
|
25
|
-
/**
|
26
|
-
* Get all slugs with hierarchy for a given slug
|
27
|
-
* For example, "parent-space/child-space" will return ["parent-space", "parent-space/child-space"]
|
28
|
-
* @param slug - The slug to get the hierarchy for
|
29
|
-
* @returns An array of slugs with hierarchy
|
30
|
-
*/
|
31
|
-
const getSlugsWithHierarchy = (slug) => slug.split('/').reduce((acc, s) => {
|
32
|
-
if (acc.length === 0) {
|
33
|
-
return [s];
|
34
|
-
}
|
35
|
-
return [...acc, `${acc[acc.length - 1]}/${s}`];
|
36
|
-
}, []);
|
37
|
-
exports.getSlugsWithHierarchy = getSlugsWithHierarchy;
|
38
|
-
/**
|
39
|
-
* Get the parent slug from a slug with hierarchy
|
40
|
-
* For example, "parent-space/child-space" will return "parent-space"
|
41
|
-
* @param slug - The slug to get the parent slug from
|
42
|
-
* @returns The parent slug
|
43
|
-
*/
|
44
|
-
const getParentSlug = (slug) => slug.split('/').slice(0, -1).join('/');
|
45
|
-
exports.getParentSlug = getParentSlug;
|
46
|
-
/**
|
47
|
-
* Get the label from a slug with hierarchy
|
48
|
-
* For example, "parent-space/child-space" will return "child-space"
|
49
|
-
* @param slug - The slug to get the label from
|
50
|
-
* @returns The label
|
51
|
-
*/
|
52
|
-
const getLabelFromSlug = (slug) => slug.split('/').pop() ?? slug;
|
53
|
-
exports.getLabelFromSlug = getLabelFromSlug;
|
54
|
-
/**
|
55
|
-
* Get the ltree path from a slug with hierarchy
|
56
|
-
* For example, "parent-space/child-space" will return "parent_space.child_space"
|
57
|
-
* Verifies that each slug is a valid PostgreSQL ltree label (A-Za-z0-9_)
|
58
|
-
* @param slug - The slug to get the ltree path from
|
59
|
-
* @returns The ltree path
|
60
|
-
*/
|
61
25
|
const getLtreePathFromSlug = (slug) => {
|
62
|
-
|
63
|
-
|
64
|
-
|
26
|
+
let path = slug;
|
27
|
+
// This is for backwards compatibility with the old slug format that contained hierarchy
|
28
|
+
if (path.includes('/')) {
|
29
|
+
path = path.split('/').join('___');
|
30
|
+
}
|
31
|
+
return path.replace(/-/g, '_');
|
65
32
|
};
|
66
33
|
exports.getLtreePathFromSlug = getLtreePathFromSlug;
|
34
|
+
const getLtreePathFromContentAsCodePath = (path) => path.replace(/-/g, '_').replace(/\//g, '.');
|
35
|
+
exports.getLtreePathFromContentAsCodePath = getLtreePathFromContentAsCodePath;
|
36
|
+
const getContentAsCodePathFromLtreePath = (path) => path.replace(/_/g, '-').replace(/\./g, '/');
|
37
|
+
exports.getContentAsCodePathFromLtreePath = getContentAsCodePathFromLtreePath;
|
38
|
+
const getDeepestPaths = (paths) => {
|
39
|
+
const uniquePaths = Array.from(new Set(paths));
|
40
|
+
const result = [];
|
41
|
+
for (const path of uniquePaths) {
|
42
|
+
const pathSegments = path.split('.');
|
43
|
+
const isPrefix = uniquePaths.some((otherPath) => {
|
44
|
+
if (path === otherPath)
|
45
|
+
return false;
|
46
|
+
const otherSegments = otherPath.split('.');
|
47
|
+
if (pathSegments.length < otherSegments.length) {
|
48
|
+
const potentialPrefix = otherSegments
|
49
|
+
.slice(0, pathSegments.length)
|
50
|
+
.join('.');
|
51
|
+
return potentialPrefix === path;
|
52
|
+
}
|
53
|
+
return false;
|
54
|
+
});
|
55
|
+
if (!isPrefix) {
|
56
|
+
result.push(path);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
return result;
|
60
|
+
};
|
61
|
+
exports.getDeepestPaths = getDeepestPaths;
|
62
|
+
const isSubPath = (path, subPath) => subPath.startsWith(path) && subPath[path.length] === '.';
|
63
|
+
exports.isSubPath = isSubPath;
|
67
64
|
//# sourceMappingURL=slugs.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":";;;AAAA,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,WAAW,GAAG,IAAI,EAAE,EAAE;IACtD,IAAI,aAAa,GAAG,IAAI;SACnB,WAAW,EAAE;QACd,kEAAkE;SACjE,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEjC,IAAI,WAAW,EAAE,CAAC;QACd,oCAAoC;QACpC,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;IACzC,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,qCAAqC;QACrC,sDAAsD;QACtD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AARW,QAAA,YAAY,gBAQvB;
|
1
|
+
{"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":"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"}
|
@@ -7,12 +7,14 @@ export declare enum PromotionAction {
|
|
7
7
|
UPDATE = "update",
|
8
8
|
DELETE = "delete"
|
9
9
|
}
|
10
|
-
export type PromotedSpace = Omit<SpaceSummary, 'userAccess'
|
10
|
+
export type PromotedSpace = Omit<SpaceSummary, 'userAccess'>;
|
11
11
|
export type PromotedDashboard = DashboardDAO & {
|
12
12
|
spaceSlug: string;
|
13
|
+
spacePath: string;
|
13
14
|
};
|
14
15
|
export type PromotedChart = SavedChartDAO & {
|
15
16
|
spaceSlug: string;
|
17
|
+
spacePath: string;
|
16
18
|
oldUuid: string;
|
17
19
|
};
|
18
20
|
export type PromotionChanges = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/types/promotion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,eAAe;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,
|
1
|
+
{"version":3,"file":"promotion.d.ts","sourceRoot":"","sources":["../../../src/types/promotion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,eAAe;IACvB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE;QACJ,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,aAAa,CAAC;KACvB,EAAE,CAAC;IACJ,UAAU,EAAE;QACR,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,iBAAiB,CAAC;KAC3B,EAAE,CAAC;IACJ,MAAM,EAAE;QACJ,MAAM,EAAE,eAAe,CAAC;QACxB,IAAI,EAAE,aAAa,CAAC;KACvB,EAAE,CAAC;CACP,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAClC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,gBAAgB,CAAC;CAC7B,CAAC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { generateSlug,
|
1
|
+
import { generateSlug, getContentAsCodePathFromLtreePath, getDeepestPaths, getLtreePathFromContentAsCodePath, getLtreePathFromSlug, isSubPath, } from './slugs';
|
2
2
|
describe('Slug', () => {
|
3
3
|
test('should generate space slugs', async () => {
|
4
4
|
expect(generateSlug('my space name')).toEqual('my-space-name');
|
@@ -37,73 +37,93 @@ describe('Slug', () => {
|
|
37
37
|
// Handle japanese characters
|
38
38
|
expect(generateSlug('ライトダッシュ').length).toEqual(5);
|
39
39
|
});
|
40
|
-
describe('getSlugsWithHierarchy', () => {
|
41
|
-
test('should return array with single slug for non-hierarchical slug', () => {
|
42
|
-
expect(getSlugsWithHierarchy('my-space')).toEqual(['my-space']);
|
43
|
-
});
|
44
|
-
test('should return array with hierarchical slugs', () => {
|
45
|
-
expect(getSlugsWithHierarchy('parent-space/child-space')).toEqual([
|
46
|
-
'parent-space',
|
47
|
-
'parent-space/child-space',
|
48
|
-
]);
|
49
|
-
});
|
50
|
-
test('should handle multiple levels of hierarchy', () => {
|
51
|
-
expect(getSlugsWithHierarchy('grandparent-space/parent-space/child-space')).toEqual([
|
52
|
-
'grandparent-space',
|
53
|
-
'grandparent-space/parent-space',
|
54
|
-
'grandparent-space/parent-space/child-space',
|
55
|
-
]);
|
56
|
-
});
|
57
|
-
});
|
58
|
-
describe('getParentSlug', () => {
|
59
|
-
test('should return empty string for non-hierarchical slug', () => {
|
60
|
-
expect(getParentSlug('my-space')).toEqual('');
|
61
|
-
});
|
62
|
-
test('should return parent slug for hierarchical slug', () => {
|
63
|
-
expect(getParentSlug('parent-space/child-space')).toEqual('parent-space');
|
64
|
-
});
|
65
|
-
test('should return parent path for deeply nested slug', () => {
|
66
|
-
expect(getParentSlug('grandparent-space/parent-space/child-space')).toEqual('grandparent-space/parent-space');
|
67
|
-
});
|
68
|
-
});
|
69
|
-
describe('getLabelFromSlug', () => {
|
70
|
-
test('should return same slug for non-hierarchical slug', () => {
|
71
|
-
expect(getLabelFromSlug('my-space')).toEqual('my-space');
|
72
|
-
});
|
73
|
-
test('should return last part of hierarchical slug', () => {
|
74
|
-
expect(getLabelFromSlug('parent-space/child-space')).toEqual('child-space');
|
75
|
-
});
|
76
|
-
test('should return last part of deeply nested slug', () => {
|
77
|
-
expect(getLabelFromSlug('grandparent-space/parent-space/child-space')).toEqual('child-space');
|
78
|
-
});
|
79
|
-
});
|
80
40
|
describe('getLtreePathFromSlug', () => {
|
81
|
-
test('should
|
41
|
+
test('should return ltree path from slug', () => {
|
82
42
|
expect(getLtreePathFromSlug('my-space')).toEqual('my_space');
|
83
43
|
});
|
84
|
-
test('should
|
85
|
-
expect(getLtreePathFromSlug('parent-space/child-space')).toEqual('
|
86
|
-
});
|
87
|
-
test('should handle deeply nested slugs', () => {
|
88
|
-
expect(getLtreePathFromSlug('grandparent-space/parent-space/child-space')).toEqual('grandparent_space.parent_space.child_space');
|
89
|
-
});
|
90
|
-
test('should remove non-alphanumeric characters except underscores', () => {
|
91
|
-
expect(getLtreePathFromSlug('my!space@name')).toEqual('my_space_name');
|
92
|
-
expect(getLtreePathFromSlug('my space name')).toEqual('my_space_name');
|
93
|
-
expect(getLtreePathFromSlug('my_space_name')).toEqual('my_space_name');
|
94
|
-
});
|
95
|
-
test('should handle mixed case slugs', () => {
|
96
|
-
expect(getLtreePathFromSlug('MySpace/ChildSpace')).toEqual('myspace.childspace');
|
97
|
-
});
|
98
|
-
test('should handle empty slug', () => {
|
99
|
-
expect(getLtreePathFromSlug('')).toEqual('');
|
44
|
+
test('should return ltree path from legacy hierarchical slug', () => {
|
45
|
+
expect(getLtreePathFromSlug('parent-space/child-space')).toEqual('parent_space___child_space');
|
100
46
|
});
|
101
47
|
test('should not trim hyphens from slug', () => {
|
102
48
|
expect(getLtreePathFromSlug('-my-space-name-with-hyphens-')).toEqual('_my_space_name_with_hyphens_');
|
103
49
|
});
|
104
50
|
test('should not trim hyphens from deeply nested slug', () => {
|
105
|
-
expect(getLtreePathFromSlug('grandparent-space-/-parent-space/child-space-')).toEqual('
|
51
|
+
expect(getLtreePathFromSlug('grandparent-space-/-parent-space/child-space-')).toEqual('grandparent_space_____parent_space___child_space_');
|
106
52
|
});
|
107
53
|
});
|
108
54
|
});
|
55
|
+
describe('getLtreePathFromContentAsCodePath', () => {
|
56
|
+
test('root', () => {
|
57
|
+
expect(getLtreePathFromContentAsCodePath('my-space')).toEqual('my_space');
|
58
|
+
});
|
59
|
+
test('nested', () => {
|
60
|
+
expect(getLtreePathFromContentAsCodePath('parent/child/-grandchild/final-child')).toEqual('parent.child._grandchild.final_child');
|
61
|
+
expect(getLtreePathFromContentAsCodePath('-parent-/-child-')).toEqual('_parent_._child_');
|
62
|
+
});
|
63
|
+
test('new slugs', () => {
|
64
|
+
expect(getLtreePathFromContentAsCodePath('-foo/-foo___bar/-foo___bar___boo')).toEqual('_foo._foo___bar._foo___bar___boo');
|
65
|
+
});
|
66
|
+
});
|
67
|
+
describe('getContentAsCodePathFromLtreePath', () => {
|
68
|
+
test('root', () => {
|
69
|
+
expect(getContentAsCodePathFromLtreePath('my_space')).toEqual('my-space');
|
70
|
+
expect(getContentAsCodePathFromLtreePath('_my_space')).toEqual('-my-space');
|
71
|
+
});
|
72
|
+
test('nested', () => {
|
73
|
+
expect(getContentAsCodePathFromLtreePath('parent.child._grandchild.final_child')).toEqual('parent/child/-grandchild/final-child');
|
74
|
+
});
|
75
|
+
test('new slugs', () => {
|
76
|
+
expect(getContentAsCodePathFromLtreePath('_foo._foo___bar._foo___bar___boo')).toEqual('-foo/-foo---bar/-foo---bar---boo');
|
77
|
+
});
|
78
|
+
});
|
79
|
+
describe('getContentAsCodePathFromLtreePath + getLtreePathFromContentAsCodePath', () => {
|
80
|
+
test('should be the inverse of each other', () => {
|
81
|
+
expect(getContentAsCodePathFromLtreePath(getLtreePathFromContentAsCodePath('my-space'))).toEqual('my-space');
|
82
|
+
expect(getLtreePathFromContentAsCodePath(getContentAsCodePathFromLtreePath('__my_space_'))).toEqual('__my_space_');
|
83
|
+
expect(getLtreePathFromContentAsCodePath(getContentAsCodePathFromLtreePath('__my_space_.foo.bar'))).toEqual('__my_space_.foo.bar');
|
84
|
+
});
|
85
|
+
});
|
86
|
+
describe('getDeepestPaths', () => {
|
87
|
+
test('should return the deepest paths', () => {
|
88
|
+
expect(getDeepestPaths([
|
89
|
+
'dash',
|
90
|
+
'charts',
|
91
|
+
'charts2',
|
92
|
+
'charts2.charts2_child',
|
93
|
+
])).toEqual(['dash', 'charts', 'charts2.charts2_child']);
|
94
|
+
expect(getDeepestPaths([
|
95
|
+
'jaffle_shop.dashboards.dashboards_marketing',
|
96
|
+
'jaffle_shop.sub_charts_2.sub_charts_2_child',
|
97
|
+
'jaffle_shop.dashboards',
|
98
|
+
'jaffle_shop.sub_charts',
|
99
|
+
'jaffle_shop.sub_charts_2',
|
100
|
+
])).toEqual([
|
101
|
+
'jaffle_shop.dashboards.dashboards_marketing',
|
102
|
+
'jaffle_shop.sub_charts_2.sub_charts_2_child',
|
103
|
+
'jaffle_shop.sub_charts',
|
104
|
+
]);
|
105
|
+
expect(getDeepestPaths([
|
106
|
+
'a.b.c.d',
|
107
|
+
'a.b.c',
|
108
|
+
'a.b.c.d.e',
|
109
|
+
'a.b.c.d.e.f',
|
110
|
+
'a.b.c.d.e.f.g',
|
111
|
+
'a.b.c.d.e.f.g.h',
|
112
|
+
'a.b.c.d.e.f.g.h.i',
|
113
|
+
'foo',
|
114
|
+
'bar',
|
115
|
+
])).toEqual(['a.b.c.d.e.f.g.h.i', 'foo', 'bar']);
|
116
|
+
expect(getDeepestPaths(['a'])).toEqual(['a']);
|
117
|
+
expect(getDeepestPaths(['a', 'b'])).toEqual(['a', 'b']);
|
118
|
+
});
|
119
|
+
});
|
120
|
+
describe('isSubpath', () => {
|
121
|
+
test('should return true if the path is a subpath of the other path', () => {
|
122
|
+
expect(isSubPath('a.b.c', 'a.b')).toEqual(false);
|
123
|
+
expect(isSubPath('a.b.c', 'a.b.c')).toEqual(false);
|
124
|
+
expect(isSubPath('a.b.c', 'a.b.c.d')).toEqual(true);
|
125
|
+
expect(isSubPath('a', 'a')).toEqual(false);
|
126
|
+
expect(isSubPath('a', 'a.b')).toEqual(true);
|
127
|
+
});
|
128
|
+
});
|
109
129
|
//# sourceMappingURL=slug.test.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slug.test.js","sourceRoot":"","sources":["../../../src/utils/slug.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,
|
1
|
+
{"version":3,"file":"slug.test.js","sourceRoot":"","sources":["../../../src/utils/slug.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,31 +1,7 @@
|
|
1
1
|
export declare const generateSlug: (name: string) => string;
|
2
|
-
/**
|
3
|
-
* Get all slugs with hierarchy for a given slug
|
4
|
-
* For example, "parent-space/child-space" will return ["parent-space", "parent-space/child-space"]
|
5
|
-
* @param slug - The slug to get the hierarchy for
|
6
|
-
* @returns An array of slugs with hierarchy
|
7
|
-
*/
|
8
|
-
export declare const getSlugsWithHierarchy: (slug: string) => string[];
|
9
|
-
/**
|
10
|
-
* Get the parent slug from a slug with hierarchy
|
11
|
-
* For example, "parent-space/child-space" will return "parent-space"
|
12
|
-
* @param slug - The slug to get the parent slug from
|
13
|
-
* @returns The parent slug
|
14
|
-
*/
|
15
|
-
export declare const getParentSlug: (slug: string) => string;
|
16
|
-
/**
|
17
|
-
* Get the label from a slug with hierarchy
|
18
|
-
* For example, "parent-space/child-space" will return "child-space"
|
19
|
-
* @param slug - The slug to get the label from
|
20
|
-
* @returns The label
|
21
|
-
*/
|
22
|
-
export declare const getLabelFromSlug: (slug: string) => string;
|
23
|
-
/**
|
24
|
-
* Get the ltree path from a slug with hierarchy
|
25
|
-
* For example, "parent-space/child-space" will return "parent_space.child_space"
|
26
|
-
* Verifies that each slug is a valid PostgreSQL ltree label (A-Za-z0-9_)
|
27
|
-
* @param slug - The slug to get the ltree path from
|
28
|
-
* @returns The ltree path
|
29
|
-
*/
|
30
2
|
export declare const getLtreePathFromSlug: (slug: string) => string;
|
3
|
+
export declare const getLtreePathFromContentAsCodePath: (path: string) => string;
|
4
|
+
export declare const getContentAsCodePathFromLtreePath: (path: string) => string;
|
5
|
+
export declare const getDeepestPaths: (paths: string[]) => string[];
|
6
|
+
export declare const isSubPath: (path: string, subPath: string) => boolean;
|
31
7
|
//# sourceMappingURL=slugs.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slugs.d.ts","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,SAAU,MAAM,WAQxC,CAAC;AAEF
|
1
|
+
{"version":3,"file":"slugs.d.ts","sourceRoot":"","sources":["../../../src/utils/slugs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,SAAU,MAAM,WAQxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,WAQhD,CAAC;AAEF,eAAO,MAAM,iCAAiC,SAAU,MAAM,WACf,CAAC;AAEhD,eAAO,MAAM,iCAAiC,SAAU,MAAM,WACf,CAAC;AAEhD,eAAO,MAAM,eAAe,UAAW,MAAM,EAAE,KAAG,MAAM,EA4BvD,CAAC;AAEF,eAAO,MAAM,SAAS,SAAU,MAAM,WAAW,MAAM,YACK,CAAC"}
|