openxiangda-cli 2.0.0-alpha.20 → 2.0.0-alpha.23

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 (124) hide show
  1. package/README.md +2 -1
  2. package/dist/base.d.ts +2 -0
  3. package/dist/base.d.ts.map +1 -1
  4. package/dist/base.js +9 -0
  5. package/dist/base.js.map +1 -1
  6. package/dist/commands/app/create.js +1 -1
  7. package/dist/commands/app/create.js.map +1 -1
  8. package/dist/commands/app/provision.d.ts.map +1 -1
  9. package/dist/commands/app/provision.js +1 -1
  10. package/dist/commands/app/provision.js.map +1 -1
  11. package/dist/commands/authz/membership/grant.d.ts +16 -0
  12. package/dist/commands/authz/membership/grant.d.ts.map +1 -0
  13. package/dist/commands/authz/membership/grant.js +32 -0
  14. package/dist/commands/authz/membership/grant.js.map +1 -0
  15. package/dist/commands/authz/membership/list.d.ts +16 -0
  16. package/dist/commands/authz/membership/list.d.ts.map +1 -0
  17. package/dist/commands/authz/membership/list.js +34 -0
  18. package/dist/commands/authz/membership/list.js.map +1 -0
  19. package/dist/commands/authz/membership/revoke.d.ts +15 -0
  20. package/dist/commands/authz/membership/revoke.d.ts.map +1 -0
  21. package/dist/commands/authz/membership/revoke.js +22 -0
  22. package/dist/commands/authz/membership/revoke.js.map +1 -0
  23. package/dist/commands/authz/membership/update.d.ts +18 -0
  24. package/dist/commands/authz/membership/update.d.ts.map +1 -0
  25. package/dist/commands/authz/membership/update.js +31 -0
  26. package/dist/commands/authz/membership/update.js.map +1 -0
  27. package/dist/commands/authz/relationship/grant.d.ts +20 -0
  28. package/dist/commands/authz/relationship/grant.d.ts.map +1 -0
  29. package/dist/commands/authz/relationship/grant.js +40 -0
  30. package/dist/commands/authz/relationship/grant.js.map +1 -0
  31. package/dist/commands/authz/relationship/list.d.ts +18 -0
  32. package/dist/commands/authz/relationship/list.d.ts.map +1 -0
  33. package/dist/commands/authz/relationship/list.js +43 -0
  34. package/dist/commands/authz/relationship/list.js.map +1 -0
  35. package/dist/commands/authz/relationship/revoke.d.ts +15 -0
  36. package/dist/commands/authz/relationship/revoke.d.ts.map +1 -0
  37. package/dist/commands/authz/relationship/revoke.js +22 -0
  38. package/dist/commands/authz/relationship/revoke.js.map +1 -0
  39. package/dist/commands/authz/relationship/update.d.ts +18 -0
  40. package/dist/commands/authz/relationship/update.d.ts.map +1 -0
  41. package/dist/commands/authz/relationship/update.js +28 -0
  42. package/dist/commands/authz/relationship/update.js.map +1 -0
  43. package/dist/commands/authz/super-admin/grant.d.ts +12 -0
  44. package/dist/commands/authz/super-admin/grant.d.ts.map +1 -0
  45. package/dist/commands/authz/super-admin/grant.js +20 -0
  46. package/dist/commands/authz/super-admin/grant.js.map +1 -0
  47. package/dist/commands/authz/super-admin/list.d.ts +15 -0
  48. package/dist/commands/authz/super-admin/list.d.ts.map +1 -0
  49. package/dist/commands/authz/super-admin/list.js +27 -0
  50. package/dist/commands/authz/super-admin/list.js.map +1 -0
  51. package/dist/commands/authz/super-admin/revoke.d.ts +15 -0
  52. package/dist/commands/authz/super-admin/revoke.d.ts.map +1 -0
  53. package/dist/commands/authz/super-admin/revoke.js +21 -0
  54. package/dist/commands/authz/super-admin/revoke.js.map +1 -0
  55. package/dist/commands/deploy.d.ts.map +1 -1
  56. package/dist/commands/deploy.js +1 -1
  57. package/dist/commands/deploy.js.map +1 -1
  58. package/dist/commands/dev/reset.d.ts +10 -0
  59. package/dist/commands/dev/reset.d.ts.map +1 -0
  60. package/dist/commands/dev/reset.js +17 -0
  61. package/dist/commands/dev/reset.js.map +1 -0
  62. package/dist/commands/dev/status.d.ts +9 -0
  63. package/dist/commands/dev/status.d.ts.map +1 -0
  64. package/dist/commands/dev/status.js +10 -0
  65. package/dist/commands/dev/status.js.map +1 -0
  66. package/dist/commands/dev/stop.d.ts +9 -0
  67. package/dist/commands/dev/stop.d.ts.map +1 -0
  68. package/dist/commands/dev/stop.js +10 -0
  69. package/dist/commands/dev/stop.js.map +1 -0
  70. package/dist/commands/dev.d.ts +4 -0
  71. package/dist/commands/dev.d.ts.map +1 -1
  72. package/dist/commands/dev.js +28 -3
  73. package/dist/commands/dev.js.map +1 -1
  74. package/dist/commands/event/timer/fire.d.ts +12 -0
  75. package/dist/commands/event/timer/fire.d.ts.map +1 -0
  76. package/dist/commands/event/timer/fire.js +12 -0
  77. package/dist/commands/event/timer/fire.js.map +1 -0
  78. package/dist/commands/oauth/audit/list.d.ts.map +1 -1
  79. package/dist/commands/oauth/audit/list.js +2 -2
  80. package/dist/commands/oauth/audit/list.js.map +1 -1
  81. package/dist/commands/oauth/client/create.d.ts.map +1 -1
  82. package/dist/commands/oauth/client/create.js +2 -5
  83. package/dist/commands/oauth/client/create.js.map +1 -1
  84. package/dist/commands/oauth/runtime/rotate.d.ts.map +1 -1
  85. package/dist/commands/oauth/runtime/rotate.js +2 -5
  86. package/dist/commands/oauth/runtime/rotate.js.map +1 -1
  87. package/dist/commands/oauth/runtime/status.d.ts.map +1 -1
  88. package/dist/commands/oauth/runtime/status.js +2 -6
  89. package/dist/commands/oauth/runtime/status.js.map +1 -1
  90. package/dist/commands/promote.d.ts.map +1 -1
  91. package/dist/commands/promote.js +1 -1
  92. package/dist/commands/promote.js.map +1 -1
  93. package/dist/commands/rollback.d.ts.map +1 -1
  94. package/dist/commands/rollback.js +1 -1
  95. package/dist/commands/rollback.js.map +1 -1
  96. package/dist/commands/secret/audit/list.d.ts.map +1 -1
  97. package/dist/commands/secret/audit/list.js +2 -2
  98. package/dist/commands/secret/audit/list.js.map +1 -1
  99. package/dist/commands/secret/create.d.ts.map +1 -1
  100. package/dist/commands/secret/create.js +2 -2
  101. package/dist/commands/secret/create.js.map +1 -1
  102. package/dist/commands/secret/delete.d.ts.map +1 -1
  103. package/dist/commands/secret/delete.js +2 -2
  104. package/dist/commands/secret/delete.js.map +1 -1
  105. package/dist/commands/secret/list.d.ts.map +1 -1
  106. package/dist/commands/secret/list.js +2 -3
  107. package/dist/commands/secret/list.js.map +1 -1
  108. package/dist/commands/secret/rotate.d.ts.map +1 -1
  109. package/dist/commands/secret/rotate.js +2 -2
  110. package/dist/commands/secret/rotate.js.map +1 -1
  111. package/dist/commands/secret/update.d.ts.map +1 -1
  112. package/dist/commands/secret/update.js +2 -2
  113. package/dist/commands/secret/update.js.map +1 -1
  114. package/dist/commands/workflow/provider/list.d.ts.map +1 -1
  115. package/dist/commands/workflow/provider/list.js +2 -3
  116. package/dist/commands/workflow/provider/list.js.map +1 -1
  117. package/dist/commands/workflow/provider/rotate.d.ts.map +1 -1
  118. package/dist/commands/workflow/provider/rotate.js +2 -2
  119. package/dist/commands/workflow/provider/rotate.js.map +1 -1
  120. package/dist/native-authz.d.ts +4 -0
  121. package/dist/native-authz.d.ts.map +1 -0
  122. package/dist/native-authz.js +25 -0
  123. package/dist/native-authz.js.map +1 -0
  124. package/package.json +5 -5
package/README.md CHANGED
@@ -6,7 +6,8 @@ renders its `DevkitResult`; commands never invoke other commands or parse their
6
6
  stdout. React, Ant Design and editor runtimes are intentionally absent.
7
7
 
8
8
  The CLI includes application creation, deterministic contract generation,
9
- checks/tests/build/deploy, OAuth2 client lifecycle, platform-managed runtime
9
+ checks/tests/build/deploy, Native role membership and relationship management,
10
+ reserved application super-admin lifecycle, OAuth2 client lifecycle, platform-managed runtime
10
11
  credential status/rotation, environment Secret management, event operations
11
12
  and staged Workflow Provider rotation. Runtime rotation stages a credential by
12
13
  CAS and promotes the currently active immutable AppVersion, so no secret is
package/dist/base.d.ts CHANGED
@@ -4,6 +4,8 @@ import { OpenXiangdaApplicationServices } from 'openxiangda-devkit-core';
4
4
  export declare const workspaceFlags: {
5
5
  cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
6
  };
7
+ export declare const requiredRemoteEnvironmentFlag: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ export declare const optionalRemoteEnvironmentFlag: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
9
  export declare const backendImageFlag: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
10
  export declare abstract class OpenXiangdaCommand extends Command {
9
11
  static enableJsonFlag: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,iHAI3B,CAAC;AAEH,8BAAsB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,UAAQ;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,iCAAwC;IAEnE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;CAYhD"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,6BAA6B,qGAIxC,CAAC;AAEH,eAAO,MAAM,6BAA6B,iHAGxC,CAAC;AAEH,eAAO,MAAM,gBAAgB,iHAI3B,CAAC;AAEH,8BAAsB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,UAAQ;IAE7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,iCAAwC;IAEnE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;CAYhD"}
package/dist/base.js CHANGED
@@ -3,6 +3,15 @@ import { OpenXiangdaApplicationServices } from 'openxiangda-devkit-core';
3
3
  export const workspaceFlags = {
4
4
  cwd: Flags.string({ summary: '应用工作区目录', helpValue: '<directory>' }),
5
5
  };
6
+ export const requiredRemoteEnvironmentFlag = Flags.string({
7
+ required: true,
8
+ options: ['preproduction', 'production'],
9
+ summary: '目标远端环境(preproduction 或 production)',
10
+ });
11
+ export const optionalRemoteEnvironmentFlag = Flags.string({
12
+ options: ['preproduction', 'production'],
13
+ summary: '按远端环境筛选',
14
+ });
6
15
  export const backendImageFlag = Flags.string({
7
16
  summary: '已经推送的不可变后端 OCI image',
8
17
  helpValue: '<registry/repository@sha256:digest>',
package/dist/base.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,sBAAsB;IAC/B,SAAS,EAAE,qCAAqC;IAChD,GAAG,EAAE,2BAA2B;CACjC,CAAC,CAAC;AAEH,MAAM,OAAgB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAEV,QAAQ,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAEzD,OAAO,CAAC,MAA6B;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,UAAU,CAAC,WAAW;gBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC,MAAM,CAAC;IACxD,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;IACxC,OAAO,EAAE,oCAAoC;CAC9C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;IACxC,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,sBAAsB;IAC/B,SAAS,EAAE,qCAAqC;IAChD,GAAG,EAAE,2BAA2B;CACjC,CAAC,CAAC;AAEH,MAAM,OAAgB,kBAAmB,SAAQ,OAAO;IACtD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IAEV,QAAQ,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAEzD,OAAO,CAAC,MAA6B;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,UAAU,CAAC,WAAW;gBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -9,7 +9,7 @@ export default class AppCreate extends OpenXiangdaCommand {
9
9
  name: Flags.string({ required: true, summary: "应用名称" }),
10
10
  install: Flags.boolean({ summary: "创建后安装依赖" }),
11
11
  "local-sdk": Flags.string({
12
- summary: "使用本地 OpenXiangda 2.0 源码包,不经过 npm 发布",
12
+ summary: "把本地 OpenXiangda 2.0 SDK 打包为验收工件,不经过 npm 发布",
13
13
  }),
14
14
  };
15
15
  async run() {
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,kBAAkB;IACvD,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC;IAC7C,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7D,MAAM,CAAC,KAAK,GAAG;QACb,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/D,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,qCAAqC;SAC/C,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,EAAE,EAAE,IAAI;YACR,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACtE,IAAI;YACJ,WAAW,EAAE,EAAE;YACf,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,uBAAuB;iBAChD;aACF;SACF,CAAC,CAAC;IACL,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/app/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,kBAAkB;IACvD,MAAM,CAAC,OAAO,GAAG,2BAA2B,CAAC;IAC7C,MAAM,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7D,MAAM,CAAC,KAAK,GAAG;QACb,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/D,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,4CAA4C;SACtD,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,EAAE,EAAE,IAAI;YACR,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACtE,IAAI;YACJ,WAAW,EAAE,EAAE;YACf,WAAW,EAAE;gBACX;oBACE,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,uBAAuB;iBAChD;aACF;SACF,CAAC,CAAC;IACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../../src/commands/app/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,eAAe,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,OAAO,SAAsB;IACpC,MAAM,CAAC,KAAK;;MAAkB;IAExB,GAAG;CAIV"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../../src/commands/app/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,eAAe,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,OAAO,SAA8B;IAC5C,MAAM,CAAC,KAAK;;MAAkB;IAExB,GAAG;CAIV"}
@@ -1,6 +1,6 @@
1
1
  import { OpenXiangdaCommand, workspaceFlags } from "../../base.js";
2
2
  export default class AppProvision extends OpenXiangdaCommand {
3
- static summary = "在平台幂等创建 2.0 应用身份";
3
+ static summary = "在平台幂等创建 2.0 应用身份和预发/生产环境";
4
4
  static flags = workspaceFlags;
5
5
  async run() {
6
6
  const { flags } = await this.parse(AppProvision);
@@ -1 +1 @@
1
- {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../src/commands/app/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC;IACpC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC;IAE9B,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC"}
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../../../src/commands/app/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC;IAC5C,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC;IAE9B,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzMembershipGrant extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static flags: {
5
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ user: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ role: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ scope: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ "valid-from": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "valid-to": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
15
+ }
16
+ //# sourceMappingURL=grant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/membership/grant.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,kBAAkB;IAClE,MAAM,CAAC,OAAO,SAA2B;IACzC,MAAM,CAAC,KAAK;;;;;;;;;MAYV;IAEI,GAAG;CAcV"}
@@ -0,0 +1,32 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId, parseScopeGrants } from "../../../native-authz.js";
4
+ export default class AuthzMembershipGrant extends OpenXiangdaCommand {
5
+ static summary = "为用户授予单一 Native 应用业务角色";
6
+ static flags = {
7
+ ...workspaceFlags,
8
+ environment: requiredRemoteEnvironmentFlag,
9
+ user: Flags.string({ required: true, summary: "用户 ID" }),
10
+ role: Flags.string({ required: true, summary: "业务角色 code" }),
11
+ scope: Flags.string({
12
+ multiple: true,
13
+ summary: "数据范围,可重复传入 dimension=value1,value2",
14
+ }),
15
+ "valid-from": Flags.string({ summary: "可选 ISO 8601 生效时间" }),
16
+ "valid-to": Flags.string({ summary: "可选 ISO 8601 失效时间" }),
17
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
18
+ };
19
+ async run() {
20
+ const { flags } = await this.parse(AuthzMembershipGrant);
21
+ return this.present(await this.services.createNativeRoleMembership(flags.cwd, {
22
+ environmentKey: flags.environment,
23
+ operationId: mutationOperationId(flags["operation-id"]),
24
+ userId: flags.user,
25
+ roleCode: flags.role,
26
+ scopeGrants: parseScopeGrants(flags.scope),
27
+ ...(flags["valid-from"] ? { validFrom: flags["valid-from"] } : {}),
28
+ ...(flags["valid-to"] ? { validTo: flags["valid-to"] } : {}),
29
+ }));
30
+ }
31
+ }
32
+ //# sourceMappingURL=grant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.js","sourceRoot":"","sources":["../../../../src/commands/authz/membership/grant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,kBAAkB;IAClE,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC;IACzC,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACxD,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,oCAAoC;SAC9C,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC3D,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QACzD,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,EAAE;YACxD,cAAc,EAAE,KAAK,CAAC,WAA6C;YACnE,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,MAAM,EAAE,KAAK,CAAC,IAAI;YAClB,QAAQ,EAAE,KAAK,CAAC,IAAI;YACpB,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CACH,CAAC;IACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzMembershipList extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static flags: {
5
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ user: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ role: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ keyword: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ };
14
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
15
+ }
16
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/membership/list.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,kBAAkB;IACjE,MAAM,CAAC,OAAO,SAAwB;IACtC,MAAM,CAAC,KAAK;;;;;;;;;MAYV;IAEI,GAAG;CAqBV"}
@@ -0,0 +1,34 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ export default class AuthzMembershipList extends OpenXiangdaCommand {
4
+ static summary = "分页查询 Native 应用角色成员";
5
+ static flags = {
6
+ ...workspaceFlags,
7
+ environment: requiredRemoteEnvironmentFlag,
8
+ user: Flags.string({ summary: "按用户 ID 过滤" }),
9
+ role: Flags.string({ summary: "按业务角色 code 过滤" }),
10
+ keyword: Flags.string({ summary: "按用户或角色搜索" }),
11
+ status: Flags.string({
12
+ options: ["active", "revoked", "expired"],
13
+ summary: "成员状态",
14
+ }),
15
+ limit: Flags.integer({ min: 1, max: 100, default: 50 }),
16
+ offset: Flags.integer({ min: 0, default: 0 }),
17
+ };
18
+ async run() {
19
+ const { flags } = await this.parse(AuthzMembershipList);
20
+ return this.present(await this.services.nativeRoleMemberships(flags.cwd, flags.environment, {
21
+ ...(flags.user ? { userId: flags.user } : {}),
22
+ ...(flags.role ? { roleCode: flags.role } : {}),
23
+ ...(flags.keyword ? { keyword: flags.keyword } : {}),
24
+ ...(flags.status
25
+ ? {
26
+ status: flags.status,
27
+ }
28
+ : {}),
29
+ limit: flags.limit,
30
+ offset: flags.offset,
31
+ }));
32
+ }
33
+ }
34
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/authz/membership/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,kBAAkB;IACjE,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAC;IACtC,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC5C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAChD,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;YACzC,OAAO,EAAE,MAAM;SAChB,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACvD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KAC9C,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACvC,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,WAAW,EACjB;YACE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC;oBACE,MAAM,EAAE,KAAK,CAAC,MAA0C;iBACzD;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CACF,CACF,CAAC;IACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzMembershipRevoke extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static args: {
5
+ membershipId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ revision: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
10
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
14
+ }
15
+ //# sourceMappingURL=revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/membership/revoke.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,IAAI;;MAAqD;IAChE,MAAM,CAAC,KAAK;;;;;MAKV;IAEI,GAAG;CAgBV"}
@@ -0,0 +1,22 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId } from "../../../native-authz.js";
4
+ export default class AuthzMembershipRevoke extends OpenXiangdaCommand {
5
+ static summary = "CAS 撤销 Native 应用角色成员";
6
+ static args = { membershipId: Args.string({ required: true }) };
7
+ static flags = {
8
+ ...workspaceFlags,
9
+ environment: requiredRemoteEnvironmentFlag,
10
+ revision: Flags.integer({ required: true, min: 1 }),
11
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
12
+ };
13
+ async run() {
14
+ const { args, flags } = await this.parse(AuthzMembershipRevoke);
15
+ return this.present(await this.services.revokeNativeRoleMembership(flags.cwd, args.membershipId, {
16
+ environmentKey: flags.environment,
17
+ operationId: mutationOperationId(flags["operation-id"]),
18
+ expectedRevision: flags.revision,
19
+ }));
20
+ }
21
+ }
22
+ //# sourceMappingURL=revoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../../../src/commands/authz/membership/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,GAAG,sBAAsB,CAAC;IACxC,MAAM,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACnD,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC5C,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,YAAY,EACjB;YACE,cAAc,EAAE,KAAK,CAAC,WAEN;YAChB,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ;SACjC,CACF,CACF,CAAC;IACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzMembershipUpdate extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static args: {
5
+ membershipId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ revision: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
10
+ scope: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ "valid-from": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ "valid-to": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
17
+ }
18
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/membership/update.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,SAAiC;IAC/C,MAAM,CAAC,IAAI;;MAAqD;IAChE,MAAM,CAAC,KAAK;;;;;;;;MAWV;IAEI,GAAG;CAmBV"}
@@ -0,0 +1,31 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId, parseScopeGrants } from "../../../native-authz.js";
4
+ export default class AuthzMembershipUpdate extends OpenXiangdaCommand {
5
+ static summary = "CAS 更新 Native 角色成员的数据范围与有效期";
6
+ static args = { membershipId: Args.string({ required: true }) };
7
+ static flags = {
8
+ ...workspaceFlags,
9
+ environment: requiredRemoteEnvironmentFlag,
10
+ revision: Flags.integer({ required: true, min: 1 }),
11
+ scope: Flags.string({
12
+ multiple: true,
13
+ summary: "完整替换数据范围,dimension=value1,value2",
14
+ }),
15
+ "valid-from": Flags.string({ summary: "可选 ISO 8601 生效时间" }),
16
+ "valid-to": Flags.string({ summary: "可选 ISO 8601 失效时间" }),
17
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
18
+ };
19
+ async run() {
20
+ const { args, flags } = await this.parse(AuthzMembershipUpdate);
21
+ return this.present(await this.services.updateNativeRoleMembership(flags.cwd, args.membershipId, {
22
+ environmentKey: flags.environment,
23
+ operationId: mutationOperationId(flags["operation-id"]),
24
+ expectedRevision: flags.revision,
25
+ scopeGrants: parseScopeGrants(flags.scope),
26
+ ...(flags["valid-from"] ? { validFrom: flags["valid-from"] } : {}),
27
+ ...(flags["valid-to"] ? { validTo: flags["valid-to"] } : {}),
28
+ }));
29
+ }
30
+ }
31
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/authz/membership/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,GAAG,6BAA6B,CAAC;IAC/C,MAAM,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACnD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,kCAAkC;SAC5C,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC3D,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QACzD,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC5C,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,YAAY,EACjB;YACE,cAAc,EAAE,KAAK,CAAC,WAEN;YAChB,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ;YAChC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CACF,CACF,CAAC;IACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzRelationshipGrant extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static flags: {
5
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ "subject-type": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ "subject-key": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ relation: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ resource: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
+ "resource-id": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
+ operation: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
12
+ source: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ "valid-from": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ "valid-to": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ };
18
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
19
+ }
20
+ //# sourceMappingURL=grant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/grant.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,kBAAkB;IACpE,MAAM,CAAC,OAAO,SAAsB;IACpC,MAAM,CAAC,KAAK;;;;;;;;;;;;;MAgBV;IAEI,GAAG;CAkBV"}
@@ -0,0 +1,40 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId } from "../../../native-authz.js";
4
+ export default class AuthzRelationshipGrant extends OpenXiangdaCommand {
5
+ static summary = "创建 Native 资源关系授权";
6
+ static flags = {
7
+ ...workspaceFlags,
8
+ environment: requiredRemoteEnvironmentFlag,
9
+ "subject-type": Flags.string({
10
+ required: true,
11
+ options: ["user", "role_membership"],
12
+ }),
13
+ "subject-key": Flags.string({ required: true }),
14
+ relation: Flags.string({ required: true }),
15
+ resource: Flags.string({ required: true }),
16
+ "resource-id": Flags.string({ required: true }),
17
+ operation: Flags.string({ multiple: true, default: ["*"] }),
18
+ source: Flags.string({ default: "manual" }),
19
+ "valid-from": Flags.string(),
20
+ "valid-to": Flags.string(),
21
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
22
+ };
23
+ async run() {
24
+ const { flags } = await this.parse(AuthzRelationshipGrant);
25
+ return this.present(await this.services.createNativeRelationshipGrant(flags.cwd, {
26
+ environmentKey: flags.environment,
27
+ operationId: mutationOperationId(flags["operation-id"]),
28
+ subjectType: flags["subject-type"],
29
+ subjectKey: flags["subject-key"],
30
+ relationCode: flags.relation,
31
+ resourceCode: flags.resource,
32
+ resourceId: flags["resource-id"],
33
+ operations: flags.operation,
34
+ sourceCode: flags.source,
35
+ ...(flags["valid-from"] ? { validFrom: flags["valid-from"] } : {}),
36
+ ...(flags["valid-to"] ? { validTo: flags["valid-to"] } : {}),
37
+ }));
38
+ }
39
+ }
40
+ //# sourceMappingURL=grant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grant.js","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/grant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,kBAAkB;IACpE,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC;IACpC,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC;SACrC,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/C,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC3C,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE;QAC1B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3D,cAAc,EAAE,KAAK,CAAC,WAA6C;YACnE,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,WAAW,EAAE,KAAK,CAAC,cAAc,CAA+B;YAChE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,YAAY,EAAE,KAAK,CAAC,QAAQ;YAC5B,YAAY,EAAE,KAAK,CAAC,QAAQ;YAC5B,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;YAChC,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CACH,CAAC;IACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzRelationshipList extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static flags: {
5
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ "subject-type": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ "subject-key": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ relation: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ resource: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ "resource-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ status: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
13
+ offset: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
17
+ }
18
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/list.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,SAAwB;IACtC,MAAM,CAAC,KAAK;;;;;;;;;;;MAWV;IAEI,GAAG;CAiCV"}
@@ -0,0 +1,43 @@
1
+ import { Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ export default class AuthzRelationshipList extends OpenXiangdaCommand {
4
+ static summary = "分页查询 Native 资源关系授权";
5
+ static flags = {
6
+ ...workspaceFlags,
7
+ environment: requiredRemoteEnvironmentFlag,
8
+ "subject-type": Flags.string({ options: ["user", "role_membership"] }),
9
+ "subject-key": Flags.string(),
10
+ relation: Flags.string(),
11
+ resource: Flags.string(),
12
+ "resource-id": Flags.string(),
13
+ status: Flags.string({ options: ["active", "revoked", "expired"] }),
14
+ limit: Flags.integer({ min: 1, max: 100, default: 50 }),
15
+ offset: Flags.integer({ min: 0, default: 0 }),
16
+ };
17
+ async run() {
18
+ const { flags } = await this.parse(AuthzRelationshipList);
19
+ return this.present(await this.services.nativeRelationshipGrants(flags.cwd, flags.environment, {
20
+ ...(flags["subject-type"]
21
+ ? {
22
+ subjectType: flags["subject-type"],
23
+ }
24
+ : {}),
25
+ ...(flags["subject-key"]
26
+ ? { subjectKey: flags["subject-key"] }
27
+ : {}),
28
+ ...(flags.relation ? { relationCode: flags.relation } : {}),
29
+ ...(flags.resource ? { resourceCode: flags.resource } : {}),
30
+ ...(flags["resource-id"]
31
+ ? { resourceId: flags["resource-id"] }
32
+ : {}),
33
+ ...(flags.status
34
+ ? {
35
+ status: flags.status,
36
+ }
37
+ : {}),
38
+ limit: flags.limit,
39
+ offset: flags.offset,
40
+ }));
41
+ }
42
+ }
43
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;IACnE,MAAM,CAAC,OAAO,GAAG,oBAAoB,CAAC;IACtC,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACtE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE;QAC7B,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE;QACxB,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE;QACxB,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QACnE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACvD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KAC9C,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAC1C,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,WAAW,EACjB;YACE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;gBACvB,CAAC,CAAC;oBACE,WAAW,EAAE,KAAK,CAAC,cAAc,CAEZ;iBACtB;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;gBACtB,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;gBACtB,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;gBACtC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC;oBACE,MAAM,EAAE,KAAK,CAAC,MAA0C;iBACzD;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CACF,CACF,CAAC;IACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzRelationshipRevoke extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static args: {
5
+ grantId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ revision: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
10
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
14
+ }
15
+ //# sourceMappingURL=revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/revoke.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,kBAAkB;IACrE,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,IAAI;;MAAgD;IAC3D,MAAM,CAAC,KAAK;;;;;MAKV;IAEI,GAAG;CAgBV"}
@@ -0,0 +1,22 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId } from "../../../native-authz.js";
4
+ export default class AuthzRelationshipRevoke extends OpenXiangdaCommand {
5
+ static summary = "CAS 撤销 Native 资源关系授权";
6
+ static args = { grantId: Args.string({ required: true }) };
7
+ static flags = {
8
+ ...workspaceFlags,
9
+ environment: requiredRemoteEnvironmentFlag,
10
+ revision: Flags.integer({ required: true, min: 1 }),
11
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
12
+ };
13
+ async run() {
14
+ const { args, flags } = await this.parse(AuthzRelationshipRevoke);
15
+ return this.present(await this.services.revokeNativeRelationshipGrant(flags.cwd, args.grantId, {
16
+ environmentKey: flags.environment,
17
+ operationId: mutationOperationId(flags["operation-id"]),
18
+ expectedRevision: flags.revision,
19
+ }));
20
+ }
21
+ }
22
+ //# sourceMappingURL=revoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,kBAAkB;IACrE,MAAM,CAAC,OAAO,GAAG,sBAAsB,CAAC;IACxC,MAAM,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3D,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACnD,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAC/C,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,OAAO,EACZ;YACE,cAAc,EAAE,KAAK,CAAC,WAEN;YAChB,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ;SACjC,CACF,CACF,CAAC;IACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { OpenXiangdaCommand } from "../../../base.js";
2
+ export default class AuthzRelationshipUpdate extends OpenXiangdaCommand {
3
+ static summary: string;
4
+ static args: {
5
+ grantId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ revision: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
10
+ operation: import("@oclif/core/interfaces").OptionFlag<string[], import("@oclif/core/interfaces").CustomOptions>;
11
+ "valid-from": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ "valid-to": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ "operation-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ cwd: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ };
16
+ run(): Promise<import("openxiangda-contracts").DevkitResult<unknown>>;
17
+ }
18
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/update.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,kBAAkB;IACrE,MAAM,CAAC,OAAO,SAA0B;IACxC,MAAM,CAAC,IAAI;;MAAgD;IAC3D,MAAM,CAAC,KAAK;;;;;;;;MAQV;IAEI,GAAG;CAmBV"}
@@ -0,0 +1,28 @@
1
+ import { Args, Flags } from "@oclif/core";
2
+ import { OpenXiangdaCommand, requiredRemoteEnvironmentFlag, workspaceFlags, } from "../../../base.js";
3
+ import { mutationOperationId } from "../../../native-authz.js";
4
+ export default class AuthzRelationshipUpdate extends OpenXiangdaCommand {
5
+ static summary = "CAS 更新 Native 资源关系授权";
6
+ static args = { grantId: Args.string({ required: true }) };
7
+ static flags = {
8
+ ...workspaceFlags,
9
+ environment: requiredRemoteEnvironmentFlag,
10
+ revision: Flags.integer({ required: true, min: 1 }),
11
+ operation: Flags.string({ multiple: true, default: ["*"] }),
12
+ "valid-from": Flags.string(),
13
+ "valid-to": Flags.string(),
14
+ "operation-id": Flags.string({ summary: "可选 UUID 幂等操作 ID" }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(AuthzRelationshipUpdate);
18
+ return this.present(await this.services.updateNativeRelationshipGrant(flags.cwd, args.grantId, {
19
+ environmentKey: flags.environment,
20
+ operationId: mutationOperationId(flags["operation-id"]),
21
+ expectedRevision: flags.revision,
22
+ operations: flags.operation,
23
+ ...(flags["valid-from"] ? { validFrom: flags["valid-from"] } : {}),
24
+ ...(flags["valid-to"] ? { validTo: flags["valid-to"] } : {}),
25
+ }));
26
+ }
27
+ }
28
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/authz/relationship/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,kBAAkB;IACrE,MAAM,CAAC,OAAO,GAAG,sBAAsB,CAAC;IACxC,MAAM,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3D,MAAM,CAAC,KAAK,GAAG;QACb,GAAG,cAAc;QACjB,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE;QAC1B,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC7D,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAC/C,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,OAAO,EACZ;YACE,cAAc,EAAE,KAAK,CAAC,WAEN;YAChB,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACvD,gBAAgB,EAAE,KAAK,CAAC,QAAQ;YAChC,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CACF,CACF,CAAC;IACJ,CAAC"}