@webiny/project-aws 6.3.0-beta.2 → 6.3.0-beta.3

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 (118) hide show
  1. package/_templates/appTemplates/admin/webiny.application.ts +1 -1
  2. package/_templates/appTemplates/api/graphql/src/extensions.ts +1 -1
  3. package/_templates/appTemplates/api/graphql/src/index.ts +2 -2
  4. package/_templates/appTemplates/api/webiny.application.ts +1 -1
  5. package/_templates/appTemplates/blueGreen/webiny.application.ts +1 -1
  6. package/_templates/appTemplates/core/webiny.application.ts +1 -1
  7. package/_templates/appTemplates/syncSystem/webiny.application.ts +1 -1
  8. package/_templates/extensions/OpenSearch/api/graphql/src/index.ts +3 -3
  9. package/abstractions/features/pulumi/AdminPulumi.d.ts +9 -0
  10. package/abstractions/features/pulumi/AdminPulumi.js +4 -0
  11. package/abstractions/features/pulumi/AdminPulumi.js.map +1 -0
  12. package/abstractions/features/pulumi/ApiPulumi.d.ts +9 -0
  13. package/abstractions/features/pulumi/ApiPulumi.js +4 -0
  14. package/abstractions/features/pulumi/ApiPulumi.js.map +1 -0
  15. package/abstractions/features/pulumi/CorePulumi.d.ts +9 -0
  16. package/abstractions/features/pulumi/CorePulumi.js +4 -0
  17. package/abstractions/features/pulumi/CorePulumi.js.map +1 -0
  18. package/abstractions/features/pulumi/index.d.ts +3 -0
  19. package/abstractions/features/pulumi/index.js +5 -0
  20. package/abstractions/features/pulumi/index.js.map +1 -0
  21. package/abstractions/index.d.ts +1 -0
  22. package/abstractions/index.js +1 -0
  23. package/abstractions/index.js.map +1 -1
  24. package/api.d.ts +19 -4
  25. package/api.js +8 -0
  26. package/api.js.map +1 -1
  27. package/exports/infra/admin.d.ts +1 -0
  28. package/exports/infra/admin.js +1 -0
  29. package/exports/infra/admin.js.map +1 -1
  30. package/exports/infra/api.d.ts +1 -0
  31. package/exports/infra/api.js +1 -0
  32. package/exports/infra/api.js.map +1 -1
  33. package/exports/infra/core.d.ts +1 -0
  34. package/exports/infra/core.js +1 -0
  35. package/exports/infra/core.js.map +1 -1
  36. package/extensions/ApiLambdaFunction.d.ts +1 -1
  37. package/extensions/ApiLambdaFunction.js +2 -2
  38. package/extensions/ApiLambdaFunction.js.map +1 -1
  39. package/extensions/ApiRoute.d.ts +5 -5
  40. package/extensions/ApiRoute.js +2 -2
  41. package/extensions/ApiRoute.js.map +1 -1
  42. package/extensions/Cms/ModelFieldCompression.d.ts +4 -0
  43. package/extensions/Cms/ModelFieldCompression.js +23 -0
  44. package/extensions/Cms/ModelFieldCompression.js.map +1 -0
  45. package/extensions/Mailer/Smtp.d.ts +8 -0
  46. package/extensions/Mailer/Smtp.js +20 -0
  47. package/extensions/Mailer/Smtp.js.map +1 -0
  48. package/extensions/Mailer/Smtp.test.d.ts +1 -0
  49. package/extensions/Mailer/Smtp.test.js +141 -0
  50. package/extensions/Mailer/Smtp.test.js.map +1 -0
  51. package/extensions/Mailer/SmtpParamsSchema.d.ts +9 -0
  52. package/extensions/Mailer/SmtpParamsSchema.js +20 -0
  53. package/extensions/Mailer/SmtpParamsSchema.js.map +1 -0
  54. package/extensions/ProjectAws/SetDatabaseSetupOutput.d.ts +5 -3
  55. package/extensions/ProjectAws/SetDatabaseSetupOutput.js +2 -1
  56. package/extensions/ProjectAws/SetDatabaseSetupOutput.js.map +1 -1
  57. package/extensions/ProjectAws.js +1 -1
  58. package/extensions/ProjectAws.js.map +1 -1
  59. package/extensions/RegisterRoutesPulumi.d.ts +5 -3
  60. package/extensions/RegisterRoutesPulumi.js +2 -1
  61. package/extensions/RegisterRoutesPulumi.js.map +1 -1
  62. package/extensions/definitions.js +2 -1
  63. package/extensions/definitions.js.map +1 -1
  64. package/extensions/index.d.ts +1 -0
  65. package/extensions/index.js +1 -0
  66. package/extensions/index.js.map +1 -1
  67. package/infra.d.ts +9 -0
  68. package/infra.js +8 -3
  69. package/infra.js.map +1 -1
  70. package/package.json +20 -19
  71. package/pulumi/apps/admin/createAdminPulumiApp.js +3 -1
  72. package/pulumi/apps/admin/createAdminPulumiApp.js.map +1 -1
  73. package/pulumi/apps/api/ApiGateway.js +3 -0
  74. package/pulumi/apps/api/ApiGateway.js.map +1 -1
  75. package/pulumi/apps/api/createApiPulumiApp.js +3 -1
  76. package/pulumi/apps/api/createApiPulumiApp.js.map +1 -1
  77. package/pulumi/apps/blueGreen/functions/handler.js +1 -0
  78. package/pulumi/apps/blueGreen/functions/handler.js.map +1 -1
  79. package/pulumi/apps/core/CoreOpenSearch.d.ts +2 -0
  80. package/pulumi/apps/core/CoreOpenSearch.js +18 -4
  81. package/pulumi/apps/core/CoreOpenSearch.js.map +1 -1
  82. package/pulumi/apps/core/createCorePulumiApp.js +16 -2
  83. package/pulumi/apps/core/createCorePulumiApp.js.map +1 -1
  84. package/pulumi/apps/syncSystem/SyncSystemLambda.js +0 -1
  85. package/pulumi/apps/syncSystem/SyncSystemLambda.js.map +1 -1
  86. package/pulumi/extensions/AdminPulumi.d.ts +4 -0
  87. package/pulumi/extensions/AdminPulumi.js +25 -0
  88. package/pulumi/extensions/AdminPulumi.js.map +1 -0
  89. package/pulumi/extensions/ApiPulumi.d.ts +4 -0
  90. package/pulumi/extensions/ApiPulumi.js +25 -0
  91. package/pulumi/extensions/ApiPulumi.js.map +1 -0
  92. package/pulumi/extensions/CorePulumi.d.ts +4 -0
  93. package/pulumi/extensions/CorePulumi.js +25 -0
  94. package/pulumi/extensions/CorePulumi.js.map +1 -0
  95. package/pulumi/extensions/index.d.ts +8 -0
  96. package/pulumi/extensions/index.js +7 -1
  97. package/pulumi/extensions/index.js.map +1 -1
  98. package/pulumi/features/AdminPulumi/AdminPulumi.d.ts +7 -0
  99. package/pulumi/features/AdminPulumi/AdminPulumi.js +21 -0
  100. package/pulumi/features/AdminPulumi/AdminPulumi.js.map +1 -0
  101. package/pulumi/features/AdminPulumi/index.d.ts +1 -0
  102. package/pulumi/features/AdminPulumi/index.js +3 -0
  103. package/pulumi/features/AdminPulumi/index.js.map +1 -0
  104. package/pulumi/features/ApiPulumi/ApiPulumi.d.ts +7 -0
  105. package/pulumi/features/ApiPulumi/ApiPulumi.js +21 -0
  106. package/pulumi/features/ApiPulumi/ApiPulumi.js.map +1 -0
  107. package/pulumi/features/ApiPulumi/index.d.ts +1 -0
  108. package/pulumi/features/ApiPulumi/index.js +3 -0
  109. package/pulumi/features/ApiPulumi/index.js.map +1 -0
  110. package/pulumi/features/CorePulumi/CorePulumi.d.ts +7 -0
  111. package/pulumi/features/CorePulumi/CorePulumi.js +21 -0
  112. package/pulumi/features/CorePulumi/CorePulumi.js.map +1 -0
  113. package/pulumi/features/CorePulumi/index.d.ts +1 -0
  114. package/pulumi/features/CorePulumi/index.js +3 -0
  115. package/pulumi/features/CorePulumi/index.js.map +1 -0
  116. package/pulumi/features/index.d.ts +3 -0
  117. package/pulumi/features/index.js +5 -0
  118. package/pulumi/features/index.js.map +1 -0
@@ -1,3 +1,3 @@
1
- import { createAdminApp } from "@webiny/project-aws/apps";
1
+ import { createAdminApp } from "@webiny/project-aws/apps/index.js";
2
2
 
3
3
  export default createAdminApp();
@@ -1,7 +1,7 @@
1
1
  // This file is automatically updated by Webiny.
2
2
  // Learn more about extensions: https://webiny.link/extensions
3
3
 
4
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
+ // oxlint-disable-next-line typescript/no-unused-vars
5
5
  import { registerExtension } from "@webiny/project/utils/registerExtension.js";
6
6
 
7
7
  export const extensions = () => {
@@ -1,4 +1,4 @@
1
- import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb";
1
+ import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
2
  import { createHandler } from "@webiny/handler-aws";
3
3
  import graphqlPlugins from "@webiny/handler-graphql";
4
4
  import { createApiCore } from "@webiny/api-core";
@@ -21,7 +21,7 @@ import { createWebsockets } from "@webiny/api-websockets";
21
21
  import { createRecordLocking } from "@webiny/api-record-locking";
22
22
  import { createHeadlessCmsScheduler } from "@webiny/api-headless-cms-scheduler";
23
23
  import { createScheduler } from "@webiny/api-scheduler";
24
- import { createSchedulerClient } from "@webiny/aws-sdk/client-scheduler";
24
+ import { createSchedulerClient } from "@webiny/aws-sdk/client-scheduler/index.js";
25
25
  import { createMailerContext, createMailerGraphQL } from "@webiny/api-mailer";
26
26
  import { createWorkflows } from "@webiny/api-workflows";
27
27
  import { createHeadlessCmsWorkflows } from "@webiny/api-headless-cms-workflows";
@@ -1,3 +1,3 @@
1
- import { createApiApp } from "@webiny/project-aws/apps";
1
+ import { createApiApp } from "@webiny/project-aws/apps/index.js";
2
2
 
3
3
  export default createApiApp();
@@ -1,3 +1,3 @@
1
- import { createBlueGreenApp } from "@webiny/project-aws/apps";
1
+ import { createBlueGreenApp } from "@webiny/project-aws/apps/index.js";
2
2
 
3
3
  export default createBlueGreenApp();
@@ -1,3 +1,3 @@
1
- import { createCoreApp } from "@webiny/project-aws/apps";
1
+ import { createCoreApp } from "@webiny/project-aws/apps/index.js";
2
2
 
3
3
  export default createCoreApp();
@@ -1,3 +1,3 @@
1
- import { createSyncSystemPulumiApp } from "@webiny/project-aws/apps";
1
+ import { createSyncSystemPulumiApp } from "@webiny/project-aws/apps/index.js";
2
2
 
3
3
  export default createSyncSystemPulumiApp();
@@ -1,4 +1,4 @@
1
- import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb";
1
+ import { getDocumentClient } from "@webiny/aws-sdk/client-dynamodb/index.js";
2
2
  import { createHandler } from "@webiny/handler-aws";
3
3
  import graphqlPlugins from "@webiny/handler-graphql";
4
4
  import { createApiCore } from "@webiny/api-core";
@@ -14,13 +14,13 @@ import { registerCmsOpenSearchStorageOperations } from "@webiny/api-headless-cms
14
14
  import { createHcmsTasks } from "@webiny/api-headless-cms-tasks-ddb-es";
15
15
  import { createAco } from "@webiny/api-aco";
16
16
  import { createAcoHcmsContext } from "@webiny/api-headless-cms-aco";
17
- import securityPlugins from "./security";
17
+ import securityPlugins from "./security.js";
18
18
  import { createWebsiteBuilder } from "@webiny/api-website-builder";
19
19
  import { createAuditLogs } from "@webiny/api-audit-logs";
20
20
  import { createBackgroundTasks } from "@webiny/api-background-tasks-os";
21
21
  import { createWebsockets } from "@webiny/api-websockets";
22
22
  import { createRecordLocking } from "@webiny/api-record-locking";
23
- import { createSchedulerClient } from "@webiny/aws-sdk/client-scheduler";
23
+ import { createSchedulerClient } from "@webiny/aws-sdk/client-scheduler/index.js";
24
24
  import { createScheduler } from "@webiny/api-scheduler";
25
25
  import { createHeadlessCmsScheduler } from "@webiny/api-headless-cms-scheduler";
26
26
  import { createMailerContext, createMailerGraphQL } from "@webiny/api-mailer";
@@ -0,0 +1,9 @@
1
+ import type { AdminPulumiApp } from "../../../pulumi/apps/admin/createAdminPulumiApp.js";
2
+ export interface IAdminPulumi {
3
+ execute(app: AdminPulumiApp): void | Promise<void>;
4
+ }
5
+ export declare const AdminPulumi: import("@webiny/di").Abstraction<IAdminPulumi>;
6
+ export declare namespace AdminPulumi {
7
+ type Interface = IAdminPulumi;
8
+ type Params = AdminPulumiApp;
9
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/project/abstractions/createAbstraction.js";
2
+ export const AdminPulumi = createAbstraction("AdminPulumi");
3
+
4
+ //# sourceMappingURL=AdminPulumi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","AdminPulumi"],"sources":["AdminPulumi.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/project/abstractions/createAbstraction.js\";\nimport type { AdminPulumiApp } from \"~/pulumi/apps/admin/createAdminPulumiApp.js\";\n\nexport interface IAdminPulumi {\n execute(app: AdminPulumiApp): void | Promise<void>;\n}\n\nexport const AdminPulumi = createAbstraction<IAdminPulumi>(\"AdminPulumi\");\n\nexport namespace AdminPulumi {\n export type Interface = IAdminPulumi;\n export type Params = AdminPulumiApp;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,mDAAmD;AAOrF,OAAO,MAAMC,WAAW,GAAGD,iBAAiB,CAAe,aAAa,CAAC","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { ApiPulumiApp } from "../../../pulumi/apps/api/createApiPulumiApp.js";
2
+ export interface IApiPulumi {
3
+ execute(app: ApiPulumiApp): void | Promise<void>;
4
+ }
5
+ export declare const ApiPulumi: import("@webiny/di").Abstraction<IApiPulumi>;
6
+ export declare namespace ApiPulumi {
7
+ type Interface = IApiPulumi;
8
+ type Params = ApiPulumiApp;
9
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/project/abstractions/createAbstraction.js";
2
+ export const ApiPulumi = createAbstraction("ApiPulumi");
3
+
4
+ //# sourceMappingURL=ApiPulumi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","ApiPulumi"],"sources":["ApiPulumi.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/project/abstractions/createAbstraction.js\";\nimport type { ApiPulumiApp } from \"~/pulumi/apps/api/createApiPulumiApp.js\";\n\nexport interface IApiPulumi {\n execute(app: ApiPulumiApp): void | Promise<void>;\n}\n\nexport const ApiPulumi = createAbstraction<IApiPulumi>(\"ApiPulumi\");\n\nexport namespace ApiPulumi {\n export type Interface = IApiPulumi;\n export type Params = ApiPulumiApp;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,mDAAmD;AAOrF,OAAO,MAAMC,SAAS,GAAGD,iBAAiB,CAAa,WAAW,CAAC","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { CorePulumiApp } from "../../../pulumi/apps/core/createCorePulumiApp.js";
2
+ export interface ICorePulumi {
3
+ execute(app: CorePulumiApp): void | Promise<void>;
4
+ }
5
+ export declare const CorePulumi: import("@webiny/di").Abstraction<ICorePulumi>;
6
+ export declare namespace CorePulumi {
7
+ type Interface = ICorePulumi;
8
+ type Params = CorePulumiApp;
9
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/project/abstractions/createAbstraction.js";
2
+ export const CorePulumi = createAbstraction("CorePulumi");
3
+
4
+ //# sourceMappingURL=CorePulumi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","CorePulumi"],"sources":["CorePulumi.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/project/abstractions/createAbstraction.js\";\nimport type { CorePulumiApp } from \"~/pulumi/apps/core/createCorePulumiApp.js\";\n\nexport interface ICorePulumi {\n execute(app: CorePulumiApp): void | Promise<void>;\n}\n\nexport const CorePulumi = createAbstraction<ICorePulumi>(\"CorePulumi\");\n\nexport namespace CorePulumi {\n export type Interface = ICorePulumi;\n export type Params = CorePulumiApp;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,mDAAmD;AAOrF,OAAO,MAAMC,UAAU,GAAGD,iBAAiB,CAAc,YAAY,CAAC","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./CorePulumi.js";
2
+ export * from "./ApiPulumi.js";
3
+ export * from "./AdminPulumi.js";
@@ -0,0 +1,5 @@
1
+ export * from "./CorePulumi.js";
2
+ export * from "./ApiPulumi.js";
3
+ export * from "./AdminPulumi.js";
4
+
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./CorePulumi.js\";\nexport * from \"./ApiPulumi.js\";\nexport * from \"./AdminPulumi.js\";\n"],"mappings":"AAAA;AACA;AACA","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  export * from "./services/CoreStackOutputService.js";
2
2
  export * from "./services/ApiStackOutputService.js";
3
3
  export * from "./services/AdminStackOutputService.js";
4
+ export * from "./features/pulumi/index.js";
4
5
  export * from "./InvokeLambdaFunction.js";
5
6
  export * from "./ApiGqlClient.js";
@@ -1,6 +1,7 @@
1
1
  export * from "./services/CoreStackOutputService.js";
2
2
  export * from "./services/ApiStackOutputService.js";
3
3
  export * from "./services/AdminStackOutputService.js";
4
+ export * from "./features/pulumi/index.js";
4
5
  export * from "./InvokeLambdaFunction.js";
5
6
  export * from "./ApiGqlClient.js";
6
7
 
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./services/CoreStackOutputService.js\";\nexport * from \"./services/ApiStackOutputService.js\";\nexport * from \"./services/AdminStackOutputService.js\";\nexport * from \"./InvokeLambdaFunction.js\";\nexport * from \"./ApiGqlClient.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./services/CoreStackOutputService.js\";\nexport * from \"./services/ApiStackOutputService.js\";\nexport * from \"./services/AdminStackOutputService.js\";\nexport * from \"./features/pulumi/index.js\";\nexport * from \"./InvokeLambdaFunction.js\";\nexport * from \"./ApiGqlClient.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
package/api.d.ts CHANGED
@@ -6,18 +6,33 @@ export declare const Api: {
6
6
  Route: import("@webiny/project/defineExtension/defineExtension.js").ExtensionComponent<import("zod").ZodObject<{
7
7
  path: import("zod").ZodString;
8
8
  method: import("zod").ZodEnum<{
9
- DELETE: "DELETE";
10
- GET: "GET";
11
- HEAD: "HEAD";
12
- PATCH: "PATCH";
13
9
  POST: "POST";
10
+ GET: "GET";
14
11
  PUT: "PUT";
12
+ HEAD: "HEAD";
15
13
  OPTIONS: "OPTIONS";
14
+ PATCH: "PATCH";
15
+ DELETE: "DELETE";
16
16
  ANY: "ANY";
17
17
  }>;
18
18
  src: import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>;
19
19
  routeName: import("zod").ZodOptional<import("zod").ZodString>;
20
20
  }, import("zod/v4/core").$strip>>;
21
+ Mailer: {
22
+ Smtp: import("@webiny/project/defineExtension/defineExtension.js").ExtensionComponent<import("zod").ZodObject<{
23
+ host: import("zod").ZodString;
24
+ port: import("zod").ZodNumber;
25
+ user: import("zod").ZodString;
26
+ password: import("zod").ZodString;
27
+ from: import("zod").ZodString;
28
+ replyTo: import("zod").ZodOptional<import("zod").ZodString>;
29
+ }, import("zod/v4/core").$strip>>;
30
+ };
31
+ Cms: {
32
+ ModelFieldCompression: import("@webiny/project/defineExtension/defineExtension.js").ExtensionComponent<import("zod").ZodObject<{
33
+ enabled: import("zod").ZodBoolean;
34
+ }, import("zod/v4/core").$strip>>;
35
+ };
21
36
  BuildParam: import("@webiny/project/defineExtension/defineExtension.js").ExtensionComponent<import("zod").ZodObject<{
22
37
  paramName: import("zod").ZodString;
23
38
  value: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>, import("zod").ZodArray<import("zod").ZodAny>, import("zod").ZodNumber, import("zod").ZodBoolean]>;
package/api.js CHANGED
@@ -1,8 +1,16 @@
1
1
  import { ApiExtension, BuildParam } from "@webiny/project/extensions/index.js";
2
2
  import { ApiRoute } from "./extensions/ApiRoute.js";
3
+ import { Smtp as MailerSmtp } from "./extensions/Mailer/Smtp.js";
4
+ import { ModelFieldCompression as CmsModelFieldCompression } from "./extensions/Cms/ModelFieldCompression.js";
3
5
  export const Api = {
4
6
  Extension: ApiExtension,
5
7
  Route: ApiRoute,
8
+ Mailer: {
9
+ Smtp: MailerSmtp
10
+ },
11
+ Cms: {
12
+ ModelFieldCompression: CmsModelFieldCompression
13
+ },
6
14
  BuildParam: BuildParam
7
15
  };
8
16
 
package/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ApiExtension","BuildParam","ApiRoute","Api","Extension","Route"],"sources":["api.ts"],"sourcesContent":["import { ApiExtension, BuildParam } from \"@webiny/project/extensions/index.js\";\nimport { ApiRoute } from \"./extensions/ApiRoute.js\";\n\nexport const Api = {\n Extension: ApiExtension,\n Route: ApiRoute,\n BuildParam: BuildParam\n};\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,UAAU,QAAQ,qCAAqC;AAC9E,SAASC,QAAQ;AAEjB,OAAO,MAAMC,GAAG,GAAG;EACfC,SAAS,EAAEJ,YAAY;EACvBK,KAAK,EAAEH,QAAQ;EACfD,UAAU,EAAEA;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ApiExtension","BuildParam","ApiRoute","Smtp","MailerSmtp","ModelFieldCompression","CmsModelFieldCompression","Api","Extension","Route","Mailer","Cms"],"sources":["api.ts"],"sourcesContent":["import { ApiExtension, BuildParam } from \"@webiny/project/extensions/index.js\";\nimport { ApiRoute } from \"./extensions/ApiRoute.js\";\nimport { Smtp as MailerSmtp } from \"./extensions/Mailer/Smtp.js\";\nimport { ModelFieldCompression as CmsModelFieldCompression } from \"./extensions/Cms/ModelFieldCompression.js\";\n\nexport const Api = {\n Extension: ApiExtension,\n Route: ApiRoute,\n Mailer: {\n Smtp: MailerSmtp\n },\n Cms: {\n ModelFieldCompression: CmsModelFieldCompression\n },\n BuildParam: BuildParam\n};\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,UAAU,QAAQ,qCAAqC;AAC9E,SAASC,QAAQ;AACjB,SAASC,IAAI,IAAIC,UAAU;AAC3B,SAASC,qBAAqB,IAAIC,wBAAwB;AAE1D,OAAO,MAAMC,GAAG,GAAG;EACfC,SAAS,EAAER,YAAY;EACvBS,KAAK,EAAEP,QAAQ;EACfQ,MAAM,EAAE;IACJP,IAAI,EAAEC;EACV,CAAC;EACDO,GAAG,EAAE;IACDN,qBAAqB,EAAEC;EAC3B,CAAC;EACDL,UAAU,EAAEA;AAChB,CAAC","ignoreList":[]}
@@ -1 +1,2 @@
1
+ export { AdminPulumi } from "../../abstractions/features/pulumi/AdminPulumi.js";
1
2
  export { AdminStackOutputService as GetAdminStackOutput } from "../../abstractions/services/AdminStackOutputService.js";
@@ -1,3 +1,4 @@
1
+ export { AdminPulumi } from "../../abstractions/features/pulumi/AdminPulumi.js";
1
2
  export { AdminStackOutputService as GetAdminStackOutput } from "../../abstractions/services/AdminStackOutputService.js";
2
3
 
3
4
  //# sourceMappingURL=admin.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AdminStackOutputService","GetAdminStackOutput"],"sources":["admin.ts"],"sourcesContent":["export { AdminStackOutputService as GetAdminStackOutput } from \"~/abstractions/services/AdminStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,uBAAuB,IAAIC,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":["AdminPulumi","AdminStackOutputService","GetAdminStackOutput"],"sources":["admin.ts"],"sourcesContent":["export { AdminPulumi } from \"~/abstractions/features/pulumi/AdminPulumi.js\";\nexport { AdminStackOutputService as GetAdminStackOutput } from \"~/abstractions/services/AdminStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,WAAW;AACpB,SAASC,uBAAuB,IAAIC,mBAAmB","ignoreList":[]}
@@ -1 +1,2 @@
1
+ export { ApiPulumi } from "../../abstractions/features/pulumi/ApiPulumi.js";
1
2
  export { ApiStackOutputService as GetApiStackOutput } from "../../abstractions/services/ApiStackOutputService.js";
@@ -1,3 +1,4 @@
1
+ export { ApiPulumi } from "../../abstractions/features/pulumi/ApiPulumi.js";
1
2
  export { ApiStackOutputService as GetApiStackOutput } from "../../abstractions/services/ApiStackOutputService.js";
2
3
 
3
4
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ApiStackOutputService","GetApiStackOutput"],"sources":["api.ts"],"sourcesContent":["export { ApiStackOutputService as GetApiStackOutput } from \"~/abstractions/services/ApiStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,qBAAqB,IAAIC,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["ApiPulumi","ApiStackOutputService","GetApiStackOutput"],"sources":["api.ts"],"sourcesContent":["export { ApiPulumi } from \"~/abstractions/features/pulumi/ApiPulumi.js\";\nexport { ApiStackOutputService as GetApiStackOutput } from \"~/abstractions/services/ApiStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,SAASC,qBAAqB,IAAIC,iBAAiB","ignoreList":[]}
@@ -1 +1,2 @@
1
+ export { CorePulumi } from "../../abstractions/features/pulumi/CorePulumi.js";
1
2
  export { CoreStackOutputService as GetCoreStackOutput } from "../../abstractions/services/CoreStackOutputService.js";
@@ -1,3 +1,4 @@
1
+ export { CorePulumi } from "../../abstractions/features/pulumi/CorePulumi.js";
1
2
  export { CoreStackOutputService as GetCoreStackOutput } from "../../abstractions/services/CoreStackOutputService.js";
2
3
 
3
4
  //# sourceMappingURL=core.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CoreStackOutputService","GetCoreStackOutput"],"sources":["core.ts"],"sourcesContent":["export { CoreStackOutputService as GetCoreStackOutput } from \"~/abstractions/services/CoreStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,sBAAsB,IAAIC,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["CorePulumi","CoreStackOutputService","GetCoreStackOutput"],"sources":["core.ts"],"sourcesContent":["export { CorePulumi } from \"~/abstractions/features/pulumi/CorePulumi.js\";\nexport { CoreStackOutputService as GetCoreStackOutput } from \"~/abstractions/services/CoreStackOutputService.js\";\n"],"mappings":"AAAA,SAASA,UAAU;AACnB,SAASC,sBAAsB,IAAIC,kBAAkB","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- export declare const ApiLambdaFunction: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
2
+ export declare const ApiLambdaFunction: import("@webiny/project/extensions").ExtensionComponent<z.ZodObject<{
3
3
  functionSrc: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
4
  pulumiSrc: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
5
5
  }, z.core.$strip>>;
@@ -6,8 +6,8 @@ import { replaceInPath } from "replace-in-path";
6
6
  import { defineExtension } from "@webiny/project/defineExtension/index.js";
7
7
  import { zodSrcPath } from "@webiny/project/defineExtension/zodTypes/zodSrcPath.js";
8
8
  import { ExtensionSrcResolver } from "@webiny/project/utils/index.js";
9
- import { ApiPulumi as ApiPulumiAbstraction } from "@webiny/project/abstractions/features/pulumi/index.js";
10
- import { ApiPulumi } from "@webiny/project/extensions/index.js";
9
+ import { ApiPulumi as ApiPulumiAbstraction } from "../abstractions/features/pulumi/index.js";
10
+ import { ApiPulumi } from "../pulumi/extensions/ApiPulumi.js";
11
11
  import { getTemplatesFolderPath } from "../utils/index.js";
12
12
  export const ApiLambdaFunction = defineExtension({
13
13
  type: "Api/LambdaFunction",
@@ -1 +1 @@
1
- {"version":3,"names":["React","path","fs","z","replaceInPath","defineExtension","zodSrcPath","ExtensionSrcResolver","ApiPulumi","ApiPulumiAbstraction","getTemplatesFolderPath","ApiLambdaFunction","type","tags","runtimeContext","appName","description","multiple","paramsSchema","project","object","functionSrc","pulumiSrc","abstraction","build","params","ctx","absoluteFunctionSrc","resolvePath","functionName","parse","name","fnWorkspacePath","paths","workspaceFolder","join","toString","existsSync","templatePath","cpSync","recursive","find","replaceWith","srcDir","mkdirSync","copyFileSync","render","props","createElement","src"],"sources":["ApiLambdaFunction.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { z } from \"zod\";\nimport { replaceInPath } from \"replace-in-path\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { zodSrcPath } from \"@webiny/project/defineExtension/zodTypes/zodSrcPath.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project/utils/index.js\";\nimport { ApiPulumi as ApiPulumiAbstraction } from \"@webiny/project/abstractions/features/pulumi/index.js\";\nimport { ApiPulumi } from \"@webiny/project/extensions/index.js\";\nimport { getTemplatesFolderPath } from \"~/utils/index.js\";\n\nexport const ApiLambdaFunction = defineExtension({\n type: \"Api/LambdaFunction\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Add a custom Lambda function to the API app.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n functionSrc: zodSrcPath({ project }),\n pulumiSrc: zodSrcPath({ project, abstraction: ApiPulumiAbstraction })\n });\n },\n async build(params, ctx) {\n const absoluteFunctionSrc = ExtensionSrcResolver.resolvePath(\n params.functionSrc,\n ctx.project\n );\n\n // Derive function name from the handler file name (without extension).\n const functionName = path.parse(absoluteFunctionSrc).name;\n\n const fnWorkspacePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", functionName)\n .toString();\n\n // 1. Scaffold from template if the folder doesn't exist yet.\n if (!fs.existsSync(fnWorkspacePath)) {\n const templatePath = path.join(\n getTemplatesFolderPath(),\n \"extensions\",\n \"ApiLambdaFunction\"\n );\n\n fs.cpSync(templatePath, fnWorkspacePath, { recursive: true });\n\n // Replace the {{functionName}} placeholder in package.json.\n replaceInPath(path.join(fnWorkspacePath, \"package.json\"), {\n find: \"{{functionName}}\",\n replaceWith: functionName\n });\n }\n\n // 2. Copy user's handler file → <functionName>/src/index.ts.\n const srcDir = path.join(fnWorkspacePath, \"src\");\n fs.mkdirSync(srcDir, { recursive: true });\n fs.copyFileSync(absoluteFunctionSrc, path.join(srcDir, \"index.ts\"));\n },\n render(props) {\n return <ApiPulumi src={props.pulumiSrc} />;\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,IAAI,MAAM,MAAM;AACvB,OAAOC,EAAE,MAAM,IAAI;AACnB,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,UAAU,QAAQ,wDAAwD;AACnF,SAASC,oBAAoB,QAAQ,gCAAgC;AACrE,SAASC,SAAS,IAAIC,oBAAoB,QAAQ,uDAAuD;AACzG,SAASD,SAAS,QAAQ,qCAAqC;AAC/D,SAASE,sBAAsB;AAE/B,OAAO,MAAMC,iBAAiB,GAAGN,eAAe,CAAC;EAC7CO,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAE;IAAEC,cAAc,EAAE,WAAW;IAAEC,OAAO,EAAE;EAAM,CAAC;EACrDC,WAAW,EAAE,8CAA8C;EAC3DC,QAAQ,EAAE,IAAI;EACdC,YAAY,EAAEA,CAAC;IAAEC;EAAQ,CAAC,KAAK;IAC3B,OAAOhB,CAAC,CAACiB,MAAM,CAAC;MACZC,WAAW,EAAEf,UAAU,CAAC;QAAEa;MAAQ,CAAC,CAAC;MACpCG,SAAS,EAAEhB,UAAU,CAAC;QAAEa,OAAO;QAAEI,WAAW,EAAEd;MAAqB,CAAC;IACxE,CAAC,CAAC;EACN,CAAC;EACD,MAAMe,KAAKA,CAACC,MAAM,EAAEC,GAAG,EAAE;IACrB,MAAMC,mBAAmB,GAAGpB,oBAAoB,CAACqB,WAAW,CACxDH,MAAM,CAACJ,WAAW,EAClBK,GAAG,CAACP,OACR,CAAC;;IAED;IACA,MAAMU,YAAY,GAAG5B,IAAI,CAAC6B,KAAK,CAACH,mBAAmB,CAAC,CAACI,IAAI;IAEzD,MAAMC,eAAe,GAAGN,GAAG,CAACP,OAAO,CAACc,KAAK,CAACC,eAAe,CACpDC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAEN,YAAY,CAAC,CACjCO,QAAQ,CAAC,CAAC;;IAEf;IACA,IAAI,CAAClC,EAAE,CAACmC,UAAU,CAACL,eAAe,CAAC,EAAE;MACjC,MAAMM,YAAY,GAAGrC,IAAI,CAACkC,IAAI,CAC1BzB,sBAAsB,CAAC,CAAC,EACxB,YAAY,EACZ,mBACJ,CAAC;MAEDR,EAAE,CAACqC,MAAM,CAACD,YAAY,EAAEN,eAAe,EAAE;QAAEQ,SAAS,EAAE;MAAK,CAAC,CAAC;;MAE7D;MACApC,aAAa,CAACH,IAAI,CAACkC,IAAI,CAACH,eAAe,EAAE,cAAc,CAAC,EAAE;QACtDS,IAAI,EAAE,kBAAkB;QACxBC,WAAW,EAAEb;MACjB,CAAC,CAAC;IACN;;IAEA;IACA,MAAMc,MAAM,GAAG1C,IAAI,CAACkC,IAAI,CAACH,eAAe,EAAE,KAAK,CAAC;IAChD9B,EAAE,CAAC0C,SAAS,CAACD,MAAM,EAAE;MAAEH,SAAS,EAAE;IAAK,CAAC,CAAC;IACzCtC,EAAE,CAAC2C,YAAY,CAAClB,mBAAmB,EAAE1B,IAAI,CAACkC,IAAI,CAACQ,MAAM,EAAE,UAAU,CAAC,CAAC;EACvE,CAAC;EACDG,MAAMA,CAACC,KAAK,EAAE;IACV,oBAAO/C,KAAA,CAAAgD,aAAA,CAACxC,SAAS;MAACyC,GAAG,EAAEF,KAAK,CAACzB;IAAU,CAAE,CAAC;EAC9C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","path","fs","z","replaceInPath","defineExtension","zodSrcPath","ExtensionSrcResolver","ApiPulumi","ApiPulumiAbstraction","getTemplatesFolderPath","ApiLambdaFunction","type","tags","runtimeContext","appName","description","multiple","paramsSchema","project","object","functionSrc","pulumiSrc","abstraction","build","params","ctx","absoluteFunctionSrc","resolvePath","functionName","parse","name","fnWorkspacePath","paths","workspaceFolder","join","toString","existsSync","templatePath","cpSync","recursive","find","replaceWith","srcDir","mkdirSync","copyFileSync","render","props","createElement","src"],"sources":["ApiLambdaFunction.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { z } from \"zod\";\nimport { replaceInPath } from \"replace-in-path\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { zodSrcPath } from \"@webiny/project/defineExtension/zodTypes/zodSrcPath.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project/utils/index.js\";\nimport { ApiPulumi as ApiPulumiAbstraction } from \"~/abstractions/features/pulumi/index.js\";\nimport { ApiPulumi } from \"~/pulumi/extensions/ApiPulumi.js\";\nimport { getTemplatesFolderPath } from \"~/utils/index.js\";\n\nexport const ApiLambdaFunction = defineExtension({\n type: \"Api/LambdaFunction\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Add a custom Lambda function to the API app.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n functionSrc: zodSrcPath({ project }),\n pulumiSrc: zodSrcPath({ project, abstraction: ApiPulumiAbstraction })\n });\n },\n async build(params, ctx) {\n const absoluteFunctionSrc = ExtensionSrcResolver.resolvePath(\n params.functionSrc,\n ctx.project\n );\n\n // Derive function name from the handler file name (without extension).\n const functionName = path.parse(absoluteFunctionSrc).name;\n\n const fnWorkspacePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", functionName)\n .toString();\n\n // 1. Scaffold from template if the folder doesn't exist yet.\n if (!fs.existsSync(fnWorkspacePath)) {\n const templatePath = path.join(\n getTemplatesFolderPath(),\n \"extensions\",\n \"ApiLambdaFunction\"\n );\n\n fs.cpSync(templatePath, fnWorkspacePath, { recursive: true });\n\n // Replace the {{functionName}} placeholder in package.json.\n replaceInPath(path.join(fnWorkspacePath, \"package.json\"), {\n find: \"{{functionName}}\",\n replaceWith: functionName\n });\n }\n\n // 2. Copy user's handler file → <functionName>/src/index.ts.\n const srcDir = path.join(fnWorkspacePath, \"src\");\n fs.mkdirSync(srcDir, { recursive: true });\n fs.copyFileSync(absoluteFunctionSrc, path.join(srcDir, \"index.ts\"));\n },\n render(props) {\n return <ApiPulumi src={props.pulumiSrc} />;\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,IAAI,MAAM,MAAM;AACvB,OAAOC,EAAE,MAAM,IAAI;AACnB,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,UAAU,QAAQ,wDAAwD;AACnF,SAASC,oBAAoB,QAAQ,gCAAgC;AACrE,SAASC,SAAS,IAAIC,oBAAoB;AAC1C,SAASD,SAAS;AAClB,SAASE,sBAAsB;AAE/B,OAAO,MAAMC,iBAAiB,GAAGN,eAAe,CAAC;EAC7CO,IAAI,EAAE,oBAAoB;EAC1BC,IAAI,EAAE;IAAEC,cAAc,EAAE,WAAW;IAAEC,OAAO,EAAE;EAAM,CAAC;EACrDC,WAAW,EAAE,8CAA8C;EAC3DC,QAAQ,EAAE,IAAI;EACdC,YAAY,EAAEA,CAAC;IAAEC;EAAQ,CAAC,KAAK;IAC3B,OAAOhB,CAAC,CAACiB,MAAM,CAAC;MACZC,WAAW,EAAEf,UAAU,CAAC;QAAEa;MAAQ,CAAC,CAAC;MACpCG,SAAS,EAAEhB,UAAU,CAAC;QAAEa,OAAO;QAAEI,WAAW,EAAEd;MAAqB,CAAC;IACxE,CAAC,CAAC;EACN,CAAC;EACD,MAAMe,KAAKA,CAACC,MAAM,EAAEC,GAAG,EAAE;IACrB,MAAMC,mBAAmB,GAAGpB,oBAAoB,CAACqB,WAAW,CACxDH,MAAM,CAACJ,WAAW,EAClBK,GAAG,CAACP,OACR,CAAC;;IAED;IACA,MAAMU,YAAY,GAAG5B,IAAI,CAAC6B,KAAK,CAACH,mBAAmB,CAAC,CAACI,IAAI;IAEzD,MAAMC,eAAe,GAAGN,GAAG,CAACP,OAAO,CAACc,KAAK,CAACC,eAAe,CACpDC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAEN,YAAY,CAAC,CACjCO,QAAQ,CAAC,CAAC;;IAEf;IACA,IAAI,CAAClC,EAAE,CAACmC,UAAU,CAACL,eAAe,CAAC,EAAE;MACjC,MAAMM,YAAY,GAAGrC,IAAI,CAACkC,IAAI,CAC1BzB,sBAAsB,CAAC,CAAC,EACxB,YAAY,EACZ,mBACJ,CAAC;MAEDR,EAAE,CAACqC,MAAM,CAACD,YAAY,EAAEN,eAAe,EAAE;QAAEQ,SAAS,EAAE;MAAK,CAAC,CAAC;;MAE7D;MACApC,aAAa,CAACH,IAAI,CAACkC,IAAI,CAACH,eAAe,EAAE,cAAc,CAAC,EAAE;QACtDS,IAAI,EAAE,kBAAkB;QACxBC,WAAW,EAAEb;MACjB,CAAC,CAAC;IACN;;IAEA;IACA,MAAMc,MAAM,GAAG1C,IAAI,CAACkC,IAAI,CAACH,eAAe,EAAE,KAAK,CAAC;IAChD9B,EAAE,CAAC0C,SAAS,CAACD,MAAM,EAAE;MAAEH,SAAS,EAAE;IAAK,CAAC,CAAC;IACzCtC,EAAE,CAAC2C,YAAY,CAAClB,mBAAmB,EAAE1B,IAAI,CAACkC,IAAI,CAACQ,MAAM,EAAE,UAAU,CAAC,CAAC;EACvE,CAAC;EACDG,MAAMA,CAACC,KAAK,EAAE;IACV,oBAAO/C,KAAA,CAAAgD,aAAA,CAACxC,SAAS;MAACyC,GAAG,EAAEF,KAAK,CAACzB;IAAU,CAAE,CAAC;EAC9C;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,14 @@
1
1
  import { z } from "zod";
2
- export declare const ApiRoute: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
2
+ export declare const ApiRoute: import("@webiny/project/extensions").ExtensionComponent<z.ZodObject<{
3
3
  path: z.ZodString;
4
4
  method: z.ZodEnum<{
5
- DELETE: "DELETE";
6
- GET: "GET";
7
- HEAD: "HEAD";
8
- PATCH: "PATCH";
9
5
  POST: "POST";
6
+ GET: "GET";
10
7
  PUT: "PUT";
8
+ HEAD: "HEAD";
11
9
  OPTIONS: "OPTIONS";
10
+ PATCH: "PATCH";
11
+ DELETE: "DELETE";
12
12
  ANY: "ANY";
13
13
  }>;
14
14
  src: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
@@ -6,7 +6,7 @@ import { Node, Project } from "ts-morph";
6
6
  import { defineExtension } from "@webiny/project/defineExtension/index.js";
7
7
  import { zodSrcPath } from "@webiny/project/defineExtension/zodTypes/zodSrcPath.js";
8
8
  import { ExtensionSrcResolver } from "@webiny/project/utils/index.js";
9
- import { ApiPulumi } from "@webiny/project/extensions/index.js";
9
+ import { ApiPulumi } from "../pulumi/extensions/ApiPulumi.js";
10
10
  import { createPathResolver } from "@webiny/project";
11
11
  const p = createPathResolver(import.meta.dirname);
12
12
  const HTTP_METHODS = ["DELETE", "GET", "HEAD", "PATCH", "POST", "PUT", "OPTIONS", "ANY"];
@@ -70,7 +70,7 @@ export const ApiRoute = defineExtension({
70
70
  });
71
71
 
72
72
  // Ensure createContextPlugin import exists.
73
- const ctxPluginPath = "@webiny/api/plugins/ContextPlugin";
73
+ const ctxPluginPath = "@webiny/api/plugins/ContextPlugin.js";
74
74
  if (!source.getImportDeclaration(ctxPluginPath)) {
75
75
  const lastIdx = source.getImportDeclarations()[source.getImportDeclarations().length - 1].getChildIndex() + 1;
76
76
  source.insertImportDeclaration(lastIdx, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","path","crypto","z","Node","Project","defineExtension","zodSrcPath","ExtensionSrcResolver","ApiPulumi","createPathResolver","p","import","meta","dirname","HTTP_METHODS","METHOD_HANDLER","DELETE","GET","HEAD","PATCH","POST","PUT","OPTIONS","ANY","ApiRoute","type","tags","runtimeContext","appName","description","multiple","paramsSchema","project","object","string","startsWith","method","enum","src","routeName","optional","build","params","ctx","extensionsTsFilePath","paths","workspaceFolder","join","toString","absoluteSrcFilePath","resolvePath","hash","createHash","update","digest","alias","slice","importPath","relative","replace","tsProject","addSourceFileAtPath","source","getSourceFileOrThrow","getImportDeclaration","insertIndex","importDeclarations","getImportDeclarations","length","getChildIndex","insertImportDeclaration","defaultImport","moduleSpecifier","ctxPluginPath","lastIdx","namedImports","handlerImportPath","existingHandlerImport","requiredHandlerImports","present","getNamedImports","map","i","getName","name","includes","addNamedImport","onMethod","routePath","pluginsArray","getFirstDescendant","node","isArrayLiteralExpression","addElement","save","render","createElement"],"sources":["ApiRoute.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport crypto from \"crypto\";\nimport { z } from \"zod\";\nimport { Node, Project, ArrayLiteralExpression } from \"ts-morph\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { zodSrcPath } from \"@webiny/project/defineExtension/zodTypes/zodSrcPath.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project/utils/index.js\";\nimport { ApiPulumi } from \"@webiny/project/extensions/index.js\";\nimport { createPathResolver } from \"@webiny/project\";\n\nconst p = createPathResolver(import.meta.dirname);\n\nconst HTTP_METHODS = [\"DELETE\", \"GET\", \"HEAD\", \"PATCH\", \"POST\", \"PUT\", \"OPTIONS\", \"ANY\"] as const;\n\nconst METHOD_HANDLER: Record<string, string> = {\n DELETE: \"onDelete\",\n GET: \"onGet\",\n HEAD: \"onHead\",\n PATCH: \"onPatch\",\n POST: \"onPost\",\n PUT: \"onPut\",\n OPTIONS: \"onOptions\",\n ANY: \"onAll\"\n};\n\nexport const ApiRoute = defineExtension({\n type: \"Api/Route\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Register a custom REST route on the API Gateway + GraphQL Lambda.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n path: z.string().startsWith(\"/\"),\n method: z.enum(HTTP_METHODS),\n // TODO: add zodSrcPath abstraction validation once Route abstraction is wired to zodSrcPath.\n src: zodSrcPath({ project }),\n routeName: z.string().optional()\n });\n },\n async build(params, ctx) {\n const extensionsTsFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"extensions.ts\")\n .toString();\n\n const absoluteSrcFilePath = ExtensionSrcResolver.resolvePath(params.src, ctx.project);\n\n // Stable alias to avoid naming conflicts across multiple routes.\n const hash = crypto.createHash(\"sha256\").update(params.src).digest(\"hex\");\n const alias = `ApiRoute_${hash.slice(-10)}`;\n\n const importPath = path\n .relative(path.dirname(extensionsTsFilePath), absoluteSrcFilePath)\n .replace(/\\.tsx?$/, \".js\");\n\n const tsProject = new Project();\n tsProject.addSourceFileAtPath(extensionsTsFilePath);\n const source = tsProject.getSourceFileOrThrow(extensionsTsFilePath);\n\n // Skip if the route handler is already registered.\n if (source.getImportDeclaration(importPath)) {\n return;\n }\n\n // Insert handler import after the last existing import.\n let insertIndex = 1;\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n insertIndex = importDeclarations[importDeclarations.length - 1].getChildIndex() + 1;\n }\n\n source.insertImportDeclaration(insertIndex, {\n defaultImport: alias,\n moduleSpecifier: importPath\n });\n\n // Ensure createContextPlugin import exists.\n const ctxPluginPath = \"@webiny/api/plugins/ContextPlugin\";\n if (!source.getImportDeclaration(ctxPluginPath)) {\n const lastIdx =\n source\n .getImportDeclarations()\n [source.getImportDeclarations().length - 1].getChildIndex() + 1;\n source.insertImportDeclaration(lastIdx, {\n namedImports: [\"createContextPlugin\"],\n moduleSpecifier: ctxPluginPath\n });\n }\n\n // Ensure createRoute and Route are imported from @webiny/handler.\n const handlerImportPath = \"@webiny/handler\";\n const existingHandlerImport = source.getImportDeclaration(handlerImportPath);\n const requiredHandlerImports = [\"createRoute\", \"Route\"];\n if (!existingHandlerImport) {\n const lastIdx =\n source\n .getImportDeclarations()\n [source.getImportDeclarations().length - 1].getChildIndex() + 1;\n source.insertImportDeclaration(lastIdx, {\n namedImports: requiredHandlerImports,\n moduleSpecifier: handlerImportPath\n });\n } else {\n const present = existingHandlerImport.getNamedImports().map(i => i.getName());\n for (const name of requiredHandlerImports) {\n if (!present.includes(name)) {\n existingHandlerImport.addNamedImport(name);\n }\n }\n }\n\n const onMethod = METHOD_HANDLER[params.method];\n const routePath = params.path as `/${string}`;\n\n const pluginsArray = source.getFirstDescendant(node =>\n Node.isArrayLiteralExpression(node)\n ) as ArrayLiteralExpression;\n\n // Register factory in DI container.\n pluginsArray.addElement(\n `\\ncreateContextPlugin(ctx => {\\n\\tregisterExtension(ctx.container, ${alias});\\n})`\n );\n\n // Register Fastify route with hardcoded path/method.\n // We use resolveAll(Route) + instanceof to find the correct handler when multiple\n // Api.Route extensions are registered.\n pluginsArray.addElement(\n `\\ncreateRoute(({ ${onMethod}, context }) => {\\n` +\n `\\t${onMethod}(\"${routePath}\", async (request, reply) => {\\n` +\n `\\t\\tconst instance = context.container.resolveAll(Route).find(i => i instanceof ${alias})!;\\n` +\n `\\t\\treturn instance.execute(request, reply);\\n` +\n `\\t});\\n` +\n `})`\n );\n\n await source.save();\n },\n render() {\n return <ApiPulumi src={p(\"RegisterRoutesPulumi.js\")} />;\n }\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","path","crypto","z","Node","Project","defineExtension","zodSrcPath","ExtensionSrcResolver","ApiPulumi","createPathResolver","p","import","meta","dirname","HTTP_METHODS","METHOD_HANDLER","DELETE","GET","HEAD","PATCH","POST","PUT","OPTIONS","ANY","ApiRoute","type","tags","runtimeContext","appName","description","multiple","paramsSchema","project","object","string","startsWith","method","enum","src","routeName","optional","build","params","ctx","extensionsTsFilePath","paths","workspaceFolder","join","toString","absoluteSrcFilePath","resolvePath","hash","createHash","update","digest","alias","slice","importPath","relative","replace","tsProject","addSourceFileAtPath","source","getSourceFileOrThrow","getImportDeclaration","insertIndex","importDeclarations","getImportDeclarations","length","getChildIndex","insertImportDeclaration","defaultImport","moduleSpecifier","ctxPluginPath","lastIdx","namedImports","handlerImportPath","existingHandlerImport","requiredHandlerImports","present","getNamedImports","map","i","getName","name","includes","addNamedImport","onMethod","routePath","pluginsArray","getFirstDescendant","node","isArrayLiteralExpression","addElement","save","render","createElement"],"sources":["ApiRoute.tsx"],"sourcesContent":["import React from \"react\";\nimport path from \"path\";\nimport crypto from \"crypto\";\nimport { z } from \"zod\";\nimport { Node, Project, ArrayLiteralExpression } from \"ts-morph\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { zodSrcPath } from \"@webiny/project/defineExtension/zodTypes/zodSrcPath.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project/utils/index.js\";\nimport { ApiPulumi } from \"~/pulumi/extensions/ApiPulumi.js\";\nimport { createPathResolver } from \"@webiny/project\";\n\nconst p = createPathResolver(import.meta.dirname);\n\nconst HTTP_METHODS = [\"DELETE\", \"GET\", \"HEAD\", \"PATCH\", \"POST\", \"PUT\", \"OPTIONS\", \"ANY\"] as const;\n\nconst METHOD_HANDLER: Record<string, string> = {\n DELETE: \"onDelete\",\n GET: \"onGet\",\n HEAD: \"onHead\",\n PATCH: \"onPatch\",\n POST: \"onPost\",\n PUT: \"onPut\",\n OPTIONS: \"onOptions\",\n ANY: \"onAll\"\n};\n\nexport const ApiRoute = defineExtension({\n type: \"Api/Route\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Register a custom REST route on the API Gateway + GraphQL Lambda.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n path: z.string().startsWith(\"/\"),\n method: z.enum(HTTP_METHODS),\n // TODO: add zodSrcPath abstraction validation once Route abstraction is wired to zodSrcPath.\n src: zodSrcPath({ project }),\n routeName: z.string().optional()\n });\n },\n async build(params, ctx) {\n const extensionsTsFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"extensions.ts\")\n .toString();\n\n const absoluteSrcFilePath = ExtensionSrcResolver.resolvePath(params.src, ctx.project);\n\n // Stable alias to avoid naming conflicts across multiple routes.\n const hash = crypto.createHash(\"sha256\").update(params.src).digest(\"hex\");\n const alias = `ApiRoute_${hash.slice(-10)}`;\n\n const importPath = path\n .relative(path.dirname(extensionsTsFilePath), absoluteSrcFilePath)\n .replace(/\\.tsx?$/, \".js\");\n\n const tsProject = new Project();\n tsProject.addSourceFileAtPath(extensionsTsFilePath);\n const source = tsProject.getSourceFileOrThrow(extensionsTsFilePath);\n\n // Skip if the route handler is already registered.\n if (source.getImportDeclaration(importPath)) {\n return;\n }\n\n // Insert handler import after the last existing import.\n let insertIndex = 1;\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n insertIndex = importDeclarations[importDeclarations.length - 1].getChildIndex() + 1;\n }\n\n source.insertImportDeclaration(insertIndex, {\n defaultImport: alias,\n moduleSpecifier: importPath\n });\n\n // Ensure createContextPlugin import exists.\n const ctxPluginPath = \"@webiny/api/plugins/ContextPlugin.js\";\n if (!source.getImportDeclaration(ctxPluginPath)) {\n const lastIdx =\n source\n .getImportDeclarations()\n [source.getImportDeclarations().length - 1].getChildIndex() + 1;\n source.insertImportDeclaration(lastIdx, {\n namedImports: [\"createContextPlugin\"],\n moduleSpecifier: ctxPluginPath\n });\n }\n\n // Ensure createRoute and Route are imported from @webiny/handler.\n const handlerImportPath = \"@webiny/handler\";\n const existingHandlerImport = source.getImportDeclaration(handlerImportPath);\n const requiredHandlerImports = [\"createRoute\", \"Route\"];\n if (!existingHandlerImport) {\n const lastIdx =\n source\n .getImportDeclarations()\n [source.getImportDeclarations().length - 1].getChildIndex() + 1;\n source.insertImportDeclaration(lastIdx, {\n namedImports: requiredHandlerImports,\n moduleSpecifier: handlerImportPath\n });\n } else {\n const present = existingHandlerImport.getNamedImports().map(i => i.getName());\n for (const name of requiredHandlerImports) {\n if (!present.includes(name)) {\n existingHandlerImport.addNamedImport(name);\n }\n }\n }\n\n const onMethod = METHOD_HANDLER[params.method];\n const routePath = params.path as `/${string}`;\n\n const pluginsArray = source.getFirstDescendant(node =>\n Node.isArrayLiteralExpression(node)\n ) as ArrayLiteralExpression;\n\n // Register factory in DI container.\n pluginsArray.addElement(\n `\\ncreateContextPlugin(ctx => {\\n\\tregisterExtension(ctx.container, ${alias});\\n})`\n );\n\n // Register Fastify route with hardcoded path/method.\n // We use resolveAll(Route) + instanceof to find the correct handler when multiple\n // Api.Route extensions are registered.\n pluginsArray.addElement(\n `\\ncreateRoute(({ ${onMethod}, context }) => {\\n` +\n `\\t${onMethod}(\"${routePath}\", async (request, reply) => {\\n` +\n `\\t\\tconst instance = context.container.resolveAll(Route).find(i => i instanceof ${alias})!;\\n` +\n `\\t\\treturn instance.execute(request, reply);\\n` +\n `\\t});\\n` +\n `})`\n );\n\n await source.save();\n },\n render() {\n return <ApiPulumi src={p(\"RegisterRoutesPulumi.js\")} />;\n }\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export declare const ModelFieldCompression: import("@webiny/project/defineExtension/defineExtension").ExtensionComponent<z.ZodObject<{
3
+ enabled: z.ZodBoolean;
4
+ }, z.core.$strip>>;
@@ -0,0 +1,23 @@
1
+ import React from "react";
2
+ import { z } from "zod";
3
+ import { defineExtension } from "@webiny/project/defineExtension/index.js";
4
+ import { BuildParam } from "@webiny/project/extensions/index.js";
5
+ const paramsSchema = z.object({
6
+ enabled: z.boolean().describe("Enable compression of model fields before storing in the database.")
7
+ });
8
+ export const ModelFieldCompression = defineExtension({
9
+ type: "Api/Cms/ModelFieldCompression",
10
+ tags: {
11
+ runtimeContext: "project"
12
+ },
13
+ description: "Enable or disable compression of Headless CMS model fields at the database storage level.",
14
+ paramsSchema,
15
+ render(params) {
16
+ return /*#__PURE__*/React.createElement(BuildParam, {
17
+ paramName: "ContentModelFieldCompression",
18
+ value: params.enabled
19
+ });
20
+ }
21
+ });
22
+
23
+ //# sourceMappingURL=ModelFieldCompression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","z","defineExtension","BuildParam","paramsSchema","object","enabled","boolean","describe","ModelFieldCompression","type","tags","runtimeContext","description","render","params","createElement","paramName","value"],"sources":["ModelFieldCompression.tsx"],"sourcesContent":["import React from \"react\";\nimport { z } from \"zod\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { BuildParam } from \"@webiny/project/extensions/index.js\";\n\nconst paramsSchema = z.object({\n enabled: z\n .boolean()\n .describe(\"Enable compression of model fields before storing in the database.\")\n});\n\nexport const ModelFieldCompression = defineExtension({\n type: \"Api/Cms/ModelFieldCompression\",\n tags: { runtimeContext: \"project\" },\n description:\n \"Enable or disable compression of Headless CMS model fields at the database storage level.\",\n paramsSchema,\n render(params) {\n return <BuildParam paramName=\"ContentModelFieldCompression\" value={params.enabled} />;\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,UAAU,QAAQ,qCAAqC;AAEhE,MAAMC,YAAY,GAAGH,CAAC,CAACI,MAAM,CAAC;EAC1BC,OAAO,EAAEL,CAAC,CACLM,OAAO,CAAC,CAAC,CACTC,QAAQ,CAAC,oEAAoE;AACtF,CAAC,CAAC;AAEF,OAAO,MAAMC,qBAAqB,GAAGP,eAAe,CAAC;EACjDQ,IAAI,EAAE,+BAA+B;EACrCC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EACP,2FAA2F;EAC/FT,YAAY;EACZU,MAAMA,CAACC,MAAM,EAAE;IACX,oBAAOf,KAAA,CAAAgB,aAAA,CAACb,UAAU;MAACc,SAAS,EAAC,8BAA8B;MAACC,KAAK,EAAEH,MAAM,CAACT;IAAQ,CAAE,CAAC;EACzF;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ export declare const Smtp: import("@webiny/project/defineExtension/defineExtension.js").ExtensionComponent<import("zod").ZodObject<{
2
+ host: import("zod").ZodString;
3
+ port: import("zod").ZodNumber;
4
+ user: import("zod").ZodString;
5
+ password: import("zod").ZodString;
6
+ from: import("zod").ZodString;
7
+ replyTo: import("zod").ZodOptional<import("zod").ZodString>;
8
+ }, import("zod/v4/core").$strip>>;
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import { defineExtension } from "@webiny/project/defineExtension/index.js";
3
+ import { BuildParam } from "@webiny/project/extensions/index.js";
4
+ import { SmtpParamsSchema } from "./SmtpParamsSchema.js";
5
+ export const Smtp = defineExtension({
6
+ type: "Api/Mailer/Smtp",
7
+ tags: {
8
+ runtimeContext: "project"
9
+ },
10
+ description: "Configure mailer SMTP transport settings via code. Always pass the password through a build-time env var, e.g. `password={process.env.SMTP_PASSWORD!}` — the value is serialized into the build artifact, so hard-coding it would commit the secret to source control.",
11
+ paramsSchema: SmtpParamsSchema,
12
+ render(params) {
13
+ return /*#__PURE__*/React.createElement(BuildParam, {
14
+ paramName: "Mailer.SmtpSettings",
15
+ value: params
16
+ });
17
+ }
18
+ });
19
+
20
+ //# sourceMappingURL=Smtp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","defineExtension","BuildParam","SmtpParamsSchema","Smtp","type","tags","runtimeContext","description","paramsSchema","render","params","createElement","paramName","value"],"sources":["Smtp.tsx"],"sourcesContent":["import React from \"react\";\nimport { defineExtension } from \"@webiny/project/defineExtension/index.js\";\nimport { BuildParam } from \"@webiny/project/extensions/index.js\";\nimport { SmtpParamsSchema } from \"./SmtpParamsSchema.js\";\n\nexport const Smtp = defineExtension({\n type: \"Api/Mailer/Smtp\",\n tags: { runtimeContext: \"project\" },\n description:\n \"Configure mailer SMTP transport settings via code. Always pass the password through a build-time env var, e.g. `password={process.env.SMTP_PASSWORD!}` — the value is serialized into the build artifact, so hard-coding it would commit the secret to source control.\",\n paramsSchema: SmtpParamsSchema,\n render(params) {\n return <BuildParam paramName=\"Mailer.SmtpSettings\" value={params} />;\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,UAAU,QAAQ,qCAAqC;AAChE,SAASC,gBAAgB;AAEzB,OAAO,MAAMC,IAAI,GAAGH,eAAe,CAAC;EAChCI,IAAI,EAAE,iBAAiB;EACvBC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EACP,wQAAwQ;EAC5QC,YAAY,EAAEN,gBAAgB;EAC9BO,MAAMA,CAACC,MAAM,EAAE;IACX,oBAAOX,KAAA,CAAAY,aAAA,CAACV,UAAU;MAACW,SAAS,EAAC,qBAAqB;MAACC,KAAK,EAAEH;IAAO,CAAE,CAAC;EACxE;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};