@webiny/api-core 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.dbdf5d6258

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 (160) hide show
  1. package/ApiCoreFeature.js +2 -0
  2. package/ApiCoreFeature.js.map +1 -1
  3. package/features/featureFlags/FeatureFlags.d.ts +12 -0
  4. package/features/featureFlags/FeatureFlags.js +18 -0
  5. package/features/featureFlags/FeatureFlags.js.map +1 -0
  6. package/features/featureFlags/abstractions.d.ts +8 -0
  7. package/features/featureFlags/abstractions.js +4 -0
  8. package/features/featureFlags/abstractions.js.map +1 -0
  9. package/features/featureFlags/feature.d.ts +1 -0
  10. package/features/featureFlags/feature.js +10 -0
  11. package/features/featureFlags/feature.js.map +1 -0
  12. package/features/security/IdentityContext/IdentityContext.js +1 -1
  13. package/features/security/IdentityContext/IdentityContext.js.map +1 -1
  14. package/features/security/permissions/createPermissions.d.ts +8 -0
  15. package/features/security/permissions/createPermissions.js +221 -0
  16. package/features/security/permissions/createPermissions.js.map +1 -0
  17. package/features/security/permissions/index.d.ts +2 -0
  18. package/features/security/permissions/index.js +3 -0
  19. package/features/security/permissions/index.js.map +1 -0
  20. package/features/security/permissions/types.d.ts +134 -0
  21. package/features/security/permissions/types.js +3 -0
  22. package/features/security/permissions/types.js.map +1 -0
  23. package/features/task/TaskDefinition/abstractions.d.ts +2 -2
  24. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  25. package/features/wcp/WcpContext/WcpContext.d.ts +1 -0
  26. package/features/wcp/WcpContext/WcpContext.js +3 -0
  27. package/features/wcp/WcpContext/WcpContext.js.map +1 -1
  28. package/features/wcp/WcpContext/abstractions.d.ts +1 -0
  29. package/features/wcp/WcpContext/abstractions.js.map +1 -1
  30. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.d.ts +77 -0
  31. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +117 -0
  32. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -0
  33. package/features/wcp/WcpFeature.js +2 -0
  34. package/features/wcp/WcpFeature.js.map +1 -1
  35. package/graphql/wcp/graphql.js +1 -1
  36. package/graphql/wcp/graphql.js.map +1 -1
  37. package/legacy/wcp/LegacyWcpContext.d.ts +1 -0
  38. package/legacy/wcp/LegacyWcpContext.js +3 -0
  39. package/legacy/wcp/LegacyWcpContext.js.map +1 -1
  40. package/models/cms/FieldBuilder.d.ts +1 -1
  41. package/models/cms/FieldBuilder.js +5 -5
  42. package/models/cms/FieldBuilder.js.map +1 -1
  43. package/models/cms/fieldsBuilder.md +2 -2
  44. package/models/cms/types.d.ts +2 -2
  45. package/models/cms/types.js.map +1 -1
  46. package/package.json +19 -20
  47. package/extensions/BuildParam.d.ts +0 -11
  48. package/extensions/BuildParam.js +0 -119
  49. package/extensions/BuildParam.js.map +0 -1
  50. package/extensions/GenericExtension.d.ts +0 -10
  51. package/extensions/GenericExtension.js +0 -7
  52. package/extensions/GenericExtension.js.map +0 -1
  53. package/extensions/eventHandlers/AfterAuthentication.d.ts +0 -10
  54. package/extensions/eventHandlers/AfterAuthentication.js +0 -9
  55. package/extensions/eventHandlers/AfterAuthentication.js.map +0 -1
  56. package/extensions/eventHandlers/ApiKeyAfterCreate.d.ts +0 -10
  57. package/extensions/eventHandlers/ApiKeyAfterCreate.js +0 -9
  58. package/extensions/eventHandlers/ApiKeyAfterCreate.js.map +0 -1
  59. package/extensions/eventHandlers/ApiKeyAfterDelete.d.ts +0 -10
  60. package/extensions/eventHandlers/ApiKeyAfterDelete.js +0 -9
  61. package/extensions/eventHandlers/ApiKeyAfterDelete.js.map +0 -1
  62. package/extensions/eventHandlers/ApiKeyAfterUpdate.d.ts +0 -10
  63. package/extensions/eventHandlers/ApiKeyAfterUpdate.js +0 -9
  64. package/extensions/eventHandlers/ApiKeyAfterUpdate.js.map +0 -1
  65. package/extensions/eventHandlers/ApiKeyBeforeCreate.d.ts +0 -10
  66. package/extensions/eventHandlers/ApiKeyBeforeCreate.js +0 -9
  67. package/extensions/eventHandlers/ApiKeyBeforeCreate.js.map +0 -1
  68. package/extensions/eventHandlers/ApiKeyBeforeDelete.d.ts +0 -10
  69. package/extensions/eventHandlers/ApiKeyBeforeDelete.js +0 -9
  70. package/extensions/eventHandlers/ApiKeyBeforeDelete.js.map +0 -1
  71. package/extensions/eventHandlers/ApiKeyBeforeUpdate.d.ts +0 -10
  72. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js +0 -9
  73. package/extensions/eventHandlers/ApiKeyBeforeUpdate.js.map +0 -1
  74. package/extensions/eventHandlers/BeforeAuthentication.d.ts +0 -10
  75. package/extensions/eventHandlers/BeforeAuthentication.js +0 -9
  76. package/extensions/eventHandlers/BeforeAuthentication.js.map +0 -1
  77. package/extensions/eventHandlers/RoleAfterCreate.d.ts +0 -10
  78. package/extensions/eventHandlers/RoleAfterCreate.js +0 -9
  79. package/extensions/eventHandlers/RoleAfterCreate.js.map +0 -1
  80. package/extensions/eventHandlers/RoleAfterDelete.d.ts +0 -10
  81. package/extensions/eventHandlers/RoleAfterDelete.js +0 -9
  82. package/extensions/eventHandlers/RoleAfterDelete.js.map +0 -1
  83. package/extensions/eventHandlers/RoleAfterUpdate.d.ts +0 -10
  84. package/extensions/eventHandlers/RoleAfterUpdate.js +0 -9
  85. package/extensions/eventHandlers/RoleAfterUpdate.js.map +0 -1
  86. package/extensions/eventHandlers/RoleBeforeCreate.d.ts +0 -10
  87. package/extensions/eventHandlers/RoleBeforeCreate.js +0 -9
  88. package/extensions/eventHandlers/RoleBeforeCreate.js.map +0 -1
  89. package/extensions/eventHandlers/RoleBeforeDelete.d.ts +0 -10
  90. package/extensions/eventHandlers/RoleBeforeDelete.js +0 -9
  91. package/extensions/eventHandlers/RoleBeforeDelete.js.map +0 -1
  92. package/extensions/eventHandlers/RoleBeforeUpdate.d.ts +0 -10
  93. package/extensions/eventHandlers/RoleBeforeUpdate.js +0 -9
  94. package/extensions/eventHandlers/RoleBeforeUpdate.js.map +0 -1
  95. package/extensions/eventHandlers/SystemInstalled.d.ts +0 -10
  96. package/extensions/eventHandlers/SystemInstalled.js +0 -9
  97. package/extensions/eventHandlers/SystemInstalled.js.map +0 -1
  98. package/extensions/eventHandlers/TeamAfterCreate.d.ts +0 -10
  99. package/extensions/eventHandlers/TeamAfterCreate.js +0 -9
  100. package/extensions/eventHandlers/TeamAfterCreate.js.map +0 -1
  101. package/extensions/eventHandlers/TeamAfterDelete.d.ts +0 -10
  102. package/extensions/eventHandlers/TeamAfterDelete.js +0 -9
  103. package/extensions/eventHandlers/TeamAfterDelete.js.map +0 -1
  104. package/extensions/eventHandlers/TeamAfterUpdate.d.ts +0 -10
  105. package/extensions/eventHandlers/TeamAfterUpdate.js +0 -9
  106. package/extensions/eventHandlers/TeamAfterUpdate.js.map +0 -1
  107. package/extensions/eventHandlers/TeamBeforeCreate.d.ts +0 -10
  108. package/extensions/eventHandlers/TeamBeforeCreate.js +0 -9
  109. package/extensions/eventHandlers/TeamBeforeCreate.js.map +0 -1
  110. package/extensions/eventHandlers/TeamBeforeDelete.d.ts +0 -10
  111. package/extensions/eventHandlers/TeamBeforeDelete.js +0 -9
  112. package/extensions/eventHandlers/TeamBeforeDelete.js.map +0 -1
  113. package/extensions/eventHandlers/TeamBeforeUpdate.d.ts +0 -10
  114. package/extensions/eventHandlers/TeamBeforeUpdate.js +0 -9
  115. package/extensions/eventHandlers/TeamBeforeUpdate.js.map +0 -1
  116. package/extensions/eventHandlers/TenantAfterCreate.d.ts +0 -10
  117. package/extensions/eventHandlers/TenantAfterCreate.js +0 -9
  118. package/extensions/eventHandlers/TenantAfterCreate.js.map +0 -1
  119. package/extensions/eventHandlers/TenantAfterDelete.d.ts +0 -10
  120. package/extensions/eventHandlers/TenantAfterDelete.js +0 -9
  121. package/extensions/eventHandlers/TenantAfterDelete.js.map +0 -1
  122. package/extensions/eventHandlers/TenantAfterUpdate.d.ts +0 -10
  123. package/extensions/eventHandlers/TenantAfterUpdate.js +0 -9
  124. package/extensions/eventHandlers/TenantAfterUpdate.js.map +0 -1
  125. package/extensions/eventHandlers/TenantBeforeCreate.d.ts +0 -10
  126. package/extensions/eventHandlers/TenantBeforeCreate.js +0 -9
  127. package/extensions/eventHandlers/TenantBeforeCreate.js.map +0 -1
  128. package/extensions/eventHandlers/TenantBeforeDelete.d.ts +0 -10
  129. package/extensions/eventHandlers/TenantBeforeDelete.js +0 -9
  130. package/extensions/eventHandlers/TenantBeforeDelete.js.map +0 -1
  131. package/extensions/eventHandlers/TenantBeforeUpdate.d.ts +0 -10
  132. package/extensions/eventHandlers/TenantBeforeUpdate.js +0 -9
  133. package/extensions/eventHandlers/TenantBeforeUpdate.js.map +0 -1
  134. package/extensions/eventHandlers/TenantInstalled.d.ts +0 -10
  135. package/extensions/eventHandlers/TenantInstalled.js +0 -9
  136. package/extensions/eventHandlers/TenantInstalled.js.map +0 -1
  137. package/extensions/eventHandlers/UserAfterCreate.d.ts +0 -10
  138. package/extensions/eventHandlers/UserAfterCreate.js +0 -9
  139. package/extensions/eventHandlers/UserAfterCreate.js.map +0 -1
  140. package/extensions/eventHandlers/UserAfterDelete.d.ts +0 -10
  141. package/extensions/eventHandlers/UserAfterDelete.js +0 -9
  142. package/extensions/eventHandlers/UserAfterDelete.js.map +0 -1
  143. package/extensions/eventHandlers/UserAfterUpdate.d.ts +0 -10
  144. package/extensions/eventHandlers/UserAfterUpdate.js +0 -9
  145. package/extensions/eventHandlers/UserAfterUpdate.js.map +0 -1
  146. package/extensions/eventHandlers/UserBeforeCreate.d.ts +0 -10
  147. package/extensions/eventHandlers/UserBeforeCreate.js +0 -9
  148. package/extensions/eventHandlers/UserBeforeCreate.js.map +0 -1
  149. package/extensions/eventHandlers/UserBeforeDelete.d.ts +0 -10
  150. package/extensions/eventHandlers/UserBeforeDelete.js +0 -9
  151. package/extensions/eventHandlers/UserBeforeDelete.js.map +0 -1
  152. package/extensions/eventHandlers/UserBeforeUpdate.d.ts +0 -10
  153. package/extensions/eventHandlers/UserBeforeUpdate.js +0 -9
  154. package/extensions/eventHandlers/UserBeforeUpdate.js.map +0 -1
  155. package/extensions/eventHandlers/index.d.ts +0 -34
  156. package/extensions/eventHandlers/index.js +0 -49
  157. package/extensions/eventHandlers/index.js.map +0 -1
  158. package/extensions/index.d.ts +0 -58
  159. package/extensions/index.js +0 -49
  160. package/extensions/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","TaskResultStatus","TaskDefinition"],"sources":["abstractions.ts"],"sourcesContent":["import zod from \"zod\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport type { ITask } from \"~/features/task/TaskService/index.js\";\nimport { TaskController } from \"~/features/task/TaskController/index.js\";\n\nexport type ITaskInput = GenericRecord;\n\nexport interface IResponseError {\n message: string;\n code?: string | null;\n data?: GenericRecord | null;\n stack?: string;\n}\n\nexport interface ITaskOutput {\n error?: IResponseError;\n [key: string]: any;\n}\n\n/**\n * Task run params - ONLY the input data\n * All runtime dependencies come from TaskController (injected separately)\n */\nexport interface ITaskRunParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> {\n input: I;\n controller: TaskController.Interface<I, O>;\n}\n\n/**\n * Data for creating a new task\n */\nexport interface ITaskCreateData<I = ITaskInput> {\n definitionId: string;\n name: string;\n input: I;\n parentId?: string;\n}\n\n/**\n * Parameters for onBeforeTrigger lifecycle hook\n */\nexport interface ITaskBeforeTriggerParams<I = ITaskInput> {\n data: ITaskCreateData<I>;\n}\n\n/**\n * Task result status enum\n */\nexport enum TaskResultStatus {\n DONE = \"done\",\n CONTINUE = \"continue\",\n ERROR = \"error\",\n ABORTED = \"aborted\"\n}\n\n/**\n * Specific result types\n */\nexport interface ITaskResultDone<O extends ITaskOutput = ITaskOutput> {\n status: TaskResultStatus.DONE;\n message?: string;\n output?: O;\n}\n\nexport interface ITaskResultContinue<I = ITaskInput> {\n status: TaskResultStatus.CONTINUE;\n input: I;\n wait?: number; // seconds to wait before next iteration\n}\n\nexport interface ITaskResultError {\n status: TaskResultStatus.ERROR;\n error: IResponseError;\n}\n\nexport interface ITaskResultAborted {\n status: TaskResultStatus.ABORTED;\n}\n\nexport type ITaskResult<I = ITaskInput, O extends ITaskOutput = ITaskOutput> =\n | ITaskResultDone<O>\n | ITaskResultContinue<I>\n | ITaskResultError\n | ITaskResultAborted;\n\nexport type ITaskLifecycleHook<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> = { task: ITask<I, O> };\n\n/**\n * Core TaskDefinition - minimal interface\n */\nexport interface ITaskDefinition<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> {\n id: string;\n title: string;\n description?: string;\n maxIterations?: number;\n disableDatabaseLogs?: boolean;\n isPrivate?: boolean;\n\n /**\n * Core run method - receives ONLY input params\n * All runtime dependencies (logging, state management, etc.) come from TaskController\n */\n run(params: ITaskRunParams<I, O>): Promise<ITaskResult<I, O>>;\n\n /**\n * Optional lifecycle hooks - receive task data, no context\n */\n onBeforeTrigger?(params: ITaskBeforeTriggerParams<I>): Promise<void>;\n onDone?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onError?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onAbort?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onMaxIterations?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n /**\n * Create a validation schema for the task input.\n * This will be used to validate the input before the task is triggered.\n */\n createInputValidation?(\n params: ITaskCreateInputValidationParams\n ): GenericRecord<keyof I, zod.Schema> | zod.Schema;\n}\n\nexport interface ITaskCreateInputValidationParams {\n validator: typeof zod;\n}\n\nexport const TaskDefinition = createAbstraction<ITaskDefinition>(\"TaskDefinition\");\n\n/**\n * IRunnableTaskDefinition represents a TaskDefinition after decoration/processing.\n * All optional runtime properties are guaranteed to have values (with defaults applied).\n * Used internally by the task runner to ensure consistent behavior.\n */\nexport interface IRunnableTaskDefinition<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> extends ITaskDefinition<I, O> {\n // Override optional properties to be required with guaranteed values\n isPrivate: boolean;\n disableDatabaseLogs: boolean;\n maxIterations: number;\n}\n\nexport namespace TaskDefinition {\n export type Interface<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskDefinition<I, O>;\n\n export type TaskInput = ITaskInput;\n\n export type TaskOutput = ITaskOutput;\n\n export type Runnable<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = IRunnableTaskDefinition<I, O>;\n\n export type RunParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskRunParams<I, O>;\n\n export type Result<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskResult<I, O>;\n\n export type Task<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITask<I, O>;\n\n export type ResultDone<O extends ITaskOutput = ITaskOutput> = ITaskResultDone<O>;\n export type ResultContinue<I = ITaskInput> = ITaskResultContinue<I>;\n export type ResultError = ITaskResultError;\n export type ResultAborted = ITaskResultAborted;\n export type CreateInputValidationParams = ITaskCreateInputValidationParams;\n export type TaskCreateData<I = ITaskInput> = ITaskCreateData<I>;\n export type BeforeTriggerParams<I = ITaskInput> = ITaskBeforeTriggerParams<I>;\n export type LifecycleHookParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskLifecycleHook<I, O>;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAmBvD;AACA;AACA;AACA;;AASA;AACA;AACA;;AAQA;AACA;AACA;;AAKA;AACA;AACA;AACA,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;;AAO5B;AACA;AACA;;AAiCA;AACA;AACA;;AAuCA,OAAO,MAAMC,cAAc,GAAGF,iBAAiB,CAAkB,gBAAgB,CAAC;;AAElF;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","TaskResultStatus","TaskDefinition"],"sources":["abstractions.ts"],"sourcesContent":["import zod from \"zod\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types\";\nimport type { ITask } from \"~/features/task/TaskService/index.js\";\nimport { TaskController } from \"~/features/task/TaskController/index.js\";\n\nexport type ITaskInput = GenericRecord;\n\nexport interface IResponseError {\n message: string;\n code?: string | null;\n data?: GenericRecord | null;\n stack?: string;\n}\n\nexport interface ITaskOutput {\n error?: IResponseError;\n [key: string]: any;\n}\n\n/**\n * Task run params - ONLY the input data\n * All runtime dependencies come from TaskController (injected separately)\n */\nexport interface ITaskRunParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> {\n input: I;\n controller: TaskController.Interface<I, O>;\n}\n\n/**\n * Data for creating a new task\n */\nexport interface ITaskCreateData<I = ITaskInput> {\n definitionId: string;\n name: string;\n input: I;\n parentId?: string;\n}\n\n/**\n * Parameters for onBeforeTrigger lifecycle hook\n */\nexport interface ITaskBeforeTriggerParams<I = ITaskInput> {\n data: ITaskCreateData<I>;\n}\n\n/**\n * Task result status enum\n */\nexport enum TaskResultStatus {\n DONE = \"done\",\n CONTINUE = \"continue\",\n ERROR = \"error\",\n ABORTED = \"aborted\"\n}\n\n/**\n * Specific result types\n */\nexport interface ITaskResultDone<O extends ITaskOutput = ITaskOutput> {\n status: TaskResultStatus.DONE;\n message?: string;\n output?: O;\n}\n\nexport interface ITaskResultContinue<I = ITaskInput> {\n status: TaskResultStatus.CONTINUE;\n input: I;\n wait?: number; // seconds to wait before next iteration\n}\n\nexport interface ITaskResultError {\n status: TaskResultStatus.ERROR;\n error: IResponseError;\n}\n\nexport interface ITaskResultAborted {\n status: TaskResultStatus.ABORTED;\n}\n\nexport type ITaskResult<I = ITaskInput, O extends ITaskOutput = ITaskOutput> =\n | ITaskResultDone<O>\n | ITaskResultContinue<I>\n | ITaskResultError\n | ITaskResultAborted;\n\nexport type ITaskLifecycleHook<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> = { task: ITask<I, O> };\n\n/**\n * Core TaskDefinition - minimal interface\n */\nexport interface ITaskDefinition<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> {\n id: string;\n title: string;\n description?: string;\n maxIterations?: number;\n databaseLogs?: boolean;\n isPrivate?: boolean;\n\n /**\n * Core run method - receives ONLY input params\n * All runtime dependencies (logging, state management, etc.) come from TaskController\n */\n run(params: ITaskRunParams<I, O>): Promise<ITaskResult<I, O>>;\n\n /**\n * Optional lifecycle hooks - receive task data, no context\n */\n onBeforeTrigger?(params: ITaskBeforeTriggerParams<I>): Promise<void>;\n onDone?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onError?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onAbort?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n onMaxIterations?(params: ITaskLifecycleHook<I, O>): Promise<void>;\n /**\n * Create a validation schema for the task input.\n * This will be used to validate the input before the task is triggered.\n */\n createInputValidation?(\n params: ITaskCreateInputValidationParams\n ): GenericRecord<keyof I, zod.Schema> | zod.Schema;\n}\n\nexport interface ITaskCreateInputValidationParams {\n validator: typeof zod;\n}\n\nexport const TaskDefinition = createAbstraction<ITaskDefinition>(\"TaskDefinition\");\n\n/**\n * IRunnableTaskDefinition represents a TaskDefinition after decoration/processing.\n * All optional runtime properties are guaranteed to have values (with defaults applied).\n * Used internally by the task runner to ensure consistent behavior.\n */\nexport interface IRunnableTaskDefinition<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n> extends ITaskDefinition<I, O> {\n // Override optional properties to be required with guaranteed values\n isPrivate: boolean;\n databaseLogs: boolean;\n maxIterations: number;\n}\n\nexport namespace TaskDefinition {\n export type Interface<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskDefinition<I, O>;\n\n export type TaskInput = ITaskInput;\n\n export type TaskOutput = ITaskOutput;\n\n export type Runnable<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = IRunnableTaskDefinition<I, O>;\n\n export type RunParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskRunParams<I, O>;\n\n export type Result<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskResult<I, O>;\n\n export type Task<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITask<I, O>;\n\n export type ResultDone<O extends ITaskOutput = ITaskOutput> = ITaskResultDone<O>;\n export type ResultContinue<I = ITaskInput> = ITaskResultContinue<I>;\n export type ResultError = ITaskResultError;\n export type ResultAborted = ITaskResultAborted;\n export type CreateInputValidationParams = ITaskCreateInputValidationParams;\n export type TaskCreateData<I = ITaskInput> = ITaskCreateData<I>;\n export type BeforeTriggerParams<I = ITaskInput> = ITaskBeforeTriggerParams<I>;\n export type LifecycleHookParams<\n I extends ITaskInput = ITaskInput,\n O extends ITaskOutput = ITaskOutput\n > = ITaskLifecycleHook<I, O>;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAmBvD;AACA;AACA;AACA;;AASA;AACA;AACA;;AAQA;AACA;AACA;;AAKA;AACA;AACA;AACA,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;;AAO5B;AACA;AACA;;AAiCA;AACA;AACA;;AAuCA,OAAO,MAAMC,cAAc,GAAGF,iBAAiB,CAAkB,gBAAgB,CAAC;;AAElF;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -12,6 +12,7 @@ export declare class WcpContextImpl implements WcpContext.Interface {
12
12
  private updateTenants;
13
13
  getRawLicense(): DecryptedWcpProjectLicense | null;
14
14
  getProject(): WcpProject | null;
15
+ getProjectWithFeatureFlags(): WcpProject | null;
15
16
  getProjectEnvironment(): WcpProjectEnvironment | null;
16
17
  getProjectLicense(): ILicense;
17
18
  canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean;
@@ -63,6 +63,9 @@ export class WcpContextImpl {
63
63
  getProject() {
64
64
  return this.license.getProject();
65
65
  }
66
+ getProjectWithFeatureFlags() {
67
+ return this.getProject();
68
+ }
66
69
  getProjectEnvironment() {
67
70
  return wcpProjectEnvironment;
68
71
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getWcpApiUrl","getWcpAppUrl","getWcpProjectEnvironment","WError","wcpFetch","wcpProjectEnvironment","WcpContextImpl","constructor","license","getWcpProjectUrl","path","orgId","org","id","projectId","project","url","filter","Boolean","join","updateSeats","operation","updateSeatsUrl","response","authorization","apiKey","body","meta","action","error","message","console","status","statusText","updateTenants","updateTenantsUrl","getRawLicense","getProject","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","upgradeProjectLicenseLink","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["WcpContext.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { getWcpApiUrl, getWcpAppUrl, getWcpProjectEnvironment } from \"@webiny/wcp\";\nimport WError from \"@webiny/error\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProjectEnvironment,\n WcpProject\n} from \"@webiny/wcp/types.js\";\nimport { WcpContext } from \"./abstractions.js\";\nimport { wcpFetch } from \"./utils.js\";\n\nconst wcpProjectEnvironment = getWcpProjectEnvironment();\n\nexport interface CreateWcpContextParams {\n testProjectLicense?: DecryptedWcpProjectLicense;\n}\n\nexport class WcpContextImpl implements WcpContext.Interface {\n constructor(private license: ILicense) {}\n\n private getWcpProjectUrl(path = \"\"): string | null {\n if (!wcpProjectEnvironment) {\n return null;\n }\n\n const orgId = wcpProjectEnvironment.org.id;\n const projectId = wcpProjectEnvironment.project.id;\n const url = [\"/orgs\", orgId, \"projects\", projectId, path].filter(Boolean).join(\"/\");\n return getWcpApiUrl(url);\n }\n\n private async updateSeats(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateSeatsUrl = this.getWcpProjectUrl(\"package/seats\");\n\n const response = await wcpFetch({\n url: updateSeatsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Seats\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} user seats.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n private async updateTenants(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateTenantsUrl = this.getWcpProjectUrl(\"package/tenants\");\n\n const response = await wcpFetch({\n url: updateTenantsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Tenants\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} tenants.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.license.getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.license.getProject();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return wcpProjectEnvironment;\n }\n\n getProjectLicense(): ILicense {\n return this.license;\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.license.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.license.canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.license.canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.license.canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.license.canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.license.canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.license.canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.license.canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.license.canUseWorkflows();\n }\n\n ensureCanUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): void {\n if (this.license.canUseFeature(wcpFeatureId)) {\n return;\n }\n\n let message = `The ${wcpFeatureId} Webiny Control Panel feature cannot be used because your project license does not permit it.`;\n if (wcpProjectEnvironment) {\n const { org, project } = wcpProjectEnvironment;\n const upgradeProjectLicenseLink = getWcpAppUrl(`/${org.id}/${project.id}/settings`);\n message += ` To upgrade your project license, please use the following link: ${upgradeProjectLicenseLink}.`;\n }\n\n throw new WError(message, \"WCP_CANNOT_USE_FEATURE\", { wcpFeatureId });\n }\n\n async incrementSeats(): Promise<void> {\n await this.updateSeats(\"increment\");\n }\n\n async decrementSeats(): Promise<void> {\n await this.updateSeats(\"decrement\");\n }\n\n async incrementTenants(): Promise<void> {\n await this.updateTenants(\"increment\");\n }\n\n async decrementTenants(): Promise<void> {\n await this.updateTenants(\"decrement\");\n }\n\n toDto() {\n return this.getRawLicense();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getWcpApiUrl","getWcpAppUrl","getWcpProjectEnvironment","WError","wcpFetch","wcpProjectEnvironment","WcpContextImpl","constructor","license","getWcpProjectUrl","path","orgId","org","id","projectId","project","url","filter","Boolean","join","updateSeats","operation","updateSeatsUrl","response","authorization","apiKey","body","meta","action","error","message","console","status","statusText","updateTenants","updateTenantsUrl","getRawLicense","getProject","getProjectWithFeatureFlags","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","upgradeProjectLicenseLink","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["WcpContext.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { getWcpApiUrl, getWcpAppUrl, getWcpProjectEnvironment } from \"@webiny/wcp\";\nimport WError from \"@webiny/error\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProjectEnvironment,\n WcpProject\n} from \"@webiny/wcp/types.js\";\nimport { WcpContext } from \"./abstractions.js\";\nimport { wcpFetch } from \"./utils.js\";\n\nconst wcpProjectEnvironment = getWcpProjectEnvironment();\n\nexport interface CreateWcpContextParams {\n testProjectLicense?: DecryptedWcpProjectLicense;\n}\n\nexport class WcpContextImpl implements WcpContext.Interface {\n constructor(private license: ILicense) {}\n\n private getWcpProjectUrl(path = \"\"): string | null {\n if (!wcpProjectEnvironment) {\n return null;\n }\n\n const orgId = wcpProjectEnvironment.org.id;\n const projectId = wcpProjectEnvironment.project.id;\n const url = [\"/orgs\", orgId, \"projects\", projectId, path].filter(Boolean).join(\"/\");\n return getWcpApiUrl(url);\n }\n\n private async updateSeats(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateSeatsUrl = this.getWcpProjectUrl(\"package/seats\");\n\n const response = await wcpFetch({\n url: updateSeatsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Seats\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} user seats.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n private async updateTenants(operation: \"increment\" | \"decrement\"): Promise<void> {\n if (!wcpProjectEnvironment) {\n return;\n }\n\n const updateTenantsUrl = this.getWcpProjectUrl(\"package/tenants\");\n\n const response = await wcpFetch({\n url: updateTenantsUrl!,\n authorization: wcpProjectEnvironment.apiKey,\n body: { operation },\n meta: {\n action: operation + \"Tenants\"\n }\n });\n\n if (response.error) {\n const message = response.message || `Failed to ${operation} tenants.`;\n console.error(message, response.status, response.statusText);\n throw new WError(message, \"WCP_CANNOT_UPDATE_USER_TENANTS\");\n }\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.license.getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.license.getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n return this.getProject();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return wcpProjectEnvironment;\n }\n\n getProjectLicense(): ILicense {\n return this.license;\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.license.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.license.canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.license.canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.license.canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.license.canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.license.canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.license.canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.license.canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.license.canUseWorkflows();\n }\n\n ensureCanUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): void {\n if (this.license.canUseFeature(wcpFeatureId)) {\n return;\n }\n\n let message = `The ${wcpFeatureId} Webiny Control Panel feature cannot be used because your project license does not permit it.`;\n if (wcpProjectEnvironment) {\n const { org, project } = wcpProjectEnvironment;\n const upgradeProjectLicenseLink = getWcpAppUrl(`/${org.id}/${project.id}/settings`);\n message += ` To upgrade your project license, please use the following link: ${upgradeProjectLicenseLink}.`;\n }\n\n throw new WError(message, \"WCP_CANNOT_USE_FEATURE\", { wcpFeatureId });\n }\n\n async incrementSeats(): Promise<void> {\n await this.updateSeats(\"increment\");\n }\n\n async decrementSeats(): Promise<void> {\n await this.updateSeats(\"decrement\");\n }\n\n async incrementTenants(): Promise<void> {\n await this.updateTenants(\"increment\");\n }\n\n async decrementTenants(): Promise<void> {\n await this.updateTenants(\"decrement\");\n }\n\n toDto() {\n return this.getRawLicense();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ import type { WCP_FEATURE_LABEL } from "@webiny/wcp";
5
5
  */
6
6
  export interface IWcpContext extends ILicense {
7
7
  getProject(): WcpProject | null;
8
+ getProjectWithFeatureFlags(): WcpProject | null;
8
9
  getProjectLicense(): ILicense;
9
10
  getProjectEnvironment(): WcpProjectEnvironment | null;
10
11
  ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","WcpContext"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ILicense, WcpProject, WcpProjectEnvironment } from \"@webiny/wcp/types.js\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\n\n/**\n * WcpContext Abstraction\n */\nexport interface IWcpContext extends ILicense {\n getProject(): WcpProject | null;\n getProjectLicense(): ILicense;\n getProjectEnvironment(): WcpProjectEnvironment | null;\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;\n incrementSeats(): Promise<void>;\n decrementSeats(): Promise<void>;\n incrementTenants(): Promise<void>;\n decrementTenants(): Promise<void>;\n}\n\nexport const WcpContext = createAbstraction<IWcpContext>(\"WcpContext\");\n\nexport namespace WcpContext {\n export type Interface = IWcpContext;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAIvD;AACA;AACA;;AAYA,OAAO,MAAMC,UAAU,GAAGD,iBAAiB,CAAc,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","WcpContext"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { ILicense, WcpProject, WcpProjectEnvironment } from \"@webiny/wcp/types.js\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\n\n/**\n * WcpContext Abstraction\n */\nexport interface IWcpContext extends ILicense {\n getProject(): WcpProject | null;\n getProjectWithFeatureFlags(): WcpProject | null;\n getProjectLicense(): ILicense;\n getProjectEnvironment(): WcpProjectEnvironment | null;\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;\n incrementSeats(): Promise<void>;\n decrementSeats(): Promise<void>;\n incrementTenants(): Promise<void>;\n decrementTenants(): Promise<void>;\n}\n\nexport const WcpContext = createAbstraction<IWcpContext>(\"WcpContext\");\n\nexport namespace WcpContext {\n export type Interface = IWcpContext;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAIvD;AACA;AACA;;AAaA,OAAO,MAAMC,UAAU,GAAGD,iBAAiB,CAAc,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ import type { WCP_FEATURE_LABEL } from "@webiny/wcp";
2
+ import { WcpContext } from "../abstractions.js";
3
+ import { FeatureFlags } from "../../../featureFlags/abstractions.js";
4
+ declare class WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {
5
+ private featureFlags;
6
+ private decoratee;
7
+ constructor(featureFlags: FeatureFlags.Interface, decoratee: WcpContext.Interface);
8
+ getRawLicense(): import("@webiny/wcp/types.js").DecryptedWcpProjectLicense | null;
9
+ getProject(): import("@webiny/wcp/types.js").WcpProject | null;
10
+ getProjectWithFeatureFlags(): {
11
+ package: {
12
+ features: {
13
+ multiTenancy: {
14
+ enabled: true;
15
+ options: {
16
+ maxCount: {
17
+ type: import("@webiny/wcp/types.js").MT_OPTIONS_MAX_COUNT_TYPE;
18
+ count?: number;
19
+ };
20
+ };
21
+ };
22
+ advancedPublishingWorkflow: {
23
+ enabled: boolean;
24
+ };
25
+ advancedAccessControlLayer: {
26
+ enabled: boolean;
27
+ options: {
28
+ teams: boolean;
29
+ privateFiles: boolean;
30
+ folderLevelPermissions: boolean;
31
+ };
32
+ };
33
+ auditLogs: {
34
+ enabled: boolean;
35
+ };
36
+ recordLocking: {
37
+ enabled: boolean;
38
+ };
39
+ fileManager: {
40
+ enabled: boolean;
41
+ options: {
42
+ threatDetection: boolean;
43
+ };
44
+ };
45
+ seats: {
46
+ enabled: true;
47
+ options: {
48
+ maxCount: number;
49
+ };
50
+ };
51
+ };
52
+ };
53
+ orgId: string;
54
+ projectId: string;
55
+ } | null;
56
+ getProjectEnvironment(): import("@webiny/wcp/types.js").WcpProjectEnvironment | null;
57
+ getProjectLicense(): import("@webiny/wcp/types.js").ILicense;
58
+ canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean;
59
+ canUseAacl(): boolean;
60
+ canUseTeams(): boolean;
61
+ canUseFolderLevelPermissions(): boolean;
62
+ canUsePrivateFiles(): boolean;
63
+ canUseAuditLogs(): boolean;
64
+ canUseRecordLocking(): boolean;
65
+ canUseFileManagerThreatDetection(): boolean;
66
+ canUseWorkflows(): boolean;
67
+ ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void;
68
+ incrementSeats(): Promise<void>;
69
+ decrementSeats(): Promise<void>;
70
+ incrementTenants(): Promise<void>;
71
+ decrementTenants(): Promise<void>;
72
+ toDto(): import("@webiny/wcp/types.js").DecryptedWcpProjectLicense | null;
73
+ }
74
+ export declare const WcpContextWithFeatureFlagsDecorator: typeof WcpContextWithFeatureFlagsDecoratorImpl & {
75
+ __abstraction: import("@webiny/di").Abstraction<import("../abstractions.js").IWcpContext>;
76
+ };
77
+ export {};
@@ -0,0 +1,117 @@
1
+ import { WcpContext } from "../abstractions.js";
2
+ import { FeatureFlags } from "../../../featureFlags/abstractions.js";
3
+ class WcpContextWithFeatureFlagsDecoratorImpl {
4
+ constructor(featureFlags, decoratee) {
5
+ this.featureFlags = featureFlags;
6
+ this.decoratee = decoratee;
7
+ }
8
+ getRawLicense() {
9
+ return this.decoratee.getRawLicense();
10
+ }
11
+ getProject() {
12
+ return this.decoratee.getProject();
13
+ }
14
+ getProjectWithFeatureFlags() {
15
+ const project = this.decoratee.getProjectWithFeatureFlags();
16
+ if (!project) {
17
+ return null;
18
+ }
19
+ const flags = this.featureFlags.get();
20
+ console.log("flags", flags);
21
+ return {
22
+ ...project,
23
+ package: {
24
+ ...project.package,
25
+ features: {
26
+ ...project.package.features,
27
+ multiTenancy: project.package.features.multiTenancy,
28
+ advancedPublishingWorkflow: {
29
+ ...project.package.features.advancedPublishingWorkflow,
30
+ enabled: flags.isWorkflowsEnabled() ? project.package.features.advancedPublishingWorkflow.enabled : false
31
+ },
32
+ advancedAccessControlLayer: {
33
+ ...project.package.features.advancedAccessControlLayer,
34
+ enabled: flags.isAaclEnabled() ? project.package.features.advancedAccessControlLayer.enabled : false,
35
+ options: {
36
+ teams: flags.isTeamsEnabled() ? project.package.features.advancedAccessControlLayer.options.teams : false,
37
+ privateFiles: flags.isPrivateFilesEnabled() ? project.package.features.advancedAccessControlLayer.options.privateFiles : false,
38
+ folderLevelPermissions: flags.isFolderLevelPermissionsEnabled() ? project.package.features.advancedAccessControlLayer.options.folderLevelPermissions : false
39
+ }
40
+ },
41
+ auditLogs: {
42
+ ...project.package.features.auditLogs,
43
+ enabled: flags.isAuditLogsEnabled() ? project.package.features.auditLogs.enabled : false
44
+ },
45
+ recordLocking: {
46
+ ...project.package.features.recordLocking,
47
+ enabled: flags.isRecordLockingEnabled() ? project.package.features.recordLocking.enabled : false
48
+ },
49
+ fileManager: {
50
+ ...project.package.features.fileManager,
51
+ enabled: project.package.features.fileManager.enabled,
52
+ options: {
53
+ threatDetection: flags.isFileManagerThreatDetectionEnabled() ? project.package.features.fileManager.options.threatDetection : false
54
+ }
55
+ }
56
+ }
57
+ }
58
+ };
59
+ }
60
+ getProjectEnvironment() {
61
+ return this.decoratee.getProjectEnvironment();
62
+ }
63
+ getProjectLicense() {
64
+ return this.decoratee.getProjectLicense();
65
+ }
66
+ canUseFeature(wcpFeatureId) {
67
+ return this.decoratee.canUseFeature(wcpFeatureId);
68
+ }
69
+ canUseAacl() {
70
+ return this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();
71
+ }
72
+ canUseTeams() {
73
+ return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();
74
+ }
75
+ canUseFolderLevelPermissions() {
76
+ return this.decoratee.canUseFolderLevelPermissions() && this.featureFlags.get().isFolderLevelPermissionsEnabled();
77
+ }
78
+ canUsePrivateFiles() {
79
+ return this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled();
80
+ }
81
+ canUseAuditLogs() {
82
+ return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();
83
+ }
84
+ canUseRecordLocking() {
85
+ return this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled();
86
+ }
87
+ canUseFileManagerThreatDetection() {
88
+ return this.decoratee.canUseFileManagerThreatDetection() && this.featureFlags.get().isFileManagerThreatDetectionEnabled();
89
+ }
90
+ canUseWorkflows() {
91
+ return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();
92
+ }
93
+ ensureCanUseFeature(featureId) {
94
+ return this.decoratee.ensureCanUseFeature(featureId);
95
+ }
96
+ async incrementSeats() {
97
+ return this.decoratee.incrementSeats();
98
+ }
99
+ async decrementSeats() {
100
+ return this.decoratee.decrementSeats();
101
+ }
102
+ async incrementTenants() {
103
+ return this.decoratee.incrementTenants();
104
+ }
105
+ async decrementTenants() {
106
+ return this.decoratee.decrementTenants();
107
+ }
108
+ toDto() {
109
+ return this.decoratee.toDto();
110
+ }
111
+ }
112
+ export const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({
113
+ decorator: WcpContextWithFeatureFlagsDecoratorImpl,
114
+ dependencies: [FeatureFlags]
115
+ });
116
+
117
+ //# sourceMappingURL=WcpContextWithFeatureFlagsDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WcpContext","FeatureFlags","WcpContextWithFeatureFlagsDecoratorImpl","constructor","featureFlags","decoratee","getRawLicense","getProject","getProjectWithFeatureFlags","project","flags","get","console","log","package","features","multiTenancy","advancedPublishingWorkflow","enabled","isWorkflowsEnabled","advancedAccessControlLayer","isAaclEnabled","options","teams","isTeamsEnabled","privateFiles","isPrivateFilesEnabled","folderLevelPermissions","isFolderLevelPermissionsEnabled","auditLogs","isAuditLogsEnabled","recordLocking","isRecordLockingEnabled","fileManager","threatDetection","isFileManagerThreatDetectionEnabled","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto","WcpContextWithFeatureFlagsDecorator","createDecorator","decorator","dependencies"],"sources":["WcpContextWithFeatureFlagsDecorator.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { WcpContext } from \"../abstractions.js\";\nimport { FeatureFlags } from \"../../../featureFlags/abstractions.js\";\n\nclass WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {\n constructor(\n private featureFlags: FeatureFlags.Interface,\n private decoratee: WcpContext.Interface\n ) {}\n\n getRawLicense() {\n return this.decoratee.getRawLicense();\n }\n\n getProject() {\n return this.decoratee.getProject();\n }\n\n getProjectWithFeatureFlags() {\n const project = this.decoratee.getProjectWithFeatureFlags();\n if (!project) {\n return null;\n }\n\n const flags = this.featureFlags.get();\n\n console.log(\"flags\", flags);\n return {\n ...project,\n package: {\n ...project.package,\n features: {\n ...project.package.features,\n multiTenancy: project.package.features.multiTenancy,\n advancedPublishingWorkflow: {\n ...project.package.features.advancedPublishingWorkflow,\n enabled: flags.isWorkflowsEnabled()\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isAaclEnabled()\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isTeamsEnabled()\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isPrivateFilesEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isFolderLevelPermissionsEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isAuditLogsEnabled()\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isRecordLockingEnabled()\n ? project.package.features.recordLocking.enabled\n : false\n },\n fileManager: {\n ...project.package.features.fileManager,\n enabled: project.package.features.fileManager.enabled,\n options: {\n threatDetection: flags.isFileManagerThreatDetectionEnabled()\n ? project.package.features.fileManager.options.threatDetection\n : false\n }\n }\n }\n }\n };\n }\n\n getProjectEnvironment() {\n return this.decoratee.getProjectEnvironment();\n }\n\n getProjectLicense() {\n return this.decoratee.getProjectLicense();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl() {\n return this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();\n }\n\n canUseTeams() {\n return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isFolderLevelPermissionsEnabled()\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled()\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled()\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isFileManagerThreatDetectionEnabled()\n );\n }\n\n canUseWorkflows() {\n return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.ensureCanUseFeature(featureId);\n }\n\n async incrementSeats() {\n return this.decoratee.incrementSeats();\n }\n\n async decrementSeats() {\n return this.decoratee.decrementSeats();\n }\n\n async incrementTenants() {\n return this.decoratee.incrementTenants();\n }\n\n async decrementTenants() {\n return this.decoratee.decrementTenants();\n }\n\n toDto() {\n return this.decoratee.toDto();\n }\n}\n\nexport const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({\n decorator: WcpContextWithFeatureFlagsDecoratorImpl,\n dependencies: [FeatureFlags]\n});\n"],"mappings":"AACA,SAASA,UAAU;AACnB,SAASC,YAAY;AAErB,MAAMC,uCAAuC,CAAiC;EAC1EC,WAAWA,CACCC,YAAoC,EACpCC,SAA+B,EACzC;IAAA,KAFUD,YAAoC,GAApCA,YAAoC;IAAA,KACpCC,SAA+B,GAA/BA,SAA+B;EACxC;EAEHC,aAAaA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACD,SAAS,CAACC,aAAa,CAAC,CAAC;EACzC;EAEAC,UAAUA,CAAA,EAAG;IACT,OAAO,IAAI,CAACF,SAAS,CAACE,UAAU,CAAC,CAAC;EACtC;EAEAC,0BAA0BA,CAAA,EAAG;IACzB,MAAMC,OAAO,GAAG,IAAI,CAACJ,SAAS,CAACG,0BAA0B,CAAC,CAAC;IAC3D,IAAI,CAACC,OAAO,EAAE;MACV,OAAO,IAAI;IACf;IAEA,MAAMC,KAAK,GAAG,IAAI,CAACN,YAAY,CAACO,GAAG,CAAC,CAAC;IAErCC,OAAO,CAACC,GAAG,CAAC,OAAO,EAAEH,KAAK,CAAC;IAC3B,OAAO;MACH,GAAGD,OAAO;MACVK,OAAO,EAAE;QACL,GAAGL,OAAO,CAACK,OAAO;QAClBC,QAAQ,EAAE;UACN,GAAGN,OAAO,CAACK,OAAO,CAACC,QAAQ;UAC3BC,YAAY,EAAEP,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACC,YAAY;UACnDC,0BAA0B,EAAE;YACxB,GAAGR,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACE,0BAA0B;YACtDC,OAAO,EAAER,KAAK,CAACS,kBAAkB,CAAC,CAAC,GAC7BV,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACE,0BAA0B,CAACC,OAAO,GAC3D;UACV,CAAC;UACDE,0BAA0B,EAAE;YACxB,GAAGX,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,0BAA0B;YACtDF,OAAO,EAAER,KAAK,CAACW,aAAa,CAAC,CAAC,GACxBZ,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,0BAA0B,CAACF,OAAO,GAC3D,KAAK;YACXI,OAAO,EAAE;cACLC,KAAK,EAAEb,KAAK,CAACc,cAAc,CAAC,CAAC,GACvBf,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,0BAA0B,CAACE,OAAO,CAACC,KAAK,GACjE,KAAK;cACXE,YAAY,EAAEf,KAAK,CAACgB,qBAAqB,CAAC,CAAC,GACrCjB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,0BAA0B,CAACE,OAAO,CACtDG,YAAY,GACjB,KAAK;cACXE,sBAAsB,EAAEjB,KAAK,CAACkB,+BAA+B,CAAC,CAAC,GACzDnB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,0BAA0B,CAACE,OAAO,CACtDK,sBAAsB,GAC3B;YACV;UACJ,CAAC;UACDE,SAAS,EAAE;YACP,GAAGpB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACc,SAAS;YACrCX,OAAO,EAAER,KAAK,CAACoB,kBAAkB,CAAC,CAAC,GAC7BrB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACc,SAAS,CAACX,OAAO,GAC1C;UACV,CAAC;UACDa,aAAa,EAAE;YACX,GAAGtB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACgB,aAAa;YACzCb,OAAO,EAAER,KAAK,CAACsB,sBAAsB,CAAC,CAAC,GACjCvB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACgB,aAAa,CAACb,OAAO,GAC9C;UACV,CAAC;UACDe,WAAW,EAAE;YACT,GAAGxB,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACkB,WAAW;YACvCf,OAAO,EAAET,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACkB,WAAW,CAACf,OAAO;YACrDI,OAAO,EAAE;cACLY,eAAe,EAAExB,KAAK,CAACyB,mCAAmC,CAAC,CAAC,GACtD1B,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACkB,WAAW,CAACX,OAAO,CAACY,eAAe,GAC5D;YACV;UACJ;QACJ;MACJ;IACJ,CAAC;EACL;EAEAE,qBAAqBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAC/B,SAAS,CAAC+B,qBAAqB,CAAC,CAAC;EACjD;EAEAC,iBAAiBA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAChC,SAAS,CAACgC,iBAAiB,CAAC,CAAC;EAC7C;EAEAC,aAAaA,CAACC,YAA4C,EAAE;IACxD,OAAO,IAAI,CAAClC,SAAS,CAACiC,aAAa,CAACC,YAAY,CAAC;EACrD;EAEAC,UAAUA,CAAA,EAAG;IACT,OAAO,IAAI,CAACnC,SAAS,CAACmC,UAAU,CAAC,CAAC,IAAI,IAAI,CAACpC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACU,aAAa,CAAC,CAAC;EACjF;EAEAoB,WAAWA,CAAA,EAAG;IACV,OAAO,IAAI,CAACpC,SAAS,CAACoC,WAAW,CAAC,CAAC,IAAI,IAAI,CAACrC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACa,cAAc,CAAC,CAAC;EACnF;EAEAkB,4BAA4BA,CAAA,EAAG;IAC3B,OACI,IAAI,CAACrC,SAAS,CAACqC,4BAA4B,CAAC,CAAC,IAC7C,IAAI,CAACtC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACiB,+BAA+B,CAAC,CAAC;EAEjE;EAEAe,kBAAkBA,CAAA,EAAG;IACjB,OACI,IAAI,CAACtC,SAAS,CAACsC,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAACvC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACe,qBAAqB,CAAC,CAAC;EAE9F;EAEAkB,eAAeA,CAAA,EAAG;IACd,OAAO,IAAI,CAACvC,SAAS,CAACuC,eAAe,CAAC,CAAC,IAAI,IAAI,CAACxC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACmB,kBAAkB,CAAC,CAAC;EAC3F;EAEAe,mBAAmBA,CAAA,EAAG;IAClB,OACI,IAAI,CAACxC,SAAS,CAACwC,mBAAmB,CAAC,CAAC,IAAI,IAAI,CAACzC,YAAY,CAACO,GAAG,CAAC,CAAC,CAACqB,sBAAsB,CAAC,CAAC;EAEhG;EAEAc,gCAAgCA,CAAA,EAAG;IAC/B,OACI,IAAI,CAACzC,SAAS,CAACyC,gCAAgC,CAAC,CAAC,IACjD,IAAI,CAAC1C,YAAY,CAACO,GAAG,CAAC,CAAC,CAACwB,mCAAmC,CAAC,CAAC;EAErE;EAEAY,eAAeA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC1C,SAAS,CAAC0C,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC3C,YAAY,CAACO,GAAG,CAAC,CAAC,CAACQ,kBAAkB,CAAC,CAAC;EAC3F;EAEA6B,mBAAmBA,CAACC,SAAyC,EAAE;IAC3D,OAAO,IAAI,CAAC5C,SAAS,CAAC2C,mBAAmB,CAACC,SAAS,CAAC;EACxD;EAEA,MAAMC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC7C,SAAS,CAAC6C,cAAc,CAAC,CAAC;EAC1C;EAEA,MAAMC,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC9C,SAAS,CAAC8C,cAAc,CAAC,CAAC;EAC1C;EAEA,MAAMC,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC/C,SAAS,CAAC+C,gBAAgB,CAAC,CAAC;EAC5C;EAEA,MAAMC,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAChD,SAAS,CAACgD,gBAAgB,CAAC,CAAC;EAC5C;EAEAC,KAAKA,CAAA,EAAG;IACJ,OAAO,IAAI,CAACjD,SAAS,CAACiD,KAAK,CAAC,CAAC;EACjC;AACJ;AAEA,OAAO,MAAMC,mCAAmC,GAAGvD,UAAU,CAACwD,eAAe,CAAC;EAC1EC,SAAS,EAAEvD,uCAAuC;EAClDwD,YAAY,EAAE,CAACzD,YAAY;AAC/B,CAAC,CAAC","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { WcpContextFeature } from "./WcpContext/feature.js";
3
+ import { WcpContextWithFeatureFlagsDecorator } from "./WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js";
3
4
  export const WcpFeature = createFeature({
4
5
  name: "WebinyControlPanel",
5
6
  register(container, license) {
6
7
  WcpContextFeature.register(container, license);
8
+ container.registerDecorator(WcpContextWithFeatureFlagsDecorator);
7
9
  }
8
10
  });
9
11
 
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","WcpContextFeature","WcpFeature","name","register","container","license"],"sources":["WcpFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContextFeature } from \"./WcpContext/feature.js\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\n\nexport const WcpFeature = createFeature({\n name: \"WebinyControlPanel\",\n register(container, license: ILicense) {\n WcpContextFeature.register(container, license);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAG1B,OAAO,MAAMC,UAAU,GAAGF,aAAa,CAAC;EACpCG,IAAI,EAAE,oBAAoB;EAC1BC,QAAQA,CAACC,SAAS,EAAEC,OAAiB,EAAE;IACnCL,iBAAiB,CAACG,QAAQ,CAACC,SAAS,EAAEC,OAAO,CAAC;EAClD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","WcpContextFeature","WcpContextWithFeatureFlagsDecorator","WcpFeature","name","register","container","license","registerDecorator"],"sources":["WcpFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContextFeature } from \"./WcpContext/feature.js\";\nimport { WcpContextWithFeatureFlagsDecorator } from \"./WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js\";\nimport type { ILicense } from \"@webiny/wcp/types.js\";\n\nexport const WcpFeature = createFeature({\n name: \"WebinyControlPanel\",\n register(container, license: ILicense) {\n WcpContextFeature.register(container, license);\n container.registerDecorator(WcpContextWithFeatureFlagsDecorator);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,mCAAmC;AAG5C,OAAO,MAAMC,UAAU,GAAGH,aAAa,CAAC;EACpCI,IAAI,EAAE,oBAAoB;EAC1BC,QAAQA,CAACC,SAAS,EAAEC,OAAiB,EAAE;IACnCN,iBAAiB,CAACI,QAAQ,CAACC,SAAS,EAAEC,OAAO,CAAC;IAC9CD,SAAS,CAACE,iBAAiB,CAACN,mCAAmC,CAAC;EACpE;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -66,7 +66,7 @@ export const createWcpGraphQL = () => {
66
66
  getProject: async (_, __, context) => {
67
67
  try {
68
68
  const wcpContext = context.container.resolve(WcpContext);
69
- const project = wcpContext.getProject();
69
+ const project = wcpContext.getProjectWithFeatureFlags();
70
70
  if (!project) {
71
71
  throw Error(`Could not get project!`);
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"names":["GraphQLSchemaPlugin","ErrorResponse","Response","WcpContext","emptyResolver","createWcpGraphQL","typeDefs","resolvers","Query","wcp","WcpQuery","getProject","_","__","context","wcpContext","container","resolve","project","Error","e","code","message","data","stack"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/index.js\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nconst emptyResolver = () => ({});\n\nexport const createWcpGraphQL = () => {\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type WcpProjectPackageFeaturesFeature {\n enabled: Boolean\n options: JSON\n }\n\n type WcpProjectPackageFeatures {\n seats: WcpProjectPackageFeaturesFeature\n multiTenancy: WcpProjectPackageFeaturesFeature\n advancedPublishingWorkflow: WcpProjectPackageFeaturesFeature\n advancedAccessControlLayer: WcpProjectPackageFeaturesFeature\n auditLogs: WcpProjectPackageFeaturesFeature\n recordLocking: WcpProjectPackageFeaturesFeature\n fileManager: WcpProjectPackageFeaturesFeature\n }\n\n type WcpProjectPackage {\n features: WcpProjectPackageFeatures\n }\n\n type WcpProject {\n orgId: ID\n projectId: ID\n package: WcpProjectPackage\n }\n\n type WcpError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type WcpProjectResponse {\n data: WcpProject\n error: WcpError\n }\n\n type WcpQuery {\n getProject: WcpProjectResponse\n }\n\n type WcpMutation {\n updateProject: WcpProjectResponse\n }\n\n extend type Query {\n wcp: WcpQuery\n }\n\n extend type Mutation {\n wcp: WcpMutation\n }\n `,\n resolvers: {\n Query: {\n wcp: emptyResolver\n },\n WcpQuery: {\n getProject: async (_, __, context) => {\n try {\n const wcpContext = context.container.resolve(WcpContext);\n const project = wcpContext.getProject();\n\n if (!project) {\n throw Error(`Could not get project!`);\n }\n\n return new Response(project);\n } catch (e) {\n return new ErrorResponse({\n code: \"COULD_NOT_GET_PROJECT\",\n message: e.message,\n data: null,\n stack: e.stack\n });\n }\n }\n }\n }\n });\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,0CAA0C;AAC9E,SAASC,aAAa,EAAEC,QAAQ,QAAQ,sCAAsC;AAC9E,SAASC,UAAU;AAEnB,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,OAAO,IAAIL,mBAAmB,CAAC;IAC3BM,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,GAAG,EAAEL;MACT,CAAC;MACDM,QAAQ,EAAE;QACNC,UAAU,EAAE,MAAAA,CAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UAClC,IAAI;YACA,MAAMC,UAAU,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACd,UAAU,CAAC;YACxD,MAAMe,OAAO,GAAGH,UAAU,CAACJ,UAAU,CAAC,CAAC;YAEvC,IAAI,CAACO,OAAO,EAAE;cACV,MAAMC,KAAK,CAAC,wBAAwB,CAAC;YACzC;YAEA,OAAO,IAAIjB,QAAQ,CAACgB,OAAO,CAAC;UAChC,CAAC,CAAC,OAAOE,CAAC,EAAE;YACR,OAAO,IAAInB,aAAa,CAAC;cACrBoB,IAAI,EAAE,uBAAuB;cAC7BC,OAAO,EAAEF,CAAC,CAACE,OAAO;cAClBC,IAAI,EAAE,IAAI;cACVC,KAAK,EAAEJ,CAAC,CAACI;YACb,CAAC,CAAC;UACN;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["GraphQLSchemaPlugin","ErrorResponse","Response","WcpContext","emptyResolver","createWcpGraphQL","typeDefs","resolvers","Query","wcp","WcpQuery","getProject","_","__","context","wcpContext","container","resolve","project","getProjectWithFeatureFlags","Error","e","code","message","data","stack"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/index.js\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nconst emptyResolver = () => ({});\n\nexport const createWcpGraphQL = () => {\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type WcpProjectPackageFeaturesFeature {\n enabled: Boolean\n options: JSON\n }\n\n type WcpProjectPackageFeatures {\n seats: WcpProjectPackageFeaturesFeature\n multiTenancy: WcpProjectPackageFeaturesFeature\n advancedPublishingWorkflow: WcpProjectPackageFeaturesFeature\n advancedAccessControlLayer: WcpProjectPackageFeaturesFeature\n auditLogs: WcpProjectPackageFeaturesFeature\n recordLocking: WcpProjectPackageFeaturesFeature\n fileManager: WcpProjectPackageFeaturesFeature\n }\n\n type WcpProjectPackage {\n features: WcpProjectPackageFeatures\n }\n\n type WcpProject {\n orgId: ID\n projectId: ID\n package: WcpProjectPackage\n }\n\n type WcpError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type WcpProjectResponse {\n data: WcpProject\n error: WcpError\n }\n\n type WcpQuery {\n getProject: WcpProjectResponse\n }\n\n type WcpMutation {\n updateProject: WcpProjectResponse\n }\n\n extend type Query {\n wcp: WcpQuery\n }\n\n extend type Mutation {\n wcp: WcpMutation\n }\n `,\n resolvers: {\n Query: {\n wcp: emptyResolver\n },\n WcpQuery: {\n getProject: async (_, __, context) => {\n try {\n const wcpContext = context.container.resolve(WcpContext);\n const project = wcpContext.getProjectWithFeatureFlags();\n\n if (!project) {\n throw Error(`Could not get project!`);\n }\n\n return new Response(project);\n } catch (e) {\n return new ErrorResponse({\n code: \"COULD_NOT_GET_PROJECT\",\n message: e.message,\n data: null,\n stack: e.stack\n });\n }\n }\n }\n }\n });\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,0CAA0C;AAC9E,SAASC,aAAa,EAAEC,QAAQ,QAAQ,sCAAsC;AAC9E,SAASC,UAAU;AAEnB,MAAMC,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAClC,OAAO,IAAIL,mBAAmB,CAAC;IAC3BM,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,GAAG,EAAEL;MACT,CAAC;MACDM,QAAQ,EAAE;QACNC,UAAU,EAAE,MAAAA,CAAOC,CAAC,EAAEC,EAAE,EAAEC,OAAO,KAAK;UAClC,IAAI;YACA,MAAMC,UAAU,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACd,UAAU,CAAC;YACxD,MAAMe,OAAO,GAAGH,UAAU,CAACI,0BAA0B,CAAC,CAAC;YAEvD,IAAI,CAACD,OAAO,EAAE;cACV,MAAME,KAAK,CAAC,wBAAwB,CAAC;YACzC;YAEA,OAAO,IAAIlB,QAAQ,CAACgB,OAAO,CAAC;UAChC,CAAC,CAAC,OAAOG,CAAC,EAAE;YACR,OAAO,IAAIpB,aAAa,CAAC;cACrBqB,IAAI,EAAE,uBAAuB;cAC7BC,OAAO,EAAEF,CAAC,CAACE,OAAO;cAClBC,IAAI,EAAE,IAAI;cACVC,KAAK,EAAEJ,CAAC,CAACI;YACb,CAAC,CAAC;UACN;QACJ;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
@@ -8,6 +8,7 @@ export declare class LegacyWcpContext implements WcpContextObject {
8
8
  private getWcpContext;
9
9
  getRawLicense(): DecryptedWcpProjectLicense | null;
10
10
  getProject(): WcpProject | null;
11
+ getProjectWithFeatureFlags(): WcpProject | null;
11
12
  getProjectLicense(): ILicense;
12
13
  getProjectEnvironment(): WcpProjectEnvironment | null;
13
14
  canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean;
@@ -12,6 +12,9 @@ export class LegacyWcpContext {
12
12
  getProject() {
13
13
  return this.getWcpContext().getProject();
14
14
  }
15
+ getProjectWithFeatureFlags() {
16
+ return this.getWcpContext().getProjectWithFeatureFlags();
17
+ }
15
18
  getProjectLicense() {
16
19
  return this.getWcpContext().getProjectLicense();
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["WcpContext","LegacyWcpContext","constructor","container","getWcpContext","resolve","getRawLicense","getProject","getProjectLicense","getProjectEnvironment","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["LegacyWcpContext.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProject,\n WcpProjectEnvironment\n} from \"@webiny/wcp/types.js\";\nimport { WcpContextObject } from \"~/features/wcp/WcpContext/types.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nexport class LegacyWcpContext implements WcpContextObject {\n constructor(private container: Container) {}\n\n private getWcpContext(): WcpContext.Interface {\n return this.container.resolve(WcpContext);\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.getWcpContext().getProject();\n }\n\n getProjectLicense(): ILicense {\n return this.getWcpContext().getProjectLicense();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return this.getWcpContext().getProjectEnvironment();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.getWcpContext().canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.getWcpContext().canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.getWcpContext().canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.getWcpContext().canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.getWcpContext().canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.getWcpContext().canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.getWcpContext().canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.getWcpContext().canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.getWcpContext().canUseWorkflows();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void {\n this.getWcpContext().ensureCanUseFeature(featureId);\n }\n\n async incrementSeats(): Promise<void> {\n await this.getWcpContext().incrementSeats();\n }\n\n async decrementSeats(): Promise<void> {\n await this.getWcpContext().decrementSeats();\n }\n\n async incrementTenants(): Promise<void> {\n await this.getWcpContext().incrementTenants();\n }\n\n async decrementTenants(): Promise<void> {\n await this.getWcpContext().decrementTenants();\n }\n\n toDto(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().toDto();\n }\n}\n"],"mappings":"AASA,SAASA,UAAU;AAEnB,OAAO,MAAMC,gBAAgB,CAA6B;EACtDC,WAAWA,CAASC,SAAoB,EAAE;IAAA,KAAtBA,SAAoB,GAApBA,SAAoB;EAAG;EAEnCC,aAAaA,CAAA,EAAyB;IAC1C,OAAO,IAAI,CAACD,SAAS,CAACE,OAAO,CAACL,UAAU,CAAC;EAC7C;EAEAM,aAAaA,CAAA,EAAsC;IAC/C,OAAO,IAAI,CAACF,aAAa,CAAC,CAAC,CAACE,aAAa,CAAC,CAAC;EAC/C;EAEAC,UAAUA,CAAA,EAAsB;IAC5B,OAAO,IAAI,CAACH,aAAa,CAAC,CAAC,CAACG,UAAU,CAAC,CAAC;EAC5C;EAEAC,iBAAiBA,CAAA,EAAa;IAC1B,OAAO,IAAI,CAACJ,aAAa,CAAC,CAAC,CAACI,iBAAiB,CAAC,CAAC;EACnD;EAEAC,qBAAqBA,CAAA,EAAiC;IAClD,OAAO,IAAI,CAACL,aAAa,CAAC,CAAC,CAACK,qBAAqB,CAAC,CAAC;EACvD;EAEAC,aAAaA,CAACC,YAA4C,EAAW;IACjE,OAAO,IAAI,CAACP,aAAa,CAAC,CAAC,CAACM,aAAa,CAACC,YAAY,CAAC;EAC3D;EAEAC,UAAUA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACR,aAAa,CAAC,CAAC,CAACQ,UAAU,CAAC,CAAC;EAC5C;EAEAC,WAAWA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACT,aAAa,CAAC,CAAC,CAACS,WAAW,CAAC,CAAC;EAC7C;EAEAC,4BAA4BA,CAAA,EAAY;IACpC,OAAO,IAAI,CAACV,aAAa,CAAC,CAAC,CAACU,4BAA4B,CAAC,CAAC;EAC9D;EAEAC,kBAAkBA,CAAA,EAAY;IAC1B,OAAO,IAAI,CAACX,aAAa,CAAC,CAAC,CAACW,kBAAkB,CAAC,CAAC;EACpD;EAEAC,eAAeA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACZ,aAAa,CAAC,CAAC,CAACY,eAAe,CAAC,CAAC;EACjD;EAEAC,mBAAmBA,CAAA,EAAY;IAC3B,OAAO,IAAI,CAACb,aAAa,CAAC,CAAC,CAACa,mBAAmB,CAAC,CAAC;EACrD;EAEAC,gCAAgCA,CAAA,EAAY;IACxC,OAAO,IAAI,CAACd,aAAa,CAAC,CAAC,CAACc,gCAAgC,CAAC,CAAC;EAClE;EAEAC,eAAeA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACf,aAAa,CAAC,CAAC,CAACe,eAAe,CAAC,CAAC;EACjD;EAEAC,mBAAmBA,CAACC,SAAyC,EAAQ;IACjE,IAAI,CAACjB,aAAa,CAAC,CAAC,CAACgB,mBAAmB,CAACC,SAAS,CAAC;EACvD;EAEA,MAAMC,cAAcA,CAAA,EAAkB;IAClC,MAAM,IAAI,CAAClB,aAAa,CAAC,CAAC,CAACkB,cAAc,CAAC,CAAC;EAC/C;EAEA,MAAMC,cAAcA,CAAA,EAAkB;IAClC,MAAM,IAAI,CAACnB,aAAa,CAAC,CAAC,CAACmB,cAAc,CAAC,CAAC;EAC/C;EAEA,MAAMC,gBAAgBA,CAAA,EAAkB;IACpC,MAAM,IAAI,CAACpB,aAAa,CAAC,CAAC,CAACoB,gBAAgB,CAAC,CAAC;EACjD;EAEA,MAAMC,gBAAgBA,CAAA,EAAkB;IACpC,MAAM,IAAI,CAACrB,aAAa,CAAC,CAAC,CAACqB,gBAAgB,CAAC,CAAC;EACjD;EAEAC,KAAKA,CAAA,EAAsC;IACvC,OAAO,IAAI,CAACtB,aAAa,CAAC,CAAC,CAACsB,KAAK,CAAC,CAAC;EACvC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["WcpContext","LegacyWcpContext","constructor","container","getWcpContext","resolve","getRawLicense","getProject","getProjectWithFeatureFlags","getProjectLicense","getProjectEnvironment","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto"],"sources":["LegacyWcpContext.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport type {\n DecryptedWcpProjectLicense,\n ILicense,\n WcpProject,\n WcpProjectEnvironment\n} from \"@webiny/wcp/types.js\";\nimport { WcpContextObject } from \"~/features/wcp/WcpContext/types.js\";\nimport { WcpContext } from \"~/features/wcp/WcpContext/index.js\";\n\nexport class LegacyWcpContext implements WcpContextObject {\n constructor(private container: Container) {}\n\n private getWcpContext(): WcpContext.Interface {\n return this.container.resolve(WcpContext);\n }\n\n getRawLicense(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().getRawLicense();\n }\n\n getProject(): WcpProject | null {\n return this.getWcpContext().getProject();\n }\n\n getProjectWithFeatureFlags(): WcpProject | null {\n return this.getWcpContext().getProjectWithFeatureFlags();\n }\n\n getProjectLicense(): ILicense {\n return this.getWcpContext().getProjectLicense();\n }\n\n getProjectEnvironment(): WcpProjectEnvironment | null {\n return this.getWcpContext().getProjectEnvironment();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL): boolean {\n return this.getWcpContext().canUseFeature(wcpFeatureId);\n }\n\n canUseAacl(): boolean {\n return this.getWcpContext().canUseAacl();\n }\n\n canUseTeams(): boolean {\n return this.getWcpContext().canUseTeams();\n }\n\n canUseFolderLevelPermissions(): boolean {\n return this.getWcpContext().canUseFolderLevelPermissions();\n }\n\n canUsePrivateFiles(): boolean {\n return this.getWcpContext().canUsePrivateFiles();\n }\n\n canUseAuditLogs(): boolean {\n return this.getWcpContext().canUseAuditLogs();\n }\n\n canUseRecordLocking(): boolean {\n return this.getWcpContext().canUseRecordLocking();\n }\n\n canUseFileManagerThreatDetection(): boolean {\n return this.getWcpContext().canUseFileManagerThreatDetection();\n }\n\n canUseWorkflows(): boolean {\n return this.getWcpContext().canUseWorkflows();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL): void {\n this.getWcpContext().ensureCanUseFeature(featureId);\n }\n\n async incrementSeats(): Promise<void> {\n await this.getWcpContext().incrementSeats();\n }\n\n async decrementSeats(): Promise<void> {\n await this.getWcpContext().decrementSeats();\n }\n\n async incrementTenants(): Promise<void> {\n await this.getWcpContext().incrementTenants();\n }\n\n async decrementTenants(): Promise<void> {\n await this.getWcpContext().decrementTenants();\n }\n\n toDto(): DecryptedWcpProjectLicense | null {\n return this.getWcpContext().toDto();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ export declare abstract class FieldBuilder<TZod extends z.ZodTypeAny> {
6
6
  protected zodSchema: TZod;
7
7
  constructor(type: string, initialSchema: TZod);
8
8
  label(text: string): this;
9
- helpText(text: string): this;
9
+ help(text: string): this;
10
10
  placeholder(text: string): this;
11
11
  toConfig(): FieldConfig;
12
12
  getZodSchema(): TZod;
@@ -12,12 +12,12 @@ export class FieldBuilder {
12
12
  this.config.label = text;
13
13
  return this;
14
14
  }
15
- helpText(text) {
16
- this.config.helpText = text;
15
+ help(text) {
16
+ this.config.help = text;
17
17
  return this;
18
18
  }
19
19
  placeholder(text) {
20
- this.config.placeholderText = text;
20
+ this.config.placeholder = text;
21
21
  return this;
22
22
  }
23
23
  toConfig() {
@@ -25,8 +25,8 @@ export class FieldBuilder {
25
25
  fieldId: "",
26
26
  type: this.config.type,
27
27
  label: this.config.label,
28
- helpText: this.config.helpText,
29
- placeholderText: this.config.placeholderText,
28
+ help: this.config.help,
29
+ placeholder: this.config.placeholder,
30
30
  validation: this.config.validation || [],
31
31
  settings: this.config.settings || {},
32
32
  zodSchema: this.zodSchema
@@ -1 +1 @@
1
- {"version":3,"names":["z","FieldBuilder","config","validation","constructor","type","initialSchema","zodSchema","label","text","helpText","placeholder","placeholderText","toConfig","fieldId","settings","getZodSchema","TextFieldBuilder","schema","string","required","message","newSchema","min","push","name","minLength","length","maxLength","max","slug","regex","email","url","unique","ObjectFieldBuilder","nestedFields","fields","registry","fieldBuilders","shape","nestedConfigs","builder","Object","entries","object","optional","nullable"],"sources":["FieldBuilder.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { FieldConfig } from \"./types.js\";\nimport type { IFieldBuilderRegistry } from \"./abstractions.js\";\n\n// Make FieldBuilder return the Zod type it produces\nexport abstract class FieldBuilder<TZod extends z.ZodTypeAny> {\n protected config: Partial<FieldConfig> = {\n validation: []\n };\n protected zodSchema: TZod;\n\n constructor(type: string, initialSchema: TZod) {\n this.config.type = type;\n this.zodSchema = initialSchema;\n }\n\n label(text: string): this {\n this.config.label = text;\n return this;\n }\n\n helpText(text: string): this {\n this.config.helpText = text;\n return this;\n }\n\n placeholder(text: string): this {\n this.config.placeholderText = text;\n return this;\n }\n\n toConfig(): FieldConfig {\n return {\n fieldId: \"\",\n type: this.config.type!,\n label: this.config.label,\n helpText: this.config.helpText,\n placeholderText: this.config.placeholderText,\n validation: this.config.validation || [],\n settings: this.config.settings || {},\n zodSchema: this.zodSchema\n };\n }\n\n getZodSchema(): TZod {\n return this.zodSchema;\n }\n}\n\n// Text Field Builder - properly track type transformations\nexport class TextFieldBuilder<TZod extends z.ZodString = z.ZodString> extends FieldBuilder<TZod> {\n constructor(schema?: TZod) {\n super(\"text\", (schema || z.string()) as TZod);\n }\n\n required(message?: string): TextFieldBuilder<z.ZodString> {\n const newSchema = (this.zodSchema as z.ZodString).min(1, message || \"Field is required\");\n this.zodSchema = newSchema as any;\n this.config.validation?.push({\n name: \"required\",\n message: message || \"Field is required\",\n settings: {}\n });\n return this as any;\n }\n\n minLength(length: number, message?: string): this {\n this.zodSchema = (this.zodSchema as z.ZodString).min(length, message) as TZod;\n return this;\n }\n\n maxLength(length: number, message?: string): this {\n this.zodSchema = (this.zodSchema as z.ZodString).max(length, message) as TZod;\n return this;\n }\n\n slug(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).regex(\n /^[a-z0-9-]+$/,\n \"Must be a valid slug (lowercase letters, numbers, and hyphens only)\"\n ) as TZod;\n this.config.validation?.push({\n name: \"slug\",\n message: \"Must be a valid slug\",\n settings: {}\n });\n return this;\n }\n\n email(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).email(\"Must be a valid email\") as TZod;\n this.config.validation?.push({\n name: \"email\",\n message: \"Must be a valid email\",\n settings: {}\n });\n return this;\n }\n\n url(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).url(\"Must be a valid URL\") as TZod;\n this.config.validation?.push({\n name: \"url\",\n message: \"Must be a valid URL\",\n settings: {}\n });\n return this;\n }\n\n unique(): this {\n this.config.validation?.push({\n name: \"unique\",\n message: \"Value must be unique\",\n settings: {}\n });\n return this;\n }\n}\n\n// Object Field Builder - track the shape type\nexport class ObjectFieldBuilder<TShape extends z.ZodRawShape> extends FieldBuilder<\n z.ZodObject<TShape>\n> {\n private nestedFields: FieldConfig[] = [];\n\n constructor(\n fields: (registry: IFieldBuilderRegistry) => {\n [K in keyof TShape]: FieldBuilder<TShape[K]>;\n },\n registry: IFieldBuilderRegistry\n ) {\n const fieldBuilders = fields(registry);\n const shape = {} as TShape;\n const nestedConfigs: FieldConfig[] = [];\n\n for (const [fieldId, builder] of Object.entries(fieldBuilders) as Array<\n [keyof TShape, FieldBuilder<any>]\n >) {\n const config = builder.toConfig();\n config.fieldId = fieldId as string;\n nestedConfigs.push(config);\n shape[fieldId] = builder.getZodSchema() as TShape[keyof TShape];\n }\n\n super(\"object\", z.object(shape));\n this.nestedFields = nestedConfigs;\n this.config.fields = nestedConfigs;\n }\n\n optional(): ObjectFieldBuilder<TShape> & {\n getZodSchema(): z.ZodOptional<z.ZodObject<TShape>>;\n } {\n this.zodSchema = this.zodSchema.optional() as any;\n return this as any;\n }\n\n nullable(): ObjectFieldBuilder<TShape> & {\n getZodSchema(): z.ZodNullable<z.ZodObject<TShape>>;\n } {\n this.zodSchema = this.zodSchema.nullable() as any;\n return this as any;\n }\n\n override toConfig(): FieldConfig {\n const config = super.toConfig();\n config.fields = this.nestedFields;\n return config;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["z","FieldBuilder","config","validation","constructor","type","initialSchema","zodSchema","label","text","help","placeholder","toConfig","fieldId","settings","getZodSchema","TextFieldBuilder","schema","string","required","message","newSchema","min","push","name","minLength","length","maxLength","max","slug","regex","email","url","unique","ObjectFieldBuilder","nestedFields","fields","registry","fieldBuilders","shape","nestedConfigs","builder","Object","entries","object","optional","nullable"],"sources":["FieldBuilder.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { FieldConfig } from \"./types.js\";\nimport type { IFieldBuilderRegistry } from \"./abstractions.js\";\n\n// Make FieldBuilder return the Zod type it produces\nexport abstract class FieldBuilder<TZod extends z.ZodTypeAny> {\n protected config: Partial<FieldConfig> = {\n validation: []\n };\n protected zodSchema: TZod;\n\n constructor(type: string, initialSchema: TZod) {\n this.config.type = type;\n this.zodSchema = initialSchema;\n }\n\n label(text: string): this {\n this.config.label = text;\n return this;\n }\n\n help(text: string): this {\n this.config.help = text;\n return this;\n }\n\n placeholder(text: string): this {\n this.config.placeholder = text;\n return this;\n }\n\n toConfig(): FieldConfig {\n return {\n fieldId: \"\",\n type: this.config.type!,\n label: this.config.label,\n help: this.config.help,\n placeholder: this.config.placeholder,\n validation: this.config.validation || [],\n settings: this.config.settings || {},\n zodSchema: this.zodSchema\n };\n }\n\n getZodSchema(): TZod {\n return this.zodSchema;\n }\n}\n\n// Text Field Builder - properly track type transformations\nexport class TextFieldBuilder<TZod extends z.ZodString = z.ZodString> extends FieldBuilder<TZod> {\n constructor(schema?: TZod) {\n super(\"text\", (schema || z.string()) as TZod);\n }\n\n required(message?: string): TextFieldBuilder<z.ZodString> {\n const newSchema = (this.zodSchema as z.ZodString).min(1, message || \"Field is required\");\n this.zodSchema = newSchema as any;\n this.config.validation?.push({\n name: \"required\",\n message: message || \"Field is required\",\n settings: {}\n });\n return this as any;\n }\n\n minLength(length: number, message?: string): this {\n this.zodSchema = (this.zodSchema as z.ZodString).min(length, message) as TZod;\n return this;\n }\n\n maxLength(length: number, message?: string): this {\n this.zodSchema = (this.zodSchema as z.ZodString).max(length, message) as TZod;\n return this;\n }\n\n slug(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).regex(\n /^[a-z0-9-]+$/,\n \"Must be a valid slug (lowercase letters, numbers, and hyphens only)\"\n ) as TZod;\n this.config.validation?.push({\n name: \"slug\",\n message: \"Must be a valid slug\",\n settings: {}\n });\n return this;\n }\n\n email(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).email(\"Must be a valid email\") as TZod;\n this.config.validation?.push({\n name: \"email\",\n message: \"Must be a valid email\",\n settings: {}\n });\n return this;\n }\n\n url(): this {\n this.zodSchema = (this.zodSchema as z.ZodString).url(\"Must be a valid URL\") as TZod;\n this.config.validation?.push({\n name: \"url\",\n message: \"Must be a valid URL\",\n settings: {}\n });\n return this;\n }\n\n unique(): this {\n this.config.validation?.push({\n name: \"unique\",\n message: \"Value must be unique\",\n settings: {}\n });\n return this;\n }\n}\n\n// Object Field Builder - track the shape type\nexport class ObjectFieldBuilder<TShape extends z.ZodRawShape> extends FieldBuilder<\n z.ZodObject<TShape>\n> {\n private nestedFields: FieldConfig[] = [];\n\n constructor(\n fields: (registry: IFieldBuilderRegistry) => {\n [K in keyof TShape]: FieldBuilder<TShape[K]>;\n },\n registry: IFieldBuilderRegistry\n ) {\n const fieldBuilders = fields(registry);\n const shape = {} as TShape;\n const nestedConfigs: FieldConfig[] = [];\n\n for (const [fieldId, builder] of Object.entries(fieldBuilders) as Array<\n [keyof TShape, FieldBuilder<any>]\n >) {\n const config = builder.toConfig();\n config.fieldId = fieldId as string;\n nestedConfigs.push(config);\n shape[fieldId] = builder.getZodSchema() as TShape[keyof TShape];\n }\n\n super(\"object\", z.object(shape));\n this.nestedFields = nestedConfigs;\n this.config.fields = nestedConfigs;\n }\n\n optional(): ObjectFieldBuilder<TShape> & {\n getZodSchema(): z.ZodOptional<z.ZodObject<TShape>>;\n } {\n this.zodSchema = this.zodSchema.optional() as any;\n return this as any;\n }\n\n nullable(): ObjectFieldBuilder<TShape> & {\n getZodSchema(): z.ZodNullable<z.ZodObject<TShape>>;\n } {\n this.zodSchema = this.zodSchema.nullable() as any;\n return this as any;\n }\n\n override toConfig(): FieldConfig {\n const config = super.toConfig();\n config.fields = this.nestedFields;\n return config;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -41,7 +41,7 @@ export interface ITextFieldBuilder extends FieldBuilder<z.ZodString> {
41
41
  email(): this;
42
42
  url(): this;
43
43
  unique(): this;
44
- helpText(text: string): this;
44
+ help(text: string): this;
45
45
  placeholder(text: string): this;
46
46
  }
47
47
 
@@ -219,7 +219,7 @@ export interface IColorFieldBuilder extends FieldBuilder<z.ZodString> {
219
219
  default(hex: string): this;
220
220
  allowAlpha(): this;
221
221
  palette(colors: string[]): this;
222
- helpText(text: string): this;
222
+ help(text: string): this;
223
223
  }
224
224
 
225
225
  class ColorFieldBuilder extends FieldBuilder<z.ZodString> implements IColorFieldBuilder {
@@ -6,8 +6,8 @@ export interface FieldConfig {
6
6
  fieldId: string;
7
7
  type: string;
8
8
  label?: string;
9
- helpText?: string;
10
- placeholderText?: string;
9
+ help?: string;
10
+ placeholder?: string;
11
11
  validation?: ValidationRule[];
12
12
  settings?: Record<string, any>;
13
13
  zodSchema: z.ZodTypeAny;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { ModelClass } from \"~/models/base/ModelBuilder.js\";\nimport type { BaseModel } from \"~/models/base/BaseModel.js\";\nimport type { IModelData } from \"~/models/base/abstractions.js\";\n\nexport interface FieldConfig {\n fieldId: string;\n type: string;\n label?: string;\n helpText?: string;\n placeholderText?: string;\n validation?: ValidationRule[];\n settings?: Record<string, any>;\n zodSchema: z.ZodTypeAny;\n fields?: FieldConfig[]; // For nested object fields\n}\n\nexport interface ValidationRule {\n name: string;\n message: string;\n settings: Record<string, any>;\n}\n\nexport interface CmsModelMetadata {\n icon?: string;\n description?: string;\n titleFieldId?: string;\n descriptionFieldId?: string;\n imageFieldId?: string;\n tags?: string[];\n}\n\n// Make PrivateCmsModel generic!\nexport interface PrivateCmsModel<TModel extends BaseModel<any>> {\n type: \"private\";\n modelType: \"private\";\n Model: ModelClass<TModel>;\n modelId: string;\n name: string;\n icon?: string;\n description?: string;\n fields: FieldConfig[];\n schema: TModel[\"__schema\"];\n create: (data: IModelData<TModel>) => TModel;\n}\n\nexport interface FieldBuilderConfig {\n fieldId: string;\n config: FieldConfig;\n zodSchema: z.ZodTypeAny;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { ModelClass } from \"~/models/base/ModelBuilder.js\";\nimport type { BaseModel } from \"~/models/base/BaseModel.js\";\nimport type { IModelData } from \"~/models/base/abstractions.js\";\n\nexport interface FieldConfig {\n fieldId: string;\n type: string;\n label?: string;\n help?: string;\n placeholder?: string;\n validation?: ValidationRule[];\n settings?: Record<string, any>;\n zodSchema: z.ZodTypeAny;\n fields?: FieldConfig[]; // For nested object fields\n}\n\nexport interface ValidationRule {\n name: string;\n message: string;\n settings: Record<string, any>;\n}\n\nexport interface CmsModelMetadata {\n icon?: string;\n description?: string;\n titleFieldId?: string;\n descriptionFieldId?: string;\n imageFieldId?: string;\n tags?: string[];\n}\n\n// Make PrivateCmsModel generic!\nexport interface PrivateCmsModel<TModel extends BaseModel<any>> {\n type: \"private\";\n modelType: \"private\";\n Model: ModelClass<TModel>;\n modelId: string;\n name: string;\n icon?: string;\n description?: string;\n fields: FieldConfig[];\n schema: TModel[\"__schema\"];\n create: (data: IModelData<TModel>) => TModel;\n}\n\nexport interface FieldBuilderConfig {\n fieldId: string;\n config: FieldConfig;\n zodSchema: z.ZodTypeAny;\n}\n"],"mappings":"","ignoreList":[]}