@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.
@@ -18,42 +18,38 @@ export const generateSlug = (name) => {
18
18
  }
19
19
  return sanitizedSlug;
20
20
  };
21
- /**
22
- * Get all slugs with hierarchy for a given slug
23
- * For example, "parent-space/child-space" will return ["parent-space", "parent-space/child-space"]
24
- * @param slug - The slug to get the hierarchy for
25
- * @returns An array of slugs with hierarchy
26
- */
27
- export const getSlugsWithHierarchy = (slug) => slug.split('/').reduce((acc, s) => {
28
- if (acc.length === 0) {
29
- return [s];
30
- }
31
- return [...acc, `${acc[acc.length - 1]}/${s}`];
32
- }, []);
33
- /**
34
- * Get the parent slug from a slug with hierarchy
35
- * For example, "parent-space/child-space" will return "parent-space"
36
- * @param slug - The slug to get the parent slug from
37
- * @returns The parent slug
38
- */
39
- export const getParentSlug = (slug) => slug.split('/').slice(0, -1).join('/');
40
- /**
41
- * Get the label from a slug with hierarchy
42
- * For example, "parent-space/child-space" will return "child-space"
43
- * @param slug - The slug to get the label from
44
- * @returns The label
45
- */
46
- export const getLabelFromSlug = (slug) => slug.split('/').pop() ?? slug;
47
- /**
48
- * Get the ltree path from a slug with hierarchy
49
- * For example, "parent-space/child-space" will return "parent_space.child_space"
50
- * Verifies that each slug is a valid PostgreSQL ltree label (A-Za-z0-9_)
51
- * @param slug - The slug to get the ltree path from
52
- * @returns The ltree path
53
- */
54
21
  export const getLtreePathFromSlug = (slug) => {
55
- const slugs = slug.split('/');
56
- const sanitizedSlugs = slugs.map((s) => sanitizeSlug(s, false));
57
- return sanitizedSlugs.join('.').replace(/-/g, '_');
22
+ let path = slug;
23
+ // This is for backwards compatibility with the old slug format that contained hierarchy
24
+ if (path.includes('/')) {
25
+ path = path.split('/').join('___');
26
+ }
27
+ return path.replace(/-/g, '_');
28
+ };
29
+ export const getLtreePathFromContentAsCodePath = (path) => path.replace(/-/g, '_').replace(/\//g, '.');
30
+ export const getContentAsCodePathFromLtreePath = (path) => path.replace(/_/g, '-').replace(/\./g, '/');
31
+ export const getDeepestPaths = (paths) => {
32
+ const uniquePaths = Array.from(new Set(paths));
33
+ const result = [];
34
+ for (const path of uniquePaths) {
35
+ const pathSegments = path.split('.');
36
+ const isPrefix = uniquePaths.some((otherPath) => {
37
+ if (path === otherPath)
38
+ return false;
39
+ const otherSegments = otherPath.split('.');
40
+ if (pathSegments.length < otherSegments.length) {
41
+ const potentialPrefix = otherSegments
42
+ .slice(0, pathSegments.length)
43
+ .join('.');
44
+ return potentialPrefix === path;
45
+ }
46
+ return false;
47
+ });
48
+ if (!isPrefix) {
49
+ result.push(path);
50
+ }
51
+ }
52
+ return result;
58
53
  };
54
+ export const isSubPath = (path, subPath) => subPath.startsWith(path) && subPath[path.length] === '.';
59
55
  //# 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;AAEF,MAAM,CAAC,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;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE,CAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAW,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC,EAAE,EAAE,CAAC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhE,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC,CAAC"}
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;AAEF,MAAM,CAAC,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;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,EAAE;IACjD,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,wFAAwF;IACxF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,IAAY,EAAE,EAAE,CAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAe,EAAY,EAAE;IACzD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAErC,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE3C,IAAI,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,eAAe,GAAG,aAAa;qBAChC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC;qBAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,OAAO,eAAe,KAAK,IAAI,CAAC;YACpC,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CACvD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC"}