@lightdash/common 0.1930.3 → 0.1932.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.
Files changed (78) hide show
  1. package/dist/cjs/authorization/parseScopes.d.ts +8 -0
  2. package/dist/cjs/authorization/parseScopes.d.ts.map +1 -0
  3. package/dist/cjs/authorization/parseScopes.js +27 -0
  4. package/dist/cjs/authorization/parseScopes.js.map +1 -0
  5. package/dist/cjs/authorization/parseScopes.test.d.ts +2 -0
  6. package/dist/cjs/authorization/parseScopes.test.d.ts.map +1 -0
  7. package/dist/cjs/authorization/parseScopes.test.js +109 -0
  8. package/dist/cjs/authorization/parseScopes.test.js.map +1 -0
  9. package/dist/cjs/authorization/scopeAbilityBuilder.d.ts +23 -0
  10. package/dist/cjs/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  11. package/dist/cjs/authorization/scopeAbilityBuilder.js +58 -0
  12. package/dist/cjs/authorization/scopeAbilityBuilder.js.map +1 -0
  13. package/dist/cjs/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  14. package/dist/cjs/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  15. package/dist/cjs/authorization/scopeAbilityBuilder.test.js +955 -0
  16. package/dist/cjs/authorization/scopeAbilityBuilder.test.js.map +1 -0
  17. package/dist/cjs/authorization/scopes.d.ts +8 -0
  18. package/dist/cjs/authorization/scopes.d.ts.map +1 -0
  19. package/dist/cjs/authorization/scopes.js +633 -0
  20. package/dist/cjs/authorization/scopes.js.map +1 -0
  21. package/dist/cjs/types/scopes.d.ts +30 -3
  22. package/dist/cjs/types/scopes.d.ts.map +1 -1
  23. package/dist/cjs/types/scopes.js.map +1 -1
  24. package/dist/cjs/types/search.d.ts +1 -0
  25. package/dist/cjs/types/search.d.ts.map +1 -1
  26. package/dist/cjs/types/search.js.map +1 -1
  27. package/dist/esm/authorization/parseScopes.d.ts +8 -0
  28. package/dist/esm/authorization/parseScopes.d.ts.map +1 -0
  29. package/dist/esm/authorization/parseScopes.js +22 -0
  30. package/dist/esm/authorization/parseScopes.js.map +1 -0
  31. package/dist/esm/authorization/parseScopes.test.d.ts +2 -0
  32. package/dist/esm/authorization/parseScopes.test.d.ts.map +1 -0
  33. package/dist/esm/authorization/parseScopes.test.js +107 -0
  34. package/dist/esm/authorization/parseScopes.test.js.map +1 -0
  35. package/dist/esm/authorization/scopeAbilityBuilder.d.ts +23 -0
  36. package/dist/esm/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  37. package/dist/esm/authorization/scopeAbilityBuilder.js +54 -0
  38. package/dist/esm/authorization/scopeAbilityBuilder.js.map +1 -0
  39. package/dist/esm/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  40. package/dist/esm/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  41. package/dist/esm/authorization/scopeAbilityBuilder.test.js +953 -0
  42. package/dist/esm/authorization/scopeAbilityBuilder.test.js.map +1 -0
  43. package/dist/esm/authorization/scopes.d.ts +8 -0
  44. package/dist/esm/authorization/scopes.d.ts.map +1 -0
  45. package/dist/esm/authorization/scopes.js +628 -0
  46. package/dist/esm/authorization/scopes.js.map +1 -0
  47. package/dist/esm/types/scopes.d.ts +30 -3
  48. package/dist/esm/types/scopes.d.ts.map +1 -1
  49. package/dist/esm/types/scopes.js.map +1 -1
  50. package/dist/esm/types/search.d.ts +1 -0
  51. package/dist/esm/types/search.d.ts.map +1 -1
  52. package/dist/esm/types/search.js.map +1 -1
  53. package/dist/tsconfig.types.tsbuildinfo +1 -1
  54. package/dist/types/authorization/parseScopes.d.ts +8 -0
  55. package/dist/types/authorization/parseScopes.d.ts.map +1 -0
  56. package/dist/types/authorization/parseScopes.test.d.ts +2 -0
  57. package/dist/types/authorization/parseScopes.test.d.ts.map +1 -0
  58. package/dist/types/authorization/scopeAbilityBuilder.d.ts +23 -0
  59. package/dist/types/authorization/scopeAbilityBuilder.d.ts.map +1 -0
  60. package/dist/types/authorization/scopeAbilityBuilder.test.d.ts +2 -0
  61. package/dist/types/authorization/scopeAbilityBuilder.test.d.ts.map +1 -0
  62. package/dist/types/authorization/scopes.d.ts +8 -0
  63. package/dist/types/authorization/scopes.d.ts.map +1 -0
  64. package/dist/types/types/scopes.d.ts +30 -3
  65. package/dist/types/types/scopes.d.ts.map +1 -1
  66. package/dist/types/types/search.d.ts +1 -0
  67. package/dist/types/types/search.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/cjs/authorization/scopes/index.d.ts +0 -5
  70. package/dist/cjs/authorization/scopes/index.d.ts.map +0 -1
  71. package/dist/cjs/authorization/scopes/index.js +0 -372
  72. package/dist/cjs/authorization/scopes/index.js.map +0 -1
  73. package/dist/esm/authorization/scopes/index.d.ts +0 -5
  74. package/dist/esm/authorization/scopes/index.d.ts.map +0 -1
  75. package/dist/esm/authorization/scopes/index.js +0 -368
  76. package/dist/esm/authorization/scopes/index.js.map +0 -1
  77. package/dist/types/authorization/scopes/index.d.ts +0 -5
  78. package/dist/types/authorization/scopes/index.d.ts.map +0 -1
@@ -1,4 +1,3 @@
1
- import { type SnakeCase } from 'type-fest';
2
1
  import { type AbilityAction, type CaslSubjectNames } from '../authorization/types';
3
2
  /**
4
3
  * Scope groups to organize permissions in the UI for admins.
@@ -12,14 +11,38 @@ export declare enum ScopeGroup {
12
11
  AI = "ai",
13
12
  SPOTLIGHT = "spotlight"
14
13
  }
14
+ /**
15
+ * Context given to scope getCondition functions
16
+ */
17
+ export type ScopeContext = {
18
+ organizationUuid: string;
19
+ projectUuid: string;
20
+ userUuid?: string;
21
+ /** The scopes available to the current user */
22
+ scopes: Set<ScopeName>;
23
+ isEnterprise: boolean;
24
+ /** The user's role name in the organization (for dynamic permission logic) */
25
+ organizationRole: string;
26
+ /** Configuration for dynamic permissions like PAT */
27
+ permissionsConfig?: {
28
+ pat: {
29
+ enabled: boolean;
30
+ allowedOrgRoles: string[];
31
+ };
32
+ };
33
+ };
34
+ /**
35
+ * The name of the scope, based on ability and subject (e.g. "create:project")
36
+ */
37
+ export type ScopeName = `${AbilityAction}:${CaslSubjectNames}`;
15
38
  /**
16
39
  * A scope defines a specific permission in the system
17
40
  */
18
41
  export type Scope = {
19
42
  /**
20
- * The name of the scope, based on ability and subject (e.g. "create:project")
43
+ * The name of the scope, based on ability and subject (e.g. "create:Project")
21
44
  */
22
- name: Lowercase<`${AbilityAction}:${SnakeCase<CaslSubjectNames>}`>;
45
+ name: ScopeName;
23
46
  /**
24
47
  * A helpful description of the permission
25
48
  */
@@ -32,5 +55,9 @@ export type Scope = {
32
55
  * The grouping from the ScopeGroup enum
33
56
  */
34
57
  group: ScopeGroup;
58
+ /**
59
+ * Get the conditions to be applied to the CASL ability derived from the scope
60
+ */
61
+ getConditions?: (context: ScopeContext) => Record<string, unknown>[];
35
62
  };
36
63
  //# sourceMappingURL=scopes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/types/scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACxB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,oBAAY,UAAU;IAClB,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,uBAAuB,4BAA4B;IACnD,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,SAAS,cAAc;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAChB;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC,GAAG,aAAa,IAAI,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACnE;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/types/scopes.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACxB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,oBAAY,UAAU;IAClB,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,uBAAuB,4BAA4B;IACnD,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,SAAS,cAAc;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE;QAChB,GAAG,EAAE;YACD,OAAO,EAAE,OAAO,CAAC;YACjB,eAAe,EAAE,MAAM,EAAE,CAAC;SAC7B,CAAC;KACL,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,aAAa,IAAI,gBAAgB,EAAE,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAChB;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/types/scopes.ts"],"names":[],"mappings":";;;AAMA;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,iCAAmB,CAAA;IACnB,uDAAyC,CAAA;IACzC,iEAAmD,CAAA;IACnD,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,uBAAS,CAAA;IACT,qCAAuB,CAAA;AAC3B,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB"}
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/types/scopes.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,iCAAmB,CAAA;IACnB,uDAAyC,CAAA;IACzC,iEAAmD,CAAA;IACnD,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,uBAAS,CAAA;IACT,qCAAuB,CAAA;AAC3B,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB"}
@@ -22,6 +22,7 @@ export type DashboardSearchResult = Pick<Dashboard, 'uuid' | 'name' | 'descripti
22
22
  userUuid: string;
23
23
  } | null;
24
24
  charts: {
25
+ uuid: string;
25
26
  name: string;
26
27
  description?: string;
27
28
  chartType: ChartKind;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/types/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/types/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/types/search.ts"],"names":[],"mappings":";;;AAyNA,wEA0BC;;AAnPD,2FAA2D;AA+JpD,MAAM,qBAAqB,GAAG,CACjC,KAAmB,EAC2B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;AAF3D,QAAA,qBAAqB,yBAEsC;AAEjE,MAAM,mBAAmB,GAAG,CAC/B,KAAmB,EACO,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC;AAFrC,QAAA,mBAAmB,uBAEkB;AAE3C,MAAM,wBAAwB,GAAG,CACpC,KAAmB,EACY,EAAE,CACjC,SAAS,IAAI,KAAK,IAAI,kBAAkB,IAAI,KAAK,CAAC;AAHzC,QAAA,wBAAwB,4BAGiB;AAE/C,MAAM,wBAAwB,GAAG,CACpC,KAAmB,EACY,EAAE,CACjC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;AAH/C,QAAA,wBAAwB,4BAGuB;AAErD,MAAM,sBAAsB,GAAG,CAClC,KAAmB,EACU,EAAE,CAC/B,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC;AAH7C,QAAA,sBAAsB,0BAGuB;AAanD,MAAM,iBAAiB,GAAG,CAAC,IAA8B,EAAE,EAAE;IAChE,IAAI,CAAC,IAAI,IAAI,IAAA,gCAAwB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,IAAA,6BAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B;AAEF,IAAY,cASX;AATD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,iDAA+B,CAAA;IAC/B,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,+BAAa,CAAA;AACjB,CAAC,EATW,cAAc,8BAAd,cAAc,QASzB;AAED,SAAgB,8BAA8B,CAC1C,eAAoC;IAEpC,QAAQ,eAAe,EAAE,CAAC;QACtB,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,YAAY;YACb,OAAO,cAAc,CAAC,SAAS,CAAC;QACpC,KAAK,aAAa;YACd,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,OAAO;YACR,OAAO,cAAc,CAAC,IAAI,CAAC;QAC/B,KAAK,WAAW;YACZ,OAAO,cAAc,CAAC,SAAS,CAAC;QACpC,KAAK,eAAe;YAChB,OAAO,cAAc,CAAC,aAAa,CAAC;QACxC;YACI,OAAO,IAAA,2BAAiB,EACpB,eAAe,EACf,iCAAiC,eAAe,EAAE,CACrD,CAAC;IACV,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/types/search.ts"],"names":[],"mappings":";;;AA0NA,wEA0BC;;AApPD,2FAA2D;AAgKpD,MAAM,qBAAqB,GAAG,CACjC,KAAmB,EAC2B,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;AAF3D,QAAA,qBAAqB,yBAEsC;AAEjE,MAAM,mBAAmB,GAAG,CAC/B,KAAmB,EACO,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC;AAFrC,QAAA,mBAAmB,uBAEkB;AAE3C,MAAM,wBAAwB,GAAG,CACpC,KAAmB,EACY,EAAE,CACjC,SAAS,IAAI,KAAK,IAAI,kBAAkB,IAAI,KAAK,CAAC;AAHzC,QAAA,wBAAwB,4BAGiB;AAE/C,MAAM,wBAAwB,GAAG,CACpC,KAAmB,EACY,EAAE,CACjC,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;AAH/C,QAAA,wBAAwB,4BAGuB;AAErD,MAAM,sBAAsB,GAAG,CAClC,KAAmB,EACU,EAAE,CAC/B,aAAa,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC;AAH7C,QAAA,sBAAsB,0BAGuB;AAanD,MAAM,iBAAiB,GAAG,CAAC,IAA8B,EAAE,EAAE;IAChE,IAAI,CAAC,IAAI,IAAI,IAAA,gCAAwB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,IAAA,6BAAqB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAA,2BAAmB,EAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B;AAEF,IAAY,cASX;AATD,WAAY,cAAc;IACtB,yCAAuB,CAAA;IACvB,iDAA+B,CAAA;IAC/B,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,iCAAe,CAAA;IACf,+BAAa,CAAA;AACjB,CAAC,EATW,cAAc,8BAAd,cAAc,QASzB;AAED,SAAgB,8BAA8B,CAC1C,eAAoC;IAEpC,QAAQ,eAAe,EAAE,CAAC;QACtB,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,YAAY;YACb,OAAO,cAAc,CAAC,SAAS,CAAC;QACpC,KAAK,aAAa;YACd,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,QAAQ;YACT,OAAO,cAAc,CAAC,KAAK,CAAC;QAChC,KAAK,OAAO;YACR,OAAO,cAAc,CAAC,IAAI,CAAC;QAC/B,KAAK,WAAW;YACZ,OAAO,cAAc,CAAC,SAAS,CAAC;QACpC,KAAK,eAAe;YAChB,OAAO,cAAc,CAAC,aAAa,CAAC;QACxC;YACI,OAAO,IAAA,2BAAiB,EACpB,eAAe,EACf,iCAAiC,eAAe,EAAE,CACrD,CAAC;IACV,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ScopeName } from '../types/scopes';
2
+ import { type AbilityAction, type CaslSubjectNames } from './types';
3
+ export declare const parseScope: (scope: string) => [AbilityAction, CaslSubjectNames];
4
+ export declare const parseScopes: ({ scopes, isEnterprise, }: {
5
+ scopes: string[];
6
+ isEnterprise: boolean;
7
+ }) => Set<ScopeName>;
8
+ //# sourceMappingURL=parseScopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseScopes.d.ts","sourceRoot":"","sources":["../../../src/authorization/parseScopes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEpE,eAAO,MAAM,UAAU,UACZ,MAAM,KACd,CAAC,aAAa,EAAE,gBAAgB,CAKlC,CAAC;AAEF,eAAO,MAAM,WAAW,8BAGrB;IACC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACzB,KAAG,GAAG,CAAC,SAAS,CAiBhB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { camelCase, upperFirst } from 'lodash';
2
+ import { ParameterError } from '../types/errors';
3
+ import { getAllScopeMap } from './scopes';
4
+ export const parseScope = (scope) => {
5
+ const [action, subjectPart] = scope.split(':');
6
+ const subject = upperFirst(camelCase(subjectPart));
7
+ return [action, subject];
8
+ };
9
+ export const parseScopes = ({ scopes, isEnterprise, }) => {
10
+ const scopeMap = getAllScopeMap({ isEnterprise });
11
+ const filtered = scopes
12
+ .map((scope) => parseScope(scope).join(':'))
13
+ .filter((scope) => {
14
+ const foundScope = scopeMap[scope];
15
+ if (!foundScope) {
16
+ throw new ParameterError(`Invalid scope: ${scope}. Please check the scope name and try again.`);
17
+ }
18
+ return true;
19
+ });
20
+ return new Set(filtered);
21
+ };
22
+ //# sourceMappingURL=parseScopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseScopes.js","sourceRoot":"","sources":["../../../src/authorization/parseScopes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,CAAC,MAAM,UAAU,GAAG,CACtB,KAAa,EACoB,EAAE;IACnC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAC,MAAuB,EAAE,OAA2B,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,MAAM,EACN,YAAY,GAIf,EAAkB,EAAE;IACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAc,CAAC;SACxD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,cAAc,CACpB,kBAAkB,KAAK,8CAA8C,CACxE,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAEP,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parseScopes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseScopes.test.d.ts","sourceRoot":"","sources":["../../../src/authorization/parseScopes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,107 @@
1
+ import { ParameterError } from '../types/errors';
2
+ import { parseScopes } from './parseScopes';
3
+ describe('parseScopes', () => {
4
+ describe('with valid scopes', () => {
5
+ it('should return a Set of valid scope names for non-enterprise', () => {
6
+ const result = parseScopes({
7
+ scopes: ['view:dashboard', 'manage:dashboard'],
8
+ isEnterprise: false,
9
+ });
10
+ expect(result).toBeInstanceOf(Set);
11
+ expect(result.size).toBe(2);
12
+ expect(result.has('view:Dashboard')).toBe(true);
13
+ expect(result.has('manage:Dashboard')).toBe(true);
14
+ });
15
+ it('should return a Set of valid scope names for enterprise', () => {
16
+ const result = parseScopes({
17
+ scopes: ['view:ai_agent', 'manage:ai_agent'],
18
+ isEnterprise: true,
19
+ });
20
+ expect(result).toBeInstanceOf(Set);
21
+ expect(result.size).toBe(2);
22
+ expect(result.has('view:AiAgent')).toBe(true);
23
+ expect(result.has('manage:AiAgent')).toBe(true);
24
+ });
25
+ it('should handle mixed case scope names correctly', () => {
26
+ const result = parseScopes({
27
+ scopes: [
28
+ 'export:dashboard_csv',
29
+ 'manage:personal_access_token',
30
+ ],
31
+ isEnterprise: true,
32
+ });
33
+ expect(result.size).toBe(2);
34
+ expect(result.has('export:DashboardCsv')).toBe(true);
35
+ expect(result.has('manage:PersonalAccessToken')).toBe(true);
36
+ });
37
+ it('should handle single scope correctly', () => {
38
+ const result = parseScopes({
39
+ scopes: ['view:project'],
40
+ isEnterprise: false,
41
+ });
42
+ expect(result.size).toBe(1);
43
+ expect(result.has('view:Project')).toBe(true);
44
+ });
45
+ it('should handle empty scopes array', () => {
46
+ const result = parseScopes({
47
+ scopes: [],
48
+ isEnterprise: false,
49
+ });
50
+ expect(result).toBeInstanceOf(Set);
51
+ expect(result.size).toBe(0);
52
+ });
53
+ });
54
+ describe('with invalid scopes', () => {
55
+ it('should throw ParameterError for invalid scope name', () => {
56
+ expect(() => parseScopes({
57
+ scopes: ['view:dashboard', 'invalid:scope'],
58
+ isEnterprise: false,
59
+ })).toThrow(ParameterError);
60
+ expect(() => parseScopes({
61
+ scopes: ['view:dashboard', 'invalid:scope'],
62
+ isEnterprise: false,
63
+ })).toThrow('Invalid scope: invalid:Scope. Please check the scope name and try again.');
64
+ });
65
+ it('should throw ParameterError for enterprise scope when not enterprise', () => {
66
+ expect(() => parseScopes({
67
+ scopes: ['view:dashboard', 'view:ai_agent'],
68
+ isEnterprise: false,
69
+ })).toThrow(ParameterError);
70
+ expect(() => parseScopes({
71
+ scopes: ['view:dashboard', 'view:ai_agent'],
72
+ isEnterprise: false,
73
+ })).toThrow('Invalid scope: view:AiAgent. Please check the scope name and try again.');
74
+ });
75
+ });
76
+ describe('scope parsing logic', () => {
77
+ it('should transform snake_case to PascalCase correctly', () => {
78
+ const result = parseScopes({
79
+ scopes: [
80
+ 'export:dashboard_csv',
81
+ 'manage:personal_access_token',
82
+ 'view:semantic_viewer',
83
+ ],
84
+ isEnterprise: true,
85
+ });
86
+ expect(result.has('export:DashboardCsv')).toBe(true);
87
+ expect(result.has('manage:PersonalAccessToken')).toBe(true);
88
+ expect(result.has('view:SemanticViewer')).toBe(true);
89
+ });
90
+ it('should handle camelCase input correctly', () => {
91
+ const result = parseScopes({
92
+ scopes: ['view:dashboard', 'manage:savedChart'],
93
+ isEnterprise: false,
94
+ });
95
+ expect(result.has('view:Dashboard')).toBe(true);
96
+ expect(result.has('manage:SavedChart')).toBe(true);
97
+ });
98
+ it('should handle mixed case input correctly', () => {
99
+ const result = parseScopes({
100
+ scopes: ['view:underlying_data'],
101
+ isEnterprise: false,
102
+ });
103
+ expect(result.has('view:UnderlyingData')).toBe(true);
104
+ });
105
+ });
106
+ });
107
+ //# sourceMappingURL=parseScopes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseScopes.test.js","sourceRoot":"","sources":["../../../src/authorization/parseScopes.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type MemberAbility } from './types';
2
+ type BuilderOptions = {
3
+ organizationUuid: string;
4
+ projectUuid: string;
5
+ userUuid?: string;
6
+ scopes: string[];
7
+ isEnterprise: boolean;
8
+ organizationRole: string;
9
+ permissionsConfig?: {
10
+ pat: {
11
+ enabled: boolean;
12
+ allowedOrgRoles: string[];
13
+ };
14
+ };
15
+ };
16
+ /**
17
+ * Build a complete CASL ability from scope names and context
18
+ * @param context - Context containing organization, project, user, and space access information
19
+ * @returns CASL Ability with applied permissions
20
+ */
21
+ export declare const buildAbilityFromScopes: (context: BuilderOptions) => MemberAbility;
22
+ export {};
23
+ //# sourceMappingURL=scopeAbilityBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeAbilityBuilder.d.ts","sourceRoot":"","sources":["../../../src/authorization/scopeAbilityBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAoD7C,KAAK,cAAc,GAAG;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE;QAChB,GAAG,EAAE;YACD,OAAO,EAAE,OAAO,CAAC;YACjB,eAAe,EAAE,MAAM,EAAE,CAAC;SAC7B,CAAC;KACL,CAAC;CACL,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,YACtB,cAAc,KACxB,aAcF,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { Ability, AbilityBuilder } from '@casl/ability';
2
+ import { parseScope, parseScopes } from './parseScopes';
3
+ import { getAllScopeMap } from './scopes';
4
+ const handlePatConfigApplication = (context, builder) => {
5
+ const { pat } = context?.permissionsConfig || {};
6
+ const hasPatRule = builder.rules.find((rule) => rule.action === 'manage' && rule.subject === 'PersonalAccessToken');
7
+ if (!hasPatRule &&
8
+ pat?.enabled &&
9
+ pat?.allowedOrgRoles?.includes(context.organizationRole)) {
10
+ builder.can('manage', 'PersonalAccessToken');
11
+ }
12
+ };
13
+ /**
14
+ * Apply scope-based abilities to a CASL ability builder
15
+ * @param scopeNames - Array of scope names to apply
16
+ * @param context - Context containing organization, project, user, and space access information
17
+ * @param builder - CASL ability builder to add permissions to
18
+ */
19
+ const applyScopeAbilities = (context, builder) => {
20
+ const scopeMap = getAllScopeMap({ isEnterprise: context.isEnterprise });
21
+ context.scopes.forEach((scopeName) => {
22
+ const scope = scopeMap[scopeName];
23
+ if (!scope)
24
+ return;
25
+ const [action, subject] = parseScope(scopeName);
26
+ const conditionsList = scope.getConditions
27
+ ? scope.getConditions(context)
28
+ : [];
29
+ // Apply each condition set
30
+ conditionsList.forEach((conditions) => {
31
+ builder.can(action, subject, conditions);
32
+ });
33
+ });
34
+ handlePatConfigApplication(context, builder);
35
+ };
36
+ /**
37
+ * Build a complete CASL ability from scope names and context
38
+ * @param context - Context containing organization, project, user, and space access information
39
+ * @returns CASL Ability with applied permissions
40
+ */
41
+ export const buildAbilityFromScopes = (context) => {
42
+ const builder = new AbilityBuilder(Ability);
43
+ const scopes = parseScopes({
44
+ scopes: context.scopes,
45
+ isEnterprise: context.isEnterprise,
46
+ });
47
+ const parsedContext = {
48
+ ...context,
49
+ scopes,
50
+ };
51
+ applyScopeAbilities(parsedContext, builder);
52
+ return builder.build();
53
+ };
54
+ //# sourceMappingURL=scopeAbilityBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeAbilityBuilder.js","sourceRoot":"","sources":["../../../src/authorization/scopeAbilityBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,0BAA0B,GAAG,CAC/B,OAAqB,EACrB,OAAsC,EACxC,EAAE;IACA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,iBAAiB,IAAI,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CACjC,CAAC,IAAI,EAAE,EAAE,CACL,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,qBAAqB,CACzE,CAAC;IAEF,IACI,CAAC,UAAU;QACX,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAC1D,CAAC;QACC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACjD,CAAC;AACL,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,CACxB,OAAqB,EACrB,OAAsC,EAClC,EAAE;IACN,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAExE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa;YACtC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;YAC9B,CAAC,CAAC,EAAE,CAAC;QAET,2BAA2B;QAC3B,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC;AAiBF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAuB,EACV,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,cAAc,CAAgB,OAAO,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,WAAW,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;KACrC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG;QAClB,GAAG,OAAO;QACV,MAAM;KACT,CAAC;IAEF,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scopeAbilityBuilder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeAbilityBuilder.test.d.ts","sourceRoot":"","sources":["../../../src/authorization/scopeAbilityBuilder.test.ts"],"names":[],"mappings":""}