@webiny/project 6.3.0-beta.1 → 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 (97) hide show
  1. package/abstractions/features/index.d.ts +0 -1
  2. package/abstractions/features/index.js +0 -1
  3. package/abstractions/features/index.js.map +1 -1
  4. package/defineExtension/models/ExtensionInstanceModel.js +4 -1
  5. package/defineExtension/models/ExtensionInstanceModel.js.map +1 -1
  6. package/exports/infra/admin.d.ts +0 -1
  7. package/exports/infra/admin.js +0 -1
  8. package/exports/infra/admin.js.map +1 -1
  9. package/exports/infra/api.d.ts +0 -1
  10. package/exports/infra/api.js +0 -1
  11. package/exports/infra/api.js.map +1 -1
  12. package/exports/infra/core.d.ts +0 -1
  13. package/exports/infra/core.js +0 -1
  14. package/exports/infra/core.js.map +1 -1
  15. package/extensions/ApiBuildParam.js +1 -1
  16. package/extensions/ApiBuildParam.js.map +1 -1
  17. package/extensions/ApiExtension.js +1 -1
  18. package/extensions/ApiExtension.js.map +1 -1
  19. package/extensions/Project/ValidateEncryptionBeforeDeploy.d.ts +12 -0
  20. package/extensions/Project/ValidateEncryptionBeforeDeploy.js +32 -0
  21. package/extensions/Project/ValidateEncryptionBeforeDeploy.js.map +1 -0
  22. package/extensions/Project.js +2 -0
  23. package/extensions/Project.js.map +1 -1
  24. package/extensions/ProjectId.js +1 -1
  25. package/extensions/ProjectId.js.map +1 -1
  26. package/extensions/index.d.ts +1 -4
  27. package/extensions/index.js +5 -8
  28. package/extensions/index.js.map +1 -1
  29. package/extensions/infra/Env.d.ts +6 -0
  30. package/extensions/infra/Env.js +21 -0
  31. package/extensions/infra/Env.js.map +1 -1
  32. package/extensions/pulumi/ProductionEnvironments.js +16 -1
  33. package/extensions/pulumi/ProductionEnvironments.js.map +1 -1
  34. package/extensions/pulumi/index.d.ts +0 -3
  35. package/extensions/pulumi/index.js +0 -3
  36. package/extensions/pulumi/index.js.map +1 -1
  37. package/features/index.d.ts +0 -1
  38. package/features/index.js +0 -1
  39. package/features/index.js.map +1 -1
  40. package/package.json +17 -17
  41. package/services/GetProjectConfigService/ProductionEnvironmentsContext.d.ts +6 -0
  42. package/services/GetProjectConfigService/ProductionEnvironmentsContext.js +21 -0
  43. package/services/GetProjectConfigService/ProductionEnvironmentsContext.js.map +1 -0
  44. package/services/GetProjectConfigService/renderConfigWorker.js +3 -2
  45. package/services/GetProjectConfigService/renderConfigWorker.js.map +1 -1
  46. package/services/InitProjectSdkService/InitProjectSdkService.js +0 -6
  47. package/services/InitProjectSdkService/InitProjectSdkService.js.map +1 -1
  48. package/services/InitProjectSdkService/registerPulumiExtensions.js +5 -3
  49. package/services/InitProjectSdkService/registerPulumiExtensions.js.map +1 -1
  50. package/services/InstallExtensionService/downloadFolderFromS3.js +33 -42
  51. package/services/InstallExtensionService/downloadFolderFromS3.js.map +1 -1
  52. package/services/ListPackagesService/ListPackagesService.js +1 -1
  53. package/services/ListPackagesService/ListPackagesService.js.map +1 -1
  54. package/services/ProjectInfoService/ProjectInfoService.js +1 -1
  55. package/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
  56. package/abstractions/features/pulumi/AdminPulumi.d.ts +0 -11
  57. package/abstractions/features/pulumi/AdminPulumi.js +0 -7
  58. package/abstractions/features/pulumi/AdminPulumi.js.map +0 -1
  59. package/abstractions/features/pulumi/ApiPulumi.d.ts +0 -11
  60. package/abstractions/features/pulumi/ApiPulumi.js +0 -7
  61. package/abstractions/features/pulumi/ApiPulumi.js.map +0 -1
  62. package/abstractions/features/pulumi/CorePulumi.d.ts +0 -11
  63. package/abstractions/features/pulumi/CorePulumi.js +0 -7
  64. package/abstractions/features/pulumi/CorePulumi.js.map +0 -1
  65. package/abstractions/features/pulumi/index.d.ts +0 -3
  66. package/abstractions/features/pulumi/index.js +0 -5
  67. package/abstractions/features/pulumi/index.js.map +0 -1
  68. package/extensions/pulumi/AdminPulumi.d.ts +0 -4
  69. package/extensions/pulumi/AdminPulumi.js +0 -25
  70. package/extensions/pulumi/AdminPulumi.js.map +0 -1
  71. package/extensions/pulumi/ApiPulumi.d.ts +0 -4
  72. package/extensions/pulumi/ApiPulumi.js +0 -25
  73. package/extensions/pulumi/ApiPulumi.js.map +0 -1
  74. package/extensions/pulumi/CorePulumi.d.ts +0 -4
  75. package/extensions/pulumi/CorePulumi.js +0 -25
  76. package/extensions/pulumi/CorePulumi.js.map +0 -1
  77. package/features/pulumi/AdminPulumi/AdminPulumi.d.ts +0 -7
  78. package/features/pulumi/AdminPulumi/AdminPulumi.js +0 -21
  79. package/features/pulumi/AdminPulumi/AdminPulumi.js.map +0 -1
  80. package/features/pulumi/AdminPulumi/index.d.ts +0 -1
  81. package/features/pulumi/AdminPulumi/index.js +0 -3
  82. package/features/pulumi/AdminPulumi/index.js.map +0 -1
  83. package/features/pulumi/ApiPulumi/ApiPulumi.d.ts +0 -7
  84. package/features/pulumi/ApiPulumi/ApiPulumi.js +0 -21
  85. package/features/pulumi/ApiPulumi/ApiPulumi.js.map +0 -1
  86. package/features/pulumi/ApiPulumi/index.d.ts +0 -1
  87. package/features/pulumi/ApiPulumi/index.js +0 -3
  88. package/features/pulumi/ApiPulumi/index.js.map +0 -1
  89. package/features/pulumi/CorePulumi/CorePulumi.d.ts +0 -7
  90. package/features/pulumi/CorePulumi/CorePulumi.js +0 -21
  91. package/features/pulumi/CorePulumi/CorePulumi.js.map +0 -1
  92. package/features/pulumi/CorePulumi/index.d.ts +0 -1
  93. package/features/pulumi/CorePulumi/index.js +0 -3
  94. package/features/pulumi/CorePulumi/index.js.map +0 -1
  95. package/features/pulumi/index.d.ts +0 -3
  96. package/features/pulumi/index.js +0 -5
  97. package/features/pulumi/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["z","defineExtension","ProductionEnvironments","type","tags","runtimeContext","description","multiple","paramsSchema","object","environments","array","string","superRefine","value","ctx","addIssue","code","ZodIssueCode","custom","message","test"],"sources":["ProductionEnvironments.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\n\nexport const ProductionEnvironments = defineExtension({\n type: \"Infra/ProductionEnvironments\",\n tags: { runtimeContext: \"project\" },\n description: \"Provide names for environments that are considered production environments.\",\n multiple: true,\n paramsSchema: z.object({\n environments: z.array(\n z.string().superRefine((value, ctx) => {\n if (!value) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Environment name cannot be empty.\"\n });\n return;\n }\n\n // Must allow only letters, numbers, dashes, and underscores.\n if (!/^[a-zA-Z0-9-_]+$/.test(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Environment name can only contain letters, numbers, dashes, and underscores.\"\n });\n }\n })\n )\n })\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AACvB,SAASC,eAAe;AAExB,OAAO,MAAMC,sBAAsB,GAAGD,eAAe,CAAC;EAClDE,IAAI,EAAE,8BAA8B;EACpCC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EAAE,6EAA6E;EAC1FC,QAAQ,EAAE,IAAI;EACdC,YAAY,EAAER,CAAC,CAACS,MAAM,CAAC;IACnBC,YAAY,EAAEV,CAAC,CAACW,KAAK,CACjBX,CAAC,CAACY,MAAM,CAAC,CAAC,CAACC,WAAW,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACD,KAAK,EAAE;QACRC,GAAG,CAACC,QAAQ,CAAC;UACTC,IAAI,EAAEjB,CAAC,CAACkB,YAAY,CAACC,MAAM;UAC3BC,OAAO,EAAE;QACb,CAAC,CAAC;QACF;MACJ;;MAEA;MACA,IAAI,CAAC,kBAAkB,CAACC,IAAI,CAACP,KAAK,CAAC,EAAE;QACjCC,GAAG,CAACC,QAAQ,CAAC;UACTC,IAAI,EAAEjB,CAAC,CAACkB,YAAY,CAACC,MAAM;UAC3BC,OAAO,EACH;QACR,CAAC,CAAC;MACN;IACJ,CAAC,CACL;EACJ,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","z","defineExtension","useRegisterProductionEnvironments","Registrar","environments","setProdEnvs","ProductionEnvironments","type","tags","runtimeContext","description","paramsSchema","object","array","string","superRefine","value","ctx","addIssue","code","ZodIssueCode","custom","message","test","render","props","createElement"],"sources":["ProductionEnvironments.ts"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { z } from \"zod\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\nimport { useRegisterProductionEnvironments } from \"~/services/GetProjectConfigService/ProductionEnvironmentsContext.js\";\n\ninterface RegistrarProps {\n environments: string[];\n}\n\nconst Registrar: React.FC<RegistrarProps> = ({ environments }) => {\n const setProdEnvs = useRegisterProductionEnvironments();\n useEffect(() => {\n if (setProdEnvs) {\n setProdEnvs(environments);\n }\n }, []);\n return null;\n};\n\nexport const ProductionEnvironments = defineExtension({\n type: \"Infra/ProductionEnvironments\",\n tags: { runtimeContext: \"project\" },\n description: \"Provide names for environments that are considered production environments.\",\n paramsSchema: z.object({\n environments: z.array(\n z.string().superRefine((value, ctx) => {\n if (!value) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Environment name cannot be empty.\"\n });\n return;\n }\n\n // Must allow only letters, numbers, dashes, and underscores.\n if (!/^[a-zA-Z0-9-_]+$/.test(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Environment name can only contain letters, numbers, dashes, and underscores.\"\n });\n }\n })\n )\n }),\n render: props => React.createElement(Registrar, { environments: props.environments })\n});\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,eAAe;AACxB,SAASC,iCAAiC;AAM1C,MAAMC,SAAmC,GAAGA,CAAC;EAAEC;AAAa,CAAC,KAAK;EAC9D,MAAMC,WAAW,GAAGH,iCAAiC,CAAC,CAAC;EACvDH,SAAS,CAAC,MAAM;IACZ,IAAIM,WAAW,EAAE;MACbA,WAAW,CAACD,YAAY,CAAC;IAC7B;EACJ,CAAC,EAAE,EAAE,CAAC;EACN,OAAO,IAAI;AACf,CAAC;AAED,OAAO,MAAME,sBAAsB,GAAGL,eAAe,CAAC;EAClDM,IAAI,EAAE,8BAA8B;EACpCC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EAAE,6EAA6E;EAC1FC,YAAY,EAAEX,CAAC,CAACY,MAAM,CAAC;IACnBR,YAAY,EAAEJ,CAAC,CAACa,KAAK,CACjBb,CAAC,CAACc,MAAM,CAAC,CAAC,CAACC,WAAW,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;MACnC,IAAI,CAACD,KAAK,EAAE;QACRC,GAAG,CAACC,QAAQ,CAAC;UACTC,IAAI,EAAEnB,CAAC,CAACoB,YAAY,CAACC,MAAM;UAC3BC,OAAO,EAAE;QACb,CAAC,CAAC;QACF;MACJ;;MAEA;MACA,IAAI,CAAC,kBAAkB,CAACC,IAAI,CAACP,KAAK,CAAC,EAAE;QACjCC,GAAG,CAACC,QAAQ,CAAC;UACTC,IAAI,EAAEnB,CAAC,CAACoB,YAAY,CAACC,MAAM;UAC3BC,OAAO,EACH;QACR,CAAC,CAAC;MACN;IACJ,CAAC,CACL;EACJ,CAAC,CAAC;EACFE,MAAM,EAAEC,KAAK,iBAAI3B,KAAK,CAAC4B,aAAa,CAACvB,SAAS,EAAE;IAAEC,YAAY,EAAEqB,KAAK,CAACrB;EAAa,CAAC;AACxF,CAAC,CAAC","ignoreList":[]}
@@ -1,6 +1,3 @@
1
- export * from "./CorePulumi.js";
2
- export * from "./ApiPulumi.js";
3
- export * from "./AdminPulumi.js";
4
1
  export * from "./PulumiResourceNamePrefix.js";
5
2
  export * from "./ProductionEnvironments.js";
6
3
  export * from "./CoreStackOutputValue.js";
@@ -1,6 +1,3 @@
1
- export * from "./CorePulumi.js";
2
- export * from "./ApiPulumi.js";
3
- export * from "./AdminPulumi.js";
4
1
  export * from "./PulumiResourceNamePrefix.js";
5
2
  export * from "./ProductionEnvironments.js";
6
3
  export * from "./CoreStackOutputValue.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./CorePulumi.js\";\nexport * from \"./ApiPulumi.js\";\nexport * from \"./AdminPulumi.js\";\nexport * from \"./PulumiResourceNamePrefix.js\";\nexport * from \"./ProductionEnvironments.js\";\nexport * from \"./CoreStackOutputValue.js\";\nexport * from \"./ApiStackOutputValue.js\";\nexport * from \"./AdminStackOutputValue.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./PulumiResourceNamePrefix.js\";\nexport * from \"./ProductionEnvironments.js\";\nexport * from \"./CoreStackOutputValue.js\";\nexport * from \"./ApiStackOutputValue.js\";\nexport * from \"./AdminStackOutputValue.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  export * from "./hooks/index.js";
2
- export * from "./pulumi/index.js";
3
2
  export * from "./BuildApp/index.js";
4
3
  export * from "./DeployApp/index.js";
5
4
  export * from "./DestroyApp/index.js";
package/features/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from "./hooks/index.js";
2
- export * from "./pulumi/index.js";
3
2
  export * from "./BuildApp/index.js";
4
3
  export * from "./DeployApp/index.js";
5
4
  export * from "./DestroyApp/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./pulumi/index.js\";\nexport * from \"./BuildApp/index.js\";\nexport * from \"./DeployApp/index.js\";\nexport * from \"./DestroyApp/index.js\";\nexport * from \"./ExportStack/index.js\";\nexport * from \"./GetApp/index.js\";\nexport * from \"./GetAppOutput/index.js\";\nexport * from \"./GetAppStackOutput/index.js\";\nexport * from \"./GetLogger/index.js\";\nexport * from \"./GetProductionEnvironments/index.js\";\nexport * from \"./GetProject/index.js\";\nexport * from \"./GetProjectConfig/index.js\";\nexport * from \"./GetProjectInfo/index.js\";\nexport * from \"./GetPulumiResourceNamePrefix/index.js\";\nexport * from \"./InstallExtension/index.js\";\nexport * from \"./IsCi/index.js\";\nexport * from \"./IsTelemetryEnabled/index.js\";\nexport * from \"./IsWcpEnabled/index.js\";\nexport * from \"./IsWebinyJsRepo/index.js\";\nexport * from \"./RefreshApp/index.js\";\nexport * from \"./RunPulumiCommand/index.js\";\nexport * from \"./ValidateProjectConfig/index.js\";\nexport * from \"./Watch/index.js\";\nexport * from \"./GetFeatureFlags/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./BuildApp/index.js\";\nexport * from \"./DeployApp/index.js\";\nexport * from \"./DestroyApp/index.js\";\nexport * from \"./ExportStack/index.js\";\nexport * from \"./GetApp/index.js\";\nexport * from \"./GetAppOutput/index.js\";\nexport * from \"./GetAppStackOutput/index.js\";\nexport * from \"./GetLogger/index.js\";\nexport * from \"./GetProductionEnvironments/index.js\";\nexport * from \"./GetProject/index.js\";\nexport * from \"./GetProjectConfig/index.js\";\nexport * from \"./GetProjectInfo/index.js\";\nexport * from \"./GetPulumiResourceNamePrefix/index.js\";\nexport * from \"./InstallExtension/index.js\";\nexport * from \"./IsCi/index.js\";\nexport * from \"./IsTelemetryEnabled/index.js\";\nexport * from \"./IsWcpEnabled/index.js\";\nexport * from \"./IsWebinyJsRepo/index.js\";\nexport * from \"./RefreshApp/index.js\";\nexport * from \"./RunPulumiCommand/index.js\";\nexport * from \"./ValidateProjectConfig/index.js\";\nexport * from \"./Watch/index.js\";\nexport * from \"./GetFeatureFlags/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@webiny/project",
3
- "version": "6.3.0-beta.1",
3
+ "version": "6.3.0-beta.3",
4
4
  "type": "module",
5
- "main": "index.js",
5
+ "exports": {
6
+ ".": "./index.js",
7
+ "./*": "./*"
8
+ },
6
9
  "repository": {
7
10
  "type": "git",
8
11
  "url": "https://github.com/webiny/webiny-js.git"
@@ -10,17 +13,17 @@
10
13
  "description": "An SDK for managing Webiny projects.",
11
14
  "license": "MIT",
12
15
  "dependencies": {
13
- "@webiny/aws-sdk": "6.3.0-beta.1",
14
- "@webiny/build-tools": "6.3.0-beta.1",
16
+ "@webiny/aws-sdk": "6.3.0-beta.3",
17
+ "@webiny/build-tools": "6.3.0-beta.3",
15
18
  "@webiny/di": "0.2.3",
16
- "@webiny/feature-flags": "6.3.0-beta.1",
17
- "@webiny/global-config": "6.3.0-beta.1",
18
- "@webiny/pulumi-sdk": "6.3.0-beta.1",
19
- "@webiny/react-properties": "6.3.0-beta.1",
20
- "@webiny/system-requirements": "6.3.0-beta.1",
21
- "@webiny/telemetry": "6.3.0-beta.1",
22
- "@webiny/utils": "6.3.0-beta.1",
23
- "@webiny/wcp": "6.3.0-beta.1",
19
+ "@webiny/feature-flags": "6.3.0-beta.3",
20
+ "@webiny/global-config": "6.3.0-beta.3",
21
+ "@webiny/pulumi-sdk": "6.3.0-beta.3",
22
+ "@webiny/react-properties": "6.3.0-beta.3",
23
+ "@webiny/system-requirements": "6.3.0-beta.3",
24
+ "@webiny/telemetry": "6.3.0-beta.3",
25
+ "@webiny/utils": "6.3.0-beta.3",
26
+ "@webiny/wcp": "6.3.0-beta.3",
24
27
  "chalk": "5.6.2",
25
28
  "chokidar": "5.0.0",
26
29
  "ci-info": "4.4.0",
@@ -34,7 +37,7 @@
34
37
  "get-tsconfig": "4.14.0",
35
38
  "graphql-request": "7.4.0",
36
39
  "humanize-duration": "3.33.2",
37
- "jsdom": "29.0.2",
40
+ "jsdom": "29.1.1",
38
41
  "load-json-file": "7.0.1",
39
42
  "lodash": "4.18.1",
40
43
  "minimatch": "10.2.5",
@@ -63,9 +66,6 @@
63
66
  },
64
67
  "adio": {
65
68
  "ignore": {
66
- "src": [
67
- "@webiny/project-aws"
68
- ],
69
69
  "dependencies": [
70
70
  "exit-hook"
71
71
  ]
@@ -75,5 +75,5 @@
75
75
  "access": "public",
76
76
  "directory": "dist"
77
77
  },
78
- "gitHead": "664b273a9f0a971f9ca7e6ffe920db77fefdced1"
78
+ "gitHead": "e154ec3326903876c357d35422dc60d29e061419"
79
79
  }
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ export declare const ProductionEnvironmentsCollector: React.FC<{
3
+ children: React.ReactNode;
4
+ }>;
5
+ export declare const useProductionEnvironments: () => string[];
6
+ export declare const useRegisterProductionEnvironments: () => React.Dispatch<React.SetStateAction<string[]>> | null;
@@ -0,0 +1,21 @@
1
+ import React, { createContext, useContext, useState } from "react";
2
+ const ProductionEnvironmentsContext = /*#__PURE__*/createContext(null);
3
+ export const ProductionEnvironmentsCollector = ({
4
+ children
5
+ }) => {
6
+ const [prodEnvs, setProdEnvs] = useState([]);
7
+ return /*#__PURE__*/React.createElement(ProductionEnvironmentsContext.Provider, {
8
+ value: {
9
+ prodEnvs,
10
+ setProdEnvs
11
+ }
12
+ }, children);
13
+ };
14
+ export const useProductionEnvironments = () => {
15
+ return useContext(ProductionEnvironmentsContext)?.prodEnvs ?? [];
16
+ };
17
+ export const useRegisterProductionEnvironments = () => {
18
+ return useContext(ProductionEnvironmentsContext)?.setProdEnvs ?? null;
19
+ };
20
+
21
+ //# sourceMappingURL=ProductionEnvironmentsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useState","ProductionEnvironmentsContext","ProductionEnvironmentsCollector","children","prodEnvs","setProdEnvs","createElement","Provider","value","useProductionEnvironments","useRegisterProductionEnvironments"],"sources":["ProductionEnvironmentsContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useState } from \"react\";\n\ninterface ProductionEnvironmentsContextValue {\n prodEnvs: string[];\n setProdEnvs: React.Dispatch<React.SetStateAction<string[]>>;\n}\n\nconst ProductionEnvironmentsContext = createContext<ProductionEnvironmentsContextValue | null>(\n null\n);\n\nexport const ProductionEnvironmentsCollector: React.FC<{ children: React.ReactNode }> = ({\n children\n}) => {\n const [prodEnvs, setProdEnvs] = useState<string[]>([]);\n return (\n <ProductionEnvironmentsContext.Provider value={{ prodEnvs, setProdEnvs }}>\n {children}\n </ProductionEnvironmentsContext.Provider>\n );\n};\n\nexport const useProductionEnvironments = (): string[] => {\n return useContext(ProductionEnvironmentsContext)?.prodEnvs ?? [];\n};\n\nexport const useRegisterProductionEnvironments = () => {\n return useContext(ProductionEnvironmentsContext)?.setProdEnvs ?? null;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,OAAO;AAOlE,MAAMC,6BAA6B,gBAAGH,aAAa,CAC/C,IACJ,CAAC;AAED,OAAO,MAAMI,+BAAwE,GAAGA,CAAC;EACrFC;AACJ,CAAC,KAAK;EACF,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGL,QAAQ,CAAW,EAAE,CAAC;EACtD,oBACIH,KAAA,CAAAS,aAAA,CAACL,6BAA6B,CAACM,QAAQ;IAACC,KAAK,EAAE;MAAEJ,QAAQ;MAAEC;IAAY;EAAE,GACpEF,QACmC,CAAC;AAEjD,CAAC;AAED,OAAO,MAAMM,yBAAyB,GAAGA,CAAA,KAAgB;EACrD,OAAOV,UAAU,CAACE,6BAA6B,CAAC,EAAEG,QAAQ,IAAI,EAAE;AACpE,CAAC;AAED,OAAO,MAAMM,iCAAiC,GAAGA,CAAA,KAAM;EACnD,OAAOX,UAAU,CAACE,6BAA6B,CAAC,EAAEI,WAAW,IAAI,IAAI;AACzE,CAAC","ignoreList":[]}
@@ -9,6 +9,7 @@ import { ProjectModel } from "../../models/ProjectModel.js";
9
9
  import { toImportSpecifier } from "../../utils/index.js";
10
10
  import { EnvProvider } from "./EnvContext.js";
11
11
  import { WcpProjectLicenseProvider } from "./WcpProjectLicenseContext.js";
12
+ import { ProductionEnvironmentsCollector } from "./ProductionEnvironmentsContext.js";
12
13
  const sendError = err => {
13
14
  const message = {
14
15
  type: "error",
@@ -60,8 +61,8 @@ global.window = window;
60
61
  global.document = window.document;
61
62
  const root = window.document.getElementById("root");
62
63
  const reactRoot = createRoot(root);
63
- reactRoot.render(/*#__PURE__*/React.createElement(WcpProjectLicenseProvider, null, /*#__PURE__*/React.createElement(EnvProvider, null, /*#__PURE__*/React.createElement(Properties, {
64
+ reactRoot.render(/*#__PURE__*/React.createElement(WcpProjectLicenseProvider, null, /*#__PURE__*/React.createElement(EnvProvider, null, /*#__PURE__*/React.createElement(ProductionEnvironmentsCollector, null, /*#__PURE__*/React.createElement(Properties, {
64
65
  onChange: onChange
65
- }, /*#__PURE__*/React.createElement(Extensions, null)))));
66
+ }, /*#__PURE__*/React.createElement(Extensions, null))))));
66
67
 
67
68
  //# sourceMappingURL=renderConfigWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Properties","toObject","debounce","React","createRoot","JSDOM","serializeError","ProjectModel","toImportSpecifier","EnvProvider","WcpProjectLicenseProvider","sendError","err","message","type","error","data","process","send","console","sendSuccess","log","on","exit","reason","Error","String","project","projectModelDto","JSON","parse","argv","fromDto","Extensions","paths","webinyConfigBaseFile","toString","onChange","value","window","global","document","root","getElementById","reactRoot","render","createElement"],"sources":["renderConfigWorker.tsx"],"sourcesContent":["import \"tsx/esm\";\nimport { Properties, toObject } from \"@webiny/react-properties\";\nimport debounce from \"debounce\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { JSDOM } from \"jsdom\";\nimport { serializeError } from \"serialize-error\";\nimport type { RenderConfigParamsDto, RenderConfigWorkerMessageDto } from \"./renderConfig.js\";\nimport { ProjectModel } from \"~/models/ProjectModel.js\";\nimport { toImportSpecifier } from \"~/utils/index.js\";\nimport { EnvProvider } from \"./EnvContext.js\";\nimport { WcpProjectLicenseProvider } from \"./WcpProjectLicenseContext.js\";\n\nconst sendError = (err: Error) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"error\",\n error: serializeError(err),\n data: null\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.error(message);\n }\n};\n\nconst sendSuccess = (data: Record<string, any> = {}) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"success\",\n error: null,\n data\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.log(message);\n }\n};\n\nprocess.on(\"uncaughtException\", err => {\n sendError(err);\n process.exit(1);\n});\n\nprocess.on(\"unhandledRejection\", reason => {\n const err = reason instanceof Error ? reason : new Error(String(reason));\n sendError(err);\n process.exit(1);\n});\n\nconst { project: projectModelDto } = JSON.parse(process.argv[2]) as RenderConfigParamsDto;\nconst project = ProjectModel.fromDto(projectModelDto);\n\nconst { Extensions } = await import(\n toImportSpecifier(project.paths.webinyConfigBaseFile.toString())\n);\n\nconst onChange = debounce((value: any) => {\n sendSuccess(toObject(value));\n process.exit(0);\n});\n\nconst { window } = new JSDOM(`<div id=\"root\"/>`);\n\n(global as any).window = window;\n\n(global as any).document = window.document;\n\nconst root = window.document.getElementById(\"root\")!;\n\nconst reactRoot = createRoot(root);\n\nreactRoot.render(\n <WcpProjectLicenseProvider>\n <EnvProvider>\n <Properties onChange={onChange}>\n <Extensions />\n </Properties>\n </EnvProvider>\n </WcpProjectLicenseProvider>\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Properties","toObject","debounce","React","createRoot","JSDOM","serializeError","ProjectModel","toImportSpecifier","EnvProvider","WcpProjectLicenseProvider","ProductionEnvironmentsCollector","sendError","err","message","type","error","data","process","send","console","sendSuccess","log","on","exit","reason","Error","String","project","projectModelDto","JSON","parse","argv","fromDto","Extensions","paths","webinyConfigBaseFile","toString","onChange","value","window","global","document","root","getElementById","reactRoot","render","createElement"],"sources":["renderConfigWorker.tsx"],"sourcesContent":["import \"tsx/esm\";\nimport { Properties, toObject } from \"@webiny/react-properties\";\nimport debounce from \"debounce\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { JSDOM } from \"jsdom\";\nimport { serializeError } from \"serialize-error\";\nimport type { RenderConfigParamsDto, RenderConfigWorkerMessageDto } from \"./renderConfig.js\";\nimport { ProjectModel } from \"~/models/ProjectModel.js\";\nimport { toImportSpecifier } from \"~/utils/index.js\";\nimport { EnvProvider } from \"./EnvContext.js\";\nimport { WcpProjectLicenseProvider } from \"./WcpProjectLicenseContext.js\";\nimport { ProductionEnvironmentsCollector } from \"./ProductionEnvironmentsContext.js\";\n\nconst sendError = (err: Error) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"error\",\n error: serializeError(err),\n data: null\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.error(message);\n }\n};\n\nconst sendSuccess = (data: Record<string, any> = {}) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"success\",\n error: null,\n data\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.log(message);\n }\n};\n\nprocess.on(\"uncaughtException\", err => {\n sendError(err);\n process.exit(1);\n});\n\nprocess.on(\"unhandledRejection\", reason => {\n const err = reason instanceof Error ? reason : new Error(String(reason));\n sendError(err);\n process.exit(1);\n});\n\nconst { project: projectModelDto } = JSON.parse(process.argv[2]) as RenderConfigParamsDto;\nconst project = ProjectModel.fromDto(projectModelDto);\n\nconst { Extensions } = await import(\n toImportSpecifier(project.paths.webinyConfigBaseFile.toString())\n);\n\nconst onChange = debounce((value: any) => {\n sendSuccess(toObject(value));\n process.exit(0);\n});\n\nconst { window } = new JSDOM(`<div id=\"root\"/>`);\n\n(global as any).window = window;\n\n(global as any).document = window.document;\n\nconst root = window.document.getElementById(\"root\")!;\n\nconst reactRoot = createRoot(root);\n\nreactRoot.render(\n <WcpProjectLicenseProvider>\n <EnvProvider>\n <ProductionEnvironmentsCollector>\n <Properties onChange={onChange}>\n <Extensions />\n </Properties>\n </ProductionEnvironmentsCollector>\n </EnvProvider>\n </WcpProjectLicenseProvider>\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  import { createImplementation } from "@webiny/di";
2
2
  import { GetProjectService, GetProjectConfig, InitProjectSdkService } from "../../abstractions/index.js";
3
- import { corePulumi, apiPulumi, adminPulumi } from "../../features/index.js";
4
3
  import { buildAppWithHooks, deployAppClearWatchedLambdaFunctions, deployAppRefreshStackOutputCache, deployAppWithHooks, deployAppWithWatchedLambdaReplacement, watchWithHooks, getPulumiServiceWithDownloadInfo } from "../../decorators/index.js";
5
4
  import { applyEnvVars } from "./applyEnvVars.js";
6
5
  import { applyWcpEnvVars } from "./applyWcpEnvVars.js";
@@ -33,11 +32,6 @@ export class DefaultInitProjectSdkService {
33
32
  // Register Pulumi extensions.
34
33
  await registerPulumiExtensions(container, projectExtensions, project);
35
34
 
36
- // Pulumi composites.
37
- container.registerComposite(corePulumi);
38
- container.registerComposite(apiPulumi);
39
- container.registerComposite(adminPulumi);
40
-
41
35
  // Decorators that must be applied last on top of potentially custom ones.
42
36
  container.registerDecorator(buildAppWithHooks);
43
37
  container.registerDecorator(deployAppWithWatchedLambdaReplacement);
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","GetProjectService","GetProjectConfig","InitProjectSdkService","corePulumi","apiPulumi","adminPulumi","buildAppWithHooks","deployAppClearWatchedLambdaFunctions","deployAppRefreshStackOutputCache","deployAppWithHooks","deployAppWithWatchedLambdaReplacement","watchWithHooks","getPulumiServiceWithDownloadInfo","applyEnvVars","applyWcpEnvVars","registerHooks","registerPulumiExtensions","registerImplementations","registerDecorators","DefaultInitProjectSdkService","constructor","getProjectService","getProjectConfig","execute","container","project","projectExtensions","tags","runtimeContext","registerComposite","registerDecorator","initProjectSdkService","abstraction","implementation","dependencies"],"sources":["InitProjectSdkService.ts"],"sourcesContent":["import { createImplementation, Container } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectConfig,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\nimport { corePulumi, apiPulumi, adminPulumi } from \"~/features/index.js\";\nimport {\n buildAppWithHooks,\n deployAppClearWatchedLambdaFunctions,\n deployAppRefreshStackOutputCache,\n deployAppWithHooks,\n deployAppWithWatchedLambdaReplacement,\n watchWithHooks,\n getPulumiServiceWithDownloadInfo\n} from \"~/decorators/index.js\";\nimport { applyEnvVars } from \"./applyEnvVars.js\";\nimport { applyWcpEnvVars } from \"./applyWcpEnvVars.js\";\nimport { registerHooks } from \"./registerHooks.js\";\nimport { registerPulumiExtensions } from \"./registerPulumiExtensions.js\";\nimport { registerImplementations } from \"./registerImplementations.js\";\nimport { registerDecorators } from \"./registerDecorators.js\";\n\nexport class DefaultInitProjectSdkService implements InitProjectSdkService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getProjectConfig: GetProjectConfig.Interface\n ) {}\n\n async execute(container: Container) {\n const project = this.getProjectService.execute();\n const projectExtensions = await this.getProjectConfig.execute({\n tags: { runtimeContext: \"project\" }\n });\n\n // Apply environment variables from extensions.\n applyEnvVars(projectExtensions);\n\n // Set WCP environment variables if project ID exists.\n await applyWcpEnvVars(container);\n\n // Register hooks from extensions.\n await registerHooks(container, projectExtensions, project);\n\n // Register Pulumi extensions.\n await registerPulumiExtensions(container, projectExtensions, project);\n\n // Pulumi composites.\n container.registerComposite(corePulumi);\n container.registerComposite(apiPulumi);\n container.registerComposite(adminPulumi);\n\n // Decorators that must be applied last on top of potentially custom ones.\n container.registerDecorator(buildAppWithHooks);\n container.registerDecorator(deployAppWithWatchedLambdaReplacement);\n container.registerDecorator(deployAppClearWatchedLambdaFunctions);\n container.registerDecorator(deployAppRefreshStackOutputCache);\n container.registerDecorator(deployAppWithHooks);\n container.registerDecorator(watchWithHooks);\n container.registerDecorator(getPulumiServiceWithDownloadInfo);\n\n // Register custom implementations first (they replace existing implementations).\n await registerImplementations(container, projectExtensions, project);\n\n // Register decorators after implementations (they enhance existing implementations).\n await registerDecorators(container, projectExtensions, project);\n }\n}\n\nexport const initProjectSdkService = createImplementation({\n abstraction: InitProjectSdkService,\n implementation: DefaultInitProjectSdkService,\n dependencies: [GetProjectService, GetProjectConfig]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAmB,YAAY;AAC5D,SACIC,iBAAiB,EACjBC,gBAAgB,EAChBC,qBAAqB;AAEzB,SAASC,UAAU,EAAEC,SAAS,EAAEC,WAAW;AAC3C,SACIC,iBAAiB,EACjBC,oCAAoC,EACpCC,gCAAgC,EAChCC,kBAAkB,EAClBC,qCAAqC,EACrCC,cAAc,EACdC,gCAAgC;AAEpC,SAASC,YAAY;AACrB,SAASC,eAAe;AACxB,SAASC,aAAa;AACtB,SAASC,wBAAwB;AACjC,SAASC,uBAAuB;AAChC,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,4BAA4B,CAA4C;EACjFC,WAAWA,CACCC,iBAA8C,EAC9CC,gBAA4C,EACtD;IAAA,KAFUD,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,gBAA4C,GAA5CA,gBAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,SAAoB,EAAE;IAChC,MAAMC,OAAO,GAAG,IAAI,CAACJ,iBAAiB,CAACE,OAAO,CAAC,CAAC;IAChD,MAAMG,iBAAiB,GAAG,MAAM,IAAI,CAACJ,gBAAgB,CAACC,OAAO,CAAC;MAC1DI,IAAI,EAAE;QAAEC,cAAc,EAAE;MAAU;IACtC,CAAC,CAAC;;IAEF;IACAf,YAAY,CAACa,iBAAiB,CAAC;;IAE/B;IACA,MAAMZ,eAAe,CAACU,SAAS,CAAC;;IAEhC;IACA,MAAMT,aAAa,CAACS,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAE1D;IACA,MAAMT,wBAAwB,CAACQ,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAErE;IACAD,SAAS,CAACK,iBAAiB,CAAC1B,UAAU,CAAC;IACvCqB,SAAS,CAACK,iBAAiB,CAACzB,SAAS,CAAC;IACtCoB,SAAS,CAACK,iBAAiB,CAACxB,WAAW,CAAC;;IAExC;IACAmB,SAAS,CAACM,iBAAiB,CAACxB,iBAAiB,CAAC;IAC9CkB,SAAS,CAACM,iBAAiB,CAACpB,qCAAqC,CAAC;IAClEc,SAAS,CAACM,iBAAiB,CAACvB,oCAAoC,CAAC;IACjEiB,SAAS,CAACM,iBAAiB,CAACtB,gCAAgC,CAAC;IAC7DgB,SAAS,CAACM,iBAAiB,CAACrB,kBAAkB,CAAC;IAC/Ce,SAAS,CAACM,iBAAiB,CAACnB,cAAc,CAAC;IAC3Ca,SAAS,CAACM,iBAAiB,CAAClB,gCAAgC,CAAC;;IAE7D;IACA,MAAMK,uBAAuB,CAACO,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAEpE;IACA,MAAMP,kBAAkB,CAACM,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;EACnE;AACJ;AAEA,OAAO,MAAMM,qBAAqB,GAAGhC,oBAAoB,CAAC;EACtDiC,WAAW,EAAE9B,qBAAqB;EAClC+B,cAAc,EAAEd,4BAA4B;EAC5Ce,YAAY,EAAE,CAAClC,iBAAiB,EAAEC,gBAAgB;AACtD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","GetProjectService","GetProjectConfig","InitProjectSdkService","buildAppWithHooks","deployAppClearWatchedLambdaFunctions","deployAppRefreshStackOutputCache","deployAppWithHooks","deployAppWithWatchedLambdaReplacement","watchWithHooks","getPulumiServiceWithDownloadInfo","applyEnvVars","applyWcpEnvVars","registerHooks","registerPulumiExtensions","registerImplementations","registerDecorators","DefaultInitProjectSdkService","constructor","getProjectService","getProjectConfig","execute","container","project","projectExtensions","tags","runtimeContext","registerDecorator","initProjectSdkService","abstraction","implementation","dependencies"],"sources":["InitProjectSdkService.ts"],"sourcesContent":["import { createImplementation, Container } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectConfig,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\nimport {\n buildAppWithHooks,\n deployAppClearWatchedLambdaFunctions,\n deployAppRefreshStackOutputCache,\n deployAppWithHooks,\n deployAppWithWatchedLambdaReplacement,\n watchWithHooks,\n getPulumiServiceWithDownloadInfo\n} from \"~/decorators/index.js\";\nimport { applyEnvVars } from \"./applyEnvVars.js\";\nimport { applyWcpEnvVars } from \"./applyWcpEnvVars.js\";\nimport { registerHooks } from \"./registerHooks.js\";\nimport { registerPulumiExtensions } from \"./registerPulumiExtensions.js\";\nimport { registerImplementations } from \"./registerImplementations.js\";\nimport { registerDecorators } from \"./registerDecorators.js\";\n\nexport class DefaultInitProjectSdkService implements InitProjectSdkService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getProjectConfig: GetProjectConfig.Interface\n ) {}\n\n async execute(container: Container) {\n const project = this.getProjectService.execute();\n const projectExtensions = await this.getProjectConfig.execute({\n tags: { runtimeContext: \"project\" }\n });\n\n // Apply environment variables from extensions.\n applyEnvVars(projectExtensions);\n\n // Set WCP environment variables if project ID exists.\n await applyWcpEnvVars(container);\n\n // Register hooks from extensions.\n await registerHooks(container, projectExtensions, project);\n\n // Register Pulumi extensions.\n await registerPulumiExtensions(container, projectExtensions, project);\n\n // Decorators that must be applied last on top of potentially custom ones.\n container.registerDecorator(buildAppWithHooks);\n container.registerDecorator(deployAppWithWatchedLambdaReplacement);\n container.registerDecorator(deployAppClearWatchedLambdaFunctions);\n container.registerDecorator(deployAppRefreshStackOutputCache);\n container.registerDecorator(deployAppWithHooks);\n container.registerDecorator(watchWithHooks);\n container.registerDecorator(getPulumiServiceWithDownloadInfo);\n\n // Register custom implementations first (they replace existing implementations).\n await registerImplementations(container, projectExtensions, project);\n\n // Register decorators after implementations (they enhance existing implementations).\n await registerDecorators(container, projectExtensions, project);\n }\n}\n\nexport const initProjectSdkService = createImplementation({\n abstraction: InitProjectSdkService,\n implementation: DefaultInitProjectSdkService,\n dependencies: [GetProjectService, GetProjectConfig]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAmB,YAAY;AAC5D,SACIC,iBAAiB,EACjBC,gBAAgB,EAChBC,qBAAqB;AAEzB,SACIC,iBAAiB,EACjBC,oCAAoC,EACpCC,gCAAgC,EAChCC,kBAAkB,EAClBC,qCAAqC,EACrCC,cAAc,EACdC,gCAAgC;AAEpC,SAASC,YAAY;AACrB,SAASC,eAAe;AACxB,SAASC,aAAa;AACtB,SAASC,wBAAwB;AACjC,SAASC,uBAAuB;AAChC,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,4BAA4B,CAA4C;EACjFC,WAAWA,CACCC,iBAA8C,EAC9CC,gBAA4C,EACtD;IAAA,KAFUD,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,gBAA4C,GAA5CA,gBAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,SAAoB,EAAE;IAChC,MAAMC,OAAO,GAAG,IAAI,CAACJ,iBAAiB,CAACE,OAAO,CAAC,CAAC;IAChD,MAAMG,iBAAiB,GAAG,MAAM,IAAI,CAACJ,gBAAgB,CAACC,OAAO,CAAC;MAC1DI,IAAI,EAAE;QAAEC,cAAc,EAAE;MAAU;IACtC,CAAC,CAAC;;IAEF;IACAf,YAAY,CAACa,iBAAiB,CAAC;;IAE/B;IACA,MAAMZ,eAAe,CAACU,SAAS,CAAC;;IAEhC;IACA,MAAMT,aAAa,CAACS,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAE1D;IACA,MAAMT,wBAAwB,CAACQ,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAErE;IACAD,SAAS,CAACK,iBAAiB,CAACvB,iBAAiB,CAAC;IAC9CkB,SAAS,CAACK,iBAAiB,CAACnB,qCAAqC,CAAC;IAClEc,SAAS,CAACK,iBAAiB,CAACtB,oCAAoC,CAAC;IACjEiB,SAAS,CAACK,iBAAiB,CAACrB,gCAAgC,CAAC;IAC7DgB,SAAS,CAACK,iBAAiB,CAACpB,kBAAkB,CAAC;IAC/Ce,SAAS,CAACK,iBAAiB,CAAClB,cAAc,CAAC;IAC3Ca,SAAS,CAACK,iBAAiB,CAACjB,gCAAgC,CAAC;;IAE7D;IACA,MAAMK,uBAAuB,CAACO,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;;IAEpE;IACA,MAAMP,kBAAkB,CAACM,SAAS,EAAEE,iBAAiB,EAAED,OAAO,CAAC;EACnE;AACJ;AAEA,OAAO,MAAMK,qBAAqB,GAAG5B,oBAAoB,CAAC;EACtD6B,WAAW,EAAE1B,qBAAqB;EAClC2B,cAAc,EAAEb,4BAA4B;EAC5Cc,YAAY,EAAE,CAAC9B,iBAAiB,EAAEC,gBAAgB;AACtD,CAAC,CAAC","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import { ExtensionSrcResolver } from "../../utils/index.js";
2
- import { CorePulumi as CorePulumiExt, ApiPulumi as ApiPulumiExt, AdminPulumi as AdminPulumiExt } from "../../extensions/pulumi/index.js";
3
2
  export const registerPulumiExtensions = async (container, projectExtensions, project) => {
4
- const pulumiExtensions = [...projectExtensions.extensionsByType(CorePulumiExt), ...projectExtensions.extensionsByType(ApiPulumiExt), ...projectExtensions.extensionsByType(AdminPulumiExt)];
3
+ const pulumiExtensions = [...projectExtensions.extensionsByType("Core/Pulumi"), ...projectExtensions.extensionsByType("Api/Pulumi"), ...projectExtensions.extensionsByType("Admin/Pulumi")];
5
4
  for (const pulumiExtension of pulumiExtensions) {
6
- const pulumiImpl = await ExtensionSrcResolver.importFromPath(pulumiExtension.params.src, project);
5
+ const {
6
+ src
7
+ } = pulumiExtension.params;
8
+ const pulumiImpl = await ExtensionSrcResolver.importFromPath(src, project);
7
9
  container.register(pulumiImpl).inSingletonScope();
8
10
  }
9
11
  };
@@ -1 +1 @@
1
- {"version":3,"names":["ExtensionSrcResolver","CorePulumi","CorePulumiExt","ApiPulumi","ApiPulumiExt","AdminPulumi","AdminPulumiExt","registerPulumiExtensions","container","projectExtensions","project","pulumiExtensions","extensionsByType","pulumiExtension","pulumiImpl","importFromPath","params","src","register","inSingletonScope"],"sources":["registerPulumiExtensions.ts"],"sourcesContent":["import { type IProjectModel } from \"~/abstractions/models/index.js\";\nimport { type IProjectConfigModel } from \"~/abstractions/models/index.js\";\nimport { Container } from \"@webiny/di\";\nimport { ExtensionSrcResolver } from \"~/utils/index.js\";\nimport {\n CorePulumi as CorePulumiExt,\n ApiPulumi as ApiPulumiExt,\n AdminPulumi as AdminPulumiExt\n} from \"~/extensions/pulumi/index.js\";\n\nexport const registerPulumiExtensions = async (\n container: Container,\n projectExtensions: IProjectConfigModel,\n project: IProjectModel\n) => {\n const pulumiExtensions = [\n ...projectExtensions.extensionsByType(CorePulumiExt),\n ...projectExtensions.extensionsByType(ApiPulumiExt),\n ...projectExtensions.extensionsByType(AdminPulumiExt)\n ];\n\n for (const pulumiExtension of pulumiExtensions) {\n const pulumiImpl = await ExtensionSrcResolver.importFromPath(\n pulumiExtension.params.src,\n project\n );\n container.register(pulumiImpl).inSingletonScope();\n }\n};\n"],"mappings":"AAGA,SAASA,oBAAoB;AAC7B,SACIC,UAAU,IAAIC,aAAa,EAC3BC,SAAS,IAAIC,YAAY,EACzBC,WAAW,IAAIC,cAAc;AAGjC,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CACpCC,SAAoB,EACpBC,iBAAsC,EACtCC,OAAsB,KACrB;EACD,MAAMC,gBAAgB,GAAG,CACrB,GAAGF,iBAAiB,CAACG,gBAAgB,CAACV,aAAa,CAAC,EACpD,GAAGO,iBAAiB,CAACG,gBAAgB,CAACR,YAAY,CAAC,EACnD,GAAGK,iBAAiB,CAACG,gBAAgB,CAACN,cAAc,CAAC,CACxD;EAED,KAAK,MAAMO,eAAe,IAAIF,gBAAgB,EAAE;IAC5C,MAAMG,UAAU,GAAG,MAAMd,oBAAoB,CAACe,cAAc,CACxDF,eAAe,CAACG,MAAM,CAACC,GAAG,EAC1BP,OACJ,CAAC;IACDF,SAAS,CAACU,QAAQ,CAACJ,UAAU,CAAC,CAACK,gBAAgB,CAAC,CAAC;EACrD;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ExtensionSrcResolver","registerPulumiExtensions","container","projectExtensions","project","pulumiExtensions","extensionsByType","pulumiExtension","src","params","pulumiImpl","importFromPath","register","inSingletonScope"],"sources":["registerPulumiExtensions.ts"],"sourcesContent":["import { type IProjectModel } from \"~/abstractions/models/index.js\";\nimport { type IProjectConfigModel } from \"~/abstractions/models/index.js\";\nimport { Container } from \"@webiny/di\";\nimport { ExtensionSrcResolver } from \"~/utils/index.js\";\n\nexport const registerPulumiExtensions = async (\n container: Container,\n projectExtensions: IProjectConfigModel,\n project: IProjectModel\n) => {\n const pulumiExtensions = [\n ...projectExtensions.extensionsByType(\"Core/Pulumi\"),\n ...projectExtensions.extensionsByType(\"Api/Pulumi\"),\n ...projectExtensions.extensionsByType(\"Admin/Pulumi\")\n ];\n\n for (const pulumiExtension of pulumiExtensions) {\n const { src } = pulumiExtension.params as { src: string };\n const pulumiImpl = await ExtensionSrcResolver.importFromPath(src, project);\n container.register(pulumiImpl).inSingletonScope();\n }\n};\n"],"mappings":"AAGA,SAASA,oBAAoB;AAE7B,OAAO,MAAMC,wBAAwB,GAAG,MAAAA,CACpCC,SAAoB,EACpBC,iBAAsC,EACtCC,OAAsB,KACrB;EACD,MAAMC,gBAAgB,GAAG,CACrB,GAAGF,iBAAiB,CAACG,gBAAgB,CAAC,aAAa,CAAC,EACpD,GAAGH,iBAAiB,CAACG,gBAAgB,CAAC,YAAY,CAAC,EACnD,GAAGH,iBAAiB,CAACG,gBAAgB,CAAC,cAAc,CAAC,CACxD;EAED,KAAK,MAAMC,eAAe,IAAIF,gBAAgB,EAAE;IAC5C,MAAM;MAAEG;IAAI,CAAC,GAAGD,eAAe,CAACE,MAAyB;IACzD,MAAMC,UAAU,GAAG,MAAMV,oBAAoB,CAACW,cAAc,CAACH,GAAG,EAAEJ,OAAO,CAAC;IAC1EF,SAAS,CAACU,QAAQ,CAACF,UAAU,CAAC,CAACG,gBAAgB,CAAC,CAAC;EACrD;AACJ,CAAC","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import { S3Client, ListObjectsV2Command, GetObjectCommand } from "@webiny/aws-sdk/client-s3/index.js";
2
1
  import fs from "fs";
3
2
  import path from "path";
4
3
  export class NoObjectsFoundError extends Error {
@@ -15,65 +14,57 @@ export const downloadFolderFromS3 = async params => {
15
14
  bucketFolderKey,
16
15
  downloadFolderPath
17
16
  } = params;
18
-
19
- // Prepend v6/ to the folder key
20
17
  const s3FolderKey = `v6/${bucketFolderKey}`;
21
-
22
- // Configure the S3 client
23
- const s3Client = new S3Client({
24
- region: bucketRegion
25
- });
26
-
27
- // List all objects in the specified S3 folder
28
- const listObjects = async (bucket, folderKey) => {
29
- const command = new ListObjectsV2Command({
30
- Bucket: bucket,
31
- Prefix: folderKey
32
- });
33
- const response = await s3Client.send(command);
34
- return response.Contents;
18
+ const baseUrl = `https://${bucketName}.s3.${bucketRegion}.amazonaws.com`;
19
+ const listObjects = async () => {
20
+ const keys = [];
21
+ let continuationToken;
22
+ do {
23
+ let url = `${baseUrl}/?list-type=2&prefix=${encodeURIComponent(s3FolderKey)}`;
24
+ if (continuationToken) {
25
+ url += `&continuation-token=${encodeURIComponent(continuationToken)}`;
26
+ }
27
+ const response = await fetch(url);
28
+ if (!response.ok) {
29
+ throw new Error(`Failed to list objects: ${response.status} ${response.statusText}`);
30
+ }
31
+ const xml = await response.text();
32
+ for (const match of xml.matchAll(/<Key>([^<]+)<\/Key>/g)) {
33
+ keys.push(match[1]);
34
+ }
35
+ const isTruncated = xml.includes("<IsTruncated>true</IsTruncated>");
36
+ continuationToken = isTruncated ? xml.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1] : undefined;
37
+ } while (continuationToken);
38
+ return keys;
35
39
  };
36
-
37
- // Download an individual file from S3
38
- const downloadFile = async (bucket, key, localPath) => {
39
- const command = new GetObjectCommand({
40
- Bucket: bucket,
41
- Key: key
42
- });
43
- const response = await s3Client.send(command);
44
- return new Promise((resolve, reject) => {
45
- const fileStream = fs.createWriteStream(localPath);
46
- // @ts-expect-error Body is a stream
47
- response.Body.pipe(fileStream);
48
- // @ts-expect-error Body is a stream
49
- response.Body.on("error", reject);
50
- fileStream.on("finish", () => resolve());
51
- });
40
+ const downloadFile = async (key, localPath) => {
41
+ const response = await fetch(`${baseUrl}/${key}`);
42
+ if (!response.ok) {
43
+ throw new Error(`Failed to download ${key}: ${response.status} ${response.statusText}`);
44
+ }
45
+ fs.writeFileSync(localPath, Buffer.from(await response.arrayBuffer()));
52
46
  };
53
- const objects = (await listObjects(bucketName, s3FolderKey)) || [];
54
- if (!objects.length) {
47
+ const keys = await listObjects();
48
+ if (!keys.length) {
55
49
  throw new NoObjectsFoundError(`No objects found in the specified S3 folder.`);
56
50
  }
57
- for (const object of objects) {
58
- const s3Key = object.Key;
59
- const relativePath = path.relative(s3FolderKey, s3Key);
51
+ for (const key of keys) {
52
+ const relativePath = path.relative(s3FolderKey, key);
60
53
  const localFilePath = path.join(downloadFolderPath, relativePath);
61
- if (s3Key.endsWith("/")) {
62
- // It's a directory, create it if it doesn't exist.
54
+ if (key.endsWith("/")) {
63
55
  if (!fs.existsSync(localFilePath)) {
64
56
  fs.mkdirSync(localFilePath, {
65
57
  recursive: true
66
58
  });
67
59
  }
68
60
  } else {
69
- // It's a file, download it.
70
61
  const localDirPath = path.dirname(localFilePath);
71
62
  if (!fs.existsSync(localDirPath)) {
72
63
  fs.mkdirSync(localDirPath, {
73
64
  recursive: true
74
65
  });
75
66
  }
76
- await downloadFile(bucketName, s3Key, localFilePath);
67
+ await downloadFile(key, localFilePath);
77
68
  }
78
69
  }
79
70
  };
@@ -1 +1 @@
1
- {"version":3,"names":["S3Client","ListObjectsV2Command","GetObjectCommand","fs","path","NoObjectsFoundError","Error","code","constructor","message","name","downloadFolderFromS3","params","bucketName","bucketRegion","bucketFolderKey","downloadFolderPath","s3FolderKey","s3Client","region","listObjects","bucket","folderKey","command","Bucket","Prefix","response","send","Contents","downloadFile","key","localPath","Key","Promise","resolve","reject","fileStream","createWriteStream","Body","pipe","on","objects","length","object","s3Key","relativePath","relative","localFilePath","join","endsWith","existsSync","mkdirSync","recursive","localDirPath","dirname"],"sources":["downloadFolderFromS3.ts"],"sourcesContent":["import {\n S3Client,\n ListObjectsV2Command,\n GetObjectCommand\n} from \"@webiny/aws-sdk/client-s3/index.js\";\nimport fs from \"fs\";\nimport path from \"path\";\n\ninterface DownloadFolderFromS3Params {\n bucketName: string;\n bucketRegion: string;\n bucketFolderKey: string;\n downloadFolderPath: string;\n}\n\nexport class NoObjectsFoundError extends Error {\n code = \"NO_OBJECTS_FOUND\";\n constructor(message: string) {\n super(message);\n this.name = \"NoObjectsFoundError\";\n }\n}\n\nexport const downloadFolderFromS3 = async (params: DownloadFolderFromS3Params) => {\n const { bucketName, bucketRegion, bucketFolderKey, downloadFolderPath } = params;\n\n // Prepend v6/ to the folder key\n const s3FolderKey = `v6/${bucketFolderKey}`;\n\n // Configure the S3 client\n const s3Client = new S3Client({ region: bucketRegion });\n\n // List all objects in the specified S3 folder\n const listObjects = async (bucket: string, folderKey: string) => {\n const command = new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: folderKey\n });\n const response = await s3Client.send(command);\n return response.Contents;\n };\n\n // Download an individual file from S3\n const downloadFile = async (bucket: string, key: string, localPath: string) => {\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key\n });\n\n const response = await s3Client.send(command);\n\n return new Promise<void>((resolve, reject) => {\n const fileStream = fs.createWriteStream(localPath);\n // @ts-expect-error Body is a stream\n response.Body.pipe(fileStream);\n // @ts-expect-error Body is a stream\n response.Body.on(\"error\", reject);\n fileStream.on(\"finish\", () => resolve());\n });\n };\n\n const objects = (await listObjects(bucketName, s3FolderKey)) || [];\n if (!objects.length) {\n throw new NoObjectsFoundError(`No objects found in the specified S3 folder.`);\n }\n\n for (const object of objects) {\n const s3Key = object.Key!;\n const relativePath = path.relative(s3FolderKey, s3Key);\n const localFilePath = path.join(downloadFolderPath, relativePath);\n\n if (s3Key.endsWith(\"/\")) {\n // It's a directory, create it if it doesn't exist.\n if (!fs.existsSync(localFilePath)) {\n fs.mkdirSync(localFilePath, { recursive: true });\n }\n } else {\n // It's a file, download it.\n const localDirPath = path.dirname(localFilePath);\n if (!fs.existsSync(localDirPath)) {\n fs.mkdirSync(localDirPath, { recursive: true });\n }\n\n await downloadFile(bucketName, s3Key, localFilePath);\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["fs","path","NoObjectsFoundError","Error","code","constructor","message","name","downloadFolderFromS3","params","bucketName","bucketRegion","bucketFolderKey","downloadFolderPath","s3FolderKey","baseUrl","listObjects","keys","continuationToken","url","encodeURIComponent","response","fetch","ok","status","statusText","xml","text","match","matchAll","push","isTruncated","includes","undefined","downloadFile","key","localPath","writeFileSync","Buffer","from","arrayBuffer","length","relativePath","relative","localFilePath","join","endsWith","existsSync","mkdirSync","recursive","localDirPath","dirname"],"sources":["downloadFolderFromS3.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\ninterface DownloadFolderFromS3Params {\n bucketName: string;\n bucketRegion: string;\n bucketFolderKey: string;\n downloadFolderPath: string;\n}\n\nexport class NoObjectsFoundError extends Error {\n code = \"NO_OBJECTS_FOUND\";\n constructor(message: string) {\n super(message);\n this.name = \"NoObjectsFoundError\";\n }\n}\n\nexport const downloadFolderFromS3 = async (params: DownloadFolderFromS3Params) => {\n const { bucketName, bucketRegion, bucketFolderKey, downloadFolderPath } = params;\n\n const s3FolderKey = `v6/${bucketFolderKey}`;\n const baseUrl = `https://${bucketName}.s3.${bucketRegion}.amazonaws.com`;\n\n const listObjects = async (): Promise<string[]> => {\n const keys: string[] = [];\n let continuationToken: string | undefined;\n\n do {\n let url = `${baseUrl}/?list-type=2&prefix=${encodeURIComponent(s3FolderKey)}`;\n if (continuationToken) {\n url += `&continuation-token=${encodeURIComponent(continuationToken)}`;\n }\n\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to list objects: ${response.status} ${response.statusText}`\n );\n }\n\n const xml = await response.text();\n\n for (const match of xml.matchAll(/<Key>([^<]+)<\\/Key>/g)) {\n keys.push(match[1]);\n }\n\n const isTruncated = xml.includes(\"<IsTruncated>true</IsTruncated>\");\n continuationToken = isTruncated\n ? xml.match(/<NextContinuationToken>([^<]+)<\\/NextContinuationToken>/)?.[1]\n : undefined;\n } while (continuationToken);\n\n return keys;\n };\n\n const downloadFile = async (key: string, localPath: string): Promise<void> => {\n const response = await fetch(`${baseUrl}/${key}`);\n if (!response.ok) {\n throw new Error(`Failed to download ${key}: ${response.status} ${response.statusText}`);\n }\n fs.writeFileSync(localPath, Buffer.from(await response.arrayBuffer()));\n };\n\n const keys = await listObjects();\n if (!keys.length) {\n throw new NoObjectsFoundError(`No objects found in the specified S3 folder.`);\n }\n\n for (const key of keys) {\n const relativePath = path.relative(s3FolderKey, key);\n const localFilePath = path.join(downloadFolderPath, relativePath);\n\n if (key.endsWith(\"/\")) {\n if (!fs.existsSync(localFilePath)) {\n fs.mkdirSync(localFilePath, { recursive: true });\n }\n } else {\n const localDirPath = path.dirname(localFilePath);\n if (!fs.existsSync(localDirPath)) {\n fs.mkdirSync(localDirPath, { recursive: true });\n }\n await downloadFile(key, localFilePath);\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ import path from "path";
5
5
  import glob from "fast-glob";
6
6
  const globToRegex = pattern => {
7
7
  // Escape regex special chars except *
8
- const escaped = pattern.replace(/[-\/\\^$+?.()|[\]{}]/g, "\\$&");
8
+ const escaped = pattern.replace(/[-/\\^$+?.()|[\]{}]/g, "\\$&");
9
9
  // Replace * with .* in regex pattern
10
10
  const regexStr = "^" + escaped.replace(/\*/g, ".*") + "$";
11
11
  return new RegExp(regexStr);
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","GetAppService","GetProjectService","ListPackagesService","fs","path","glob","globToRegex","pattern","escaped","replace","regexStr","RegExp","matchesGlobPattern","packageName","regex","test","withoutPrefix","startsWith","regexWithPrefix","DefaultListPackagesService","constructor","getProjectService","getAppService","execute","params","appName","packageWhitelist","Error","project","app","packagesFullList","packagesFolderPath","paths","rootFolder","join","toString","existsSync","readdirSync","map","name","pkgFolderPath","webinyConfigPath","packageFolder","webinyConfigFile","filter","Boolean","webinyConfigPaths","sync","cwd","workspaceFolder","absolute","ignore","appPackages","packageFolderPath","dirname","basename","push","packagesToWatch","length","whitelistedPackages","whitelistedPkgName","split","flat","trim","pkg","includes","listPackagesService","abstraction","implementation","dependencies"],"sources":["ListPackagesService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { GetAppService, GetProjectService, ListPackagesService } from \"~/abstractions/index.js\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport glob from \"fast-glob\";\n\nconst globToRegex = (pattern: string) => {\n // Escape regex special chars except *\n const escaped = pattern.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, \"\\\\$&\");\n // Replace * with .* in regex pattern\n const regexStr = \"^\" + escaped.replace(/\\*/g, \".*\") + \"$\";\n return new RegExp(regexStr);\n};\n\nconst matchesGlobPattern = (packageName: string, pattern: string): boolean => {\n // Try matching with the full package name\n const regex = globToRegex(pattern);\n if (regex.test(packageName)) {\n return true;\n }\n\n // Also try matching against the name without @webiny/ or @app/ prefix\n const withoutPrefix = packageName.replace(/^@[^/]+\\//, \"\");\n if (regex.test(withoutPrefix)) {\n return true;\n }\n\n // If pattern doesn't start with @, also try adding @webiny/ prefix to pattern\n if (!pattern.startsWith(\"@\")) {\n const regexWithPrefix = globToRegex(`@webiny/${pattern}`);\n if (regexWithPrefix.test(packageName)) {\n return true;\n }\n }\n\n return false;\n};\n\nexport class DefaultListPackagesService implements ListPackagesService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getAppService: GetAppService.Interface\n ) {}\n\n async execute(params: ListPackagesService.Params) {\n if (!params.appName && !params.packageWhitelist) {\n throw new Error(`Either \"packageWhitelist\" or \"appName\" argument must be provided.`);\n }\n\n const { packageWhitelist = [], appName } = params;\n const project = this.getProjectService.execute();\n const app = appName ? this.getAppService.execute(appName) : null;\n\n // List all packages in `packages` folder.\n let packagesFullList: ListPackagesService.Result = [];\n\n const packagesFolderPath = project.paths.rootFolder.join(\"packages\").toString();\n if (fs.existsSync(packagesFolderPath)) {\n packagesFullList = fs\n .readdirSync(project.paths.rootFolder.join(\"packages\").toString())\n .map(name => {\n const pkgFolderPath = project.paths.rootFolder\n .join(\"/packages/\", name)\n .toString();\n\n let webinyConfigPath = path.join(pkgFolderPath, \"webiny.config.ts\");\n if (!fs.existsSync(webinyConfigPath)) {\n webinyConfigPath = path.join(pkgFolderPath, \"webiny.config.js\");\n }\n\n return {\n name: `@webiny/${name}`,\n paths: {\n packageFolder: pkgFolderPath,\n webinyConfigFile: webinyConfigPath\n }\n } as ListPackagesService.Package;\n })\n .filter(Boolean);\n }\n\n if (app) {\n const webinyConfigPaths = glob.sync(\"**/webiny.config.@(ts|js)\", {\n cwd: app.paths.workspaceFolder.toString(),\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/dist/**\"]\n });\n\n const appPackages = webinyConfigPaths.map(webinyConfigPath => {\n const packageFolderPath = path.dirname(webinyConfigPath);\n const packageName = path.basename(packageFolderPath);\n\n return {\n name: `@${app.name}/${packageName}`,\n paths: {\n packageFolder: packageFolderPath,\n webinyConfigFile: webinyConfigPath\n }\n } as ListPackagesService.Package;\n });\n\n packagesFullList.push(...appPackages);\n }\n\n const packagesToWatch = [];\n\n if (packageWhitelist.length) {\n const whitelistedPackages = packageWhitelist\n .map(whitelistedPkgName => {\n return whitelistedPkgName.split(\",\");\n })\n .flat()\n .map(whitelistedPkgName => whitelistedPkgName.trim())\n .map(whitelistedPkgName => {\n return packagesFullList.filter(pkg => {\n if (whitelistedPkgName.includes(\"*\")) {\n return matchesGlobPattern(pkg.name, whitelistedPkgName);\n }\n\n // We consider both `name` and `@webiny/name` as valid package names.\n // The @webiny/ prefix is optional (makes it easier to type for us).\n return (\n pkg.name === whitelistedPkgName ||\n pkg.name === `@webiny/${whitelistedPkgName}`\n );\n });\n })\n .flat()\n .filter(Boolean) as ListPackagesService.Result;\n\n packagesToWatch.push(...whitelistedPackages);\n }\n\n if (app) {\n // We've hardcoded this filtering here just because of lack of time.\n // With v5, these \"presets\" were located within `webiny.application.ts` files.\n if (app.name === \"api\") {\n packagesToWatch.push(\n ...packagesFullList.filter(pkg => {\n return pkg.name === \"@api/graphql\";\n })\n );\n\n return packagesToWatch;\n }\n\n packagesToWatch.push(\n ...packagesFullList.filter(pkg => {\n return pkg.name.startsWith(`@${app.name}`);\n })\n );\n }\n\n return packagesToWatch;\n }\n}\n\nexport const listPackagesService = createImplementation({\n abstraction: ListPackagesService,\n implementation: DefaultListPackagesService,\n // TODO: move getApp into a service\n dependencies: [GetProjectService, GetAppService]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","GetAppService","GetProjectService","ListPackagesService","fs","path","glob","globToRegex","pattern","escaped","replace","regexStr","RegExp","matchesGlobPattern","packageName","regex","test","withoutPrefix","startsWith","regexWithPrefix","DefaultListPackagesService","constructor","getProjectService","getAppService","execute","params","appName","packageWhitelist","Error","project","app","packagesFullList","packagesFolderPath","paths","rootFolder","join","toString","existsSync","readdirSync","map","name","pkgFolderPath","webinyConfigPath","packageFolder","webinyConfigFile","filter","Boolean","webinyConfigPaths","sync","cwd","workspaceFolder","absolute","ignore","appPackages","packageFolderPath","dirname","basename","push","packagesToWatch","length","whitelistedPackages","whitelistedPkgName","split","flat","trim","pkg","includes","listPackagesService","abstraction","implementation","dependencies"],"sources":["ListPackagesService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { GetAppService, GetProjectService, ListPackagesService } from \"~/abstractions/index.js\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport glob from \"fast-glob\";\n\nconst globToRegex = (pattern: string) => {\n // Escape regex special chars except *\n const escaped = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, \"\\\\$&\");\n // Replace * with .* in regex pattern\n const regexStr = \"^\" + escaped.replace(/\\*/g, \".*\") + \"$\";\n return new RegExp(regexStr);\n};\n\nconst matchesGlobPattern = (packageName: string, pattern: string): boolean => {\n // Try matching with the full package name\n const regex = globToRegex(pattern);\n if (regex.test(packageName)) {\n return true;\n }\n\n // Also try matching against the name without @webiny/ or @app/ prefix\n const withoutPrefix = packageName.replace(/^@[^/]+\\//, \"\");\n if (regex.test(withoutPrefix)) {\n return true;\n }\n\n // If pattern doesn't start with @, also try adding @webiny/ prefix to pattern\n if (!pattern.startsWith(\"@\")) {\n const regexWithPrefix = globToRegex(`@webiny/${pattern}`);\n if (regexWithPrefix.test(packageName)) {\n return true;\n }\n }\n\n return false;\n};\n\nexport class DefaultListPackagesService implements ListPackagesService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getAppService: GetAppService.Interface\n ) {}\n\n async execute(params: ListPackagesService.Params) {\n if (!params.appName && !params.packageWhitelist) {\n throw new Error(`Either \"packageWhitelist\" or \"appName\" argument must be provided.`);\n }\n\n const { packageWhitelist = [], appName } = params;\n const project = this.getProjectService.execute();\n const app = appName ? this.getAppService.execute(appName) : null;\n\n // List all packages in `packages` folder.\n let packagesFullList: ListPackagesService.Result = [];\n\n const packagesFolderPath = project.paths.rootFolder.join(\"packages\").toString();\n if (fs.existsSync(packagesFolderPath)) {\n packagesFullList = fs\n .readdirSync(project.paths.rootFolder.join(\"packages\").toString())\n .map(name => {\n const pkgFolderPath = project.paths.rootFolder\n .join(\"/packages/\", name)\n .toString();\n\n let webinyConfigPath = path.join(pkgFolderPath, \"webiny.config.ts\");\n if (!fs.existsSync(webinyConfigPath)) {\n webinyConfigPath = path.join(pkgFolderPath, \"webiny.config.js\");\n }\n\n return {\n name: `@webiny/${name}`,\n paths: {\n packageFolder: pkgFolderPath,\n webinyConfigFile: webinyConfigPath\n }\n } as ListPackagesService.Package;\n })\n .filter(Boolean);\n }\n\n if (app) {\n const webinyConfigPaths = glob.sync(\"**/webiny.config.@(ts|js)\", {\n cwd: app.paths.workspaceFolder.toString(),\n absolute: true,\n ignore: [\"**/node_modules/**\", \"**/dist/**\"]\n });\n\n const appPackages = webinyConfigPaths.map(webinyConfigPath => {\n const packageFolderPath = path.dirname(webinyConfigPath);\n const packageName = path.basename(packageFolderPath);\n\n return {\n name: `@${app.name}/${packageName}`,\n paths: {\n packageFolder: packageFolderPath,\n webinyConfigFile: webinyConfigPath\n }\n } as ListPackagesService.Package;\n });\n\n packagesFullList.push(...appPackages);\n }\n\n const packagesToWatch = [];\n\n if (packageWhitelist.length) {\n const whitelistedPackages = packageWhitelist\n .map(whitelistedPkgName => {\n return whitelistedPkgName.split(\",\");\n })\n .flat()\n .map(whitelistedPkgName => whitelistedPkgName.trim())\n .map(whitelistedPkgName => {\n return packagesFullList.filter(pkg => {\n if (whitelistedPkgName.includes(\"*\")) {\n return matchesGlobPattern(pkg.name, whitelistedPkgName);\n }\n\n // We consider both `name` and `@webiny/name` as valid package names.\n // The @webiny/ prefix is optional (makes it easier to type for us).\n return (\n pkg.name === whitelistedPkgName ||\n pkg.name === `@webiny/${whitelistedPkgName}`\n );\n });\n })\n .flat()\n .filter(Boolean) as ListPackagesService.Result;\n\n packagesToWatch.push(...whitelistedPackages);\n }\n\n if (app) {\n // We've hardcoded this filtering here just because of lack of time.\n // With v5, these \"presets\" were located within `webiny.application.ts` files.\n if (app.name === \"api\") {\n packagesToWatch.push(\n ...packagesFullList.filter(pkg => {\n return pkg.name === \"@api/graphql\";\n })\n );\n\n return packagesToWatch;\n }\n\n packagesToWatch.push(\n ...packagesFullList.filter(pkg => {\n return pkg.name.startsWith(`@${app.name}`);\n })\n );\n }\n\n return packagesToWatch;\n }\n}\n\nexport const listPackagesService = createImplementation({\n abstraction: ListPackagesService,\n implementation: DefaultListPackagesService,\n // TODO: move getApp into a service\n dependencies: [GetProjectService, GetAppService]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -12,7 +12,7 @@ export class DefaultProjectInfoService {
12
12
  async execute() {
13
13
  const wcpProjectId = process.env.WEBINY_PROJECT_ID || process.env.WCP_PROJECT_ID || "";
14
14
  // const wcpUser = await getUser().catch(() => null);
15
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ // oxlint-disable-next-line typescript/no-unused-vars
16
16
  const wcpUsingProjectEnvironmentApiKey = Boolean(process.env.WEBINY_PROJECT_API_KEY || process.env.WCP_PROJECT_ENVIRONMENT_API_KEY || process.env.WCP_ENVIRONMENT_API_KEY);
17
17
  const isCI = this.getIsCi.execute();
18
18
  const npmVersion = this.getNpmVersion.execute();
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","ProjectInfoService","GetIsCiService","GetNpmVersionService","GetNpxVersionService","GetPulumiVersionService","GetYarnVersionService","GetProjectVersionService","DefaultProjectInfoService","constructor","getIsCi","getNpmVersion","getNpxVersion","getPulumiVersion","getYarnVersion","getProjectVersion","execute","wcpProjectId","process","env","WEBINY_PROJECT_ID","WCP_PROJECT_ID","wcpUsingProjectEnvironmentApiKey","Boolean","WEBINY_PROJECT_API_KEY","WCP_PROJECT_ENVIRONMENT_API_KEY","WCP_ENVIRONMENT_API_KEY","isCI","npmVersion","npxVersion","yarnVersion","pulumiVersion","pulumiAwsVersion","webiny","version","debugEnabled","DEBUG","featureFlags","WEBINY_FEATURE_FLAGS","wcp","projectId","usingProjectEnvironmentApiKey","host","os","platform","arch","nodeJs","npm","npx","yarn","pulumi","secretsProvider","PULUMI_SECRETS_PROVIDER","usingPassword","PULUMI_CONFIG_PASSPHRASE","projectInfoService","abstraction","implementation","dependencies"],"sources":["ProjectInfoService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport {\n ProjectInfoService,\n GetIsCiService,\n GetNpmVersionService,\n GetNpxVersionService,\n GetPulumiVersionService,\n GetYarnVersionService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { IProjectInfoServiceResult } from \"~/abstractions/services/ProjectInfoService/ProjectInfoService.js\";\n\nexport class DefaultProjectInfoService implements ProjectInfoService.Interface {\n constructor(\n private getIsCi: GetIsCiService.Interface,\n private getNpmVersion: GetNpmVersionService.Interface,\n private getNpxVersion: GetNpxVersionService.Interface,\n private getPulumiVersion: GetPulumiVersionService.Interface,\n private getYarnVersion: GetYarnVersionService.Interface,\n private getProjectVersion: GetProjectVersionService.Interface\n ) {}\n\n async execute() {\n const wcpProjectId = process.env.WEBINY_PROJECT_ID || process.env.WCP_PROJECT_ID || \"\";\n // const wcpUser = await getUser().catch(() => null);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const wcpUsingProjectEnvironmentApiKey = Boolean(\n process.env.WEBINY_PROJECT_API_KEY ||\n process.env.WCP_PROJECT_ENVIRONMENT_API_KEY ||\n process.env.WCP_ENVIRONMENT_API_KEY\n );\n\n const isCI = this.getIsCi.execute();\n const npmVersion = this.getNpmVersion.execute();\n const npxVersion = this.getNpxVersion.execute();\n const yarnVersion = this.getYarnVersion.execute();\n const [pulumiVersion, pulumiAwsVersion] = this.getPulumiVersion.execute();\n\n return {\n webiny: {\n version: this.getProjectVersion.execute(),\n debugEnabled: process.env.DEBUG === \"true\",\n featureFlags: process.env.WEBINY_FEATURE_FLAGS || {}\n },\n wcp: {\n projectId: wcpProjectId,\n // user: wcpUser?.email || \"N/A\",\n usingProjectEnvironmentApiKey: false // wcpUsingProject\n },\n host: {\n os: `${process.platform} (${process.arch})`,\n nodeJs: process.version,\n npm: npmVersion,\n npx: npxVersion,\n yarn: yarnVersion,\n isCI: isCI\n },\n pulumi: {\n \"@pulumi/pulumi\": pulumiVersion,\n \"@pulumi/aws\": pulumiAwsVersion,\n secretsProvider: process.env.PULUMI_SECRETS_PROVIDER || \"\",\n usingPassword: !!process.env.PULUMI_CONFIG_PASSPHRASE\n }\n } as IProjectInfoServiceResult;\n }\n}\n\nexport const projectInfoService = createImplementation({\n abstraction: ProjectInfoService,\n implementation: DefaultProjectInfoService,\n dependencies: [\n GetIsCiService,\n GetNpmVersionService,\n GetNpxVersionService,\n GetPulumiVersionService,\n GetYarnVersionService,\n GetProjectVersionService\n ]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AACjD,SACIC,kBAAkB,EAClBC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,EACrBC,wBAAwB;AAI5B,OAAO,MAAMC,yBAAyB,CAAyC;EAC3EC,WAAWA,CACCC,OAAiC,EACjCC,aAA6C,EAC7CC,aAA6C,EAC7CC,gBAAmD,EACnDC,cAA+C,EAC/CC,iBAAqD,EAC/D;IAAA,KANUL,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,gBAAmD,GAAnDA,gBAAmD;IAAA,KACnDC,cAA+C,GAA/CA,cAA+C;IAAA,KAC/CC,iBAAqD,GAArDA,iBAAqD;EAC9D;EAEH,MAAMC,OAAOA,CAAA,EAAG;IACZ,MAAMC,YAAY,GAAGC,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,IAAI,EAAE;IACtF;IACA;IACA,MAAMC,gCAAgC,GAAGC,OAAO,CAC5CL,OAAO,CAACC,GAAG,CAACK,sBAAsB,IAClCN,OAAO,CAACC,GAAG,CAACM,+BAA+B,IAC3CP,OAAO,CAACC,GAAG,CAACO,uBAChB,CAAC;IAED,MAAMC,IAAI,GAAG,IAAI,CAACjB,OAAO,CAACM,OAAO,CAAC,CAAC;IACnC,MAAMY,UAAU,GAAG,IAAI,CAACjB,aAAa,CAACK,OAAO,CAAC,CAAC;IAC/C,MAAMa,UAAU,GAAG,IAAI,CAACjB,aAAa,CAACI,OAAO,CAAC,CAAC;IAC/C,MAAMc,WAAW,GAAG,IAAI,CAAChB,cAAc,CAACE,OAAO,CAAC,CAAC;IACjD,MAAM,CAACe,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAI,CAACnB,gBAAgB,CAACG,OAAO,CAAC,CAAC;IAEzE,OAAO;MACHiB,MAAM,EAAE;QACJC,OAAO,EAAE,IAAI,CAACnB,iBAAiB,CAACC,OAAO,CAAC,CAAC;QACzCmB,YAAY,EAAEjB,OAAO,CAACC,GAAG,CAACiB,KAAK,KAAK,MAAM;QAC1CC,YAAY,EAAEnB,OAAO,CAACC,GAAG,CAACmB,oBAAoB,IAAI,CAAC;MACvD,CAAC;MACDC,GAAG,EAAE;QACDC,SAAS,EAAEvB,YAAY;QACvB;QACAwB,6BAA6B,EAAE,KAAK,CAAC;MACzC,CAAC;MACDC,IAAI,EAAE;QACFC,EAAE,EAAE,GAAGzB,OAAO,CAAC0B,QAAQ,KAAK1B,OAAO,CAAC2B,IAAI,GAAG;QAC3CC,MAAM,EAAE5B,OAAO,CAACgB,OAAO;QACvBa,GAAG,EAAEnB,UAAU;QACfoB,GAAG,EAAEnB,UAAU;QACfoB,IAAI,EAAEnB,WAAW;QACjBH,IAAI,EAAEA;MACV,CAAC;MACDuB,MAAM,EAAE;QACJ,gBAAgB,EAAEnB,aAAa;QAC/B,aAAa,EAAEC,gBAAgB;QAC/BmB,eAAe,EAAEjC,OAAO,CAACC,GAAG,CAACiC,uBAAuB,IAAI,EAAE;QAC1DC,aAAa,EAAE,CAAC,CAACnC,OAAO,CAACC,GAAG,CAACmC;MACjC;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,kBAAkB,GAAGvD,oBAAoB,CAAC;EACnDwD,WAAW,EAAEvD,kBAAkB;EAC/BwD,cAAc,EAAEjD,yBAAyB;EACzCkD,YAAY,EAAE,CACVxD,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,EACrBC,wBAAwB;AAEhC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createImplementation","ProjectInfoService","GetIsCiService","GetNpmVersionService","GetNpxVersionService","GetPulumiVersionService","GetYarnVersionService","GetProjectVersionService","DefaultProjectInfoService","constructor","getIsCi","getNpmVersion","getNpxVersion","getPulumiVersion","getYarnVersion","getProjectVersion","execute","wcpProjectId","process","env","WEBINY_PROJECT_ID","WCP_PROJECT_ID","wcpUsingProjectEnvironmentApiKey","Boolean","WEBINY_PROJECT_API_KEY","WCP_PROJECT_ENVIRONMENT_API_KEY","WCP_ENVIRONMENT_API_KEY","isCI","npmVersion","npxVersion","yarnVersion","pulumiVersion","pulumiAwsVersion","webiny","version","debugEnabled","DEBUG","featureFlags","WEBINY_FEATURE_FLAGS","wcp","projectId","usingProjectEnvironmentApiKey","host","os","platform","arch","nodeJs","npm","npx","yarn","pulumi","secretsProvider","PULUMI_SECRETS_PROVIDER","usingPassword","PULUMI_CONFIG_PASSPHRASE","projectInfoService","abstraction","implementation","dependencies"],"sources":["ProjectInfoService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport {\n ProjectInfoService,\n GetIsCiService,\n GetNpmVersionService,\n GetNpxVersionService,\n GetPulumiVersionService,\n GetYarnVersionService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { IProjectInfoServiceResult } from \"~/abstractions/services/ProjectInfoService/ProjectInfoService.js\";\n\nexport class DefaultProjectInfoService implements ProjectInfoService.Interface {\n constructor(\n private getIsCi: GetIsCiService.Interface,\n private getNpmVersion: GetNpmVersionService.Interface,\n private getNpxVersion: GetNpxVersionService.Interface,\n private getPulumiVersion: GetPulumiVersionService.Interface,\n private getYarnVersion: GetYarnVersionService.Interface,\n private getProjectVersion: GetProjectVersionService.Interface\n ) {}\n\n async execute() {\n const wcpProjectId = process.env.WEBINY_PROJECT_ID || process.env.WCP_PROJECT_ID || \"\";\n // const wcpUser = await getUser().catch(() => null);\n // oxlint-disable-next-line typescript/no-unused-vars\n const wcpUsingProjectEnvironmentApiKey = Boolean(\n process.env.WEBINY_PROJECT_API_KEY ||\n process.env.WCP_PROJECT_ENVIRONMENT_API_KEY ||\n process.env.WCP_ENVIRONMENT_API_KEY\n );\n\n const isCI = this.getIsCi.execute();\n const npmVersion = this.getNpmVersion.execute();\n const npxVersion = this.getNpxVersion.execute();\n const yarnVersion = this.getYarnVersion.execute();\n const [pulumiVersion, pulumiAwsVersion] = this.getPulumiVersion.execute();\n\n return {\n webiny: {\n version: this.getProjectVersion.execute(),\n debugEnabled: process.env.DEBUG === \"true\",\n featureFlags: process.env.WEBINY_FEATURE_FLAGS || {}\n },\n wcp: {\n projectId: wcpProjectId,\n // user: wcpUser?.email || \"N/A\",\n usingProjectEnvironmentApiKey: false // wcpUsingProject\n },\n host: {\n os: `${process.platform} (${process.arch})`,\n nodeJs: process.version,\n npm: npmVersion,\n npx: npxVersion,\n yarn: yarnVersion,\n isCI: isCI\n },\n pulumi: {\n \"@pulumi/pulumi\": pulumiVersion,\n \"@pulumi/aws\": pulumiAwsVersion,\n secretsProvider: process.env.PULUMI_SECRETS_PROVIDER || \"\",\n usingPassword: !!process.env.PULUMI_CONFIG_PASSPHRASE\n }\n } as IProjectInfoServiceResult;\n }\n}\n\nexport const projectInfoService = createImplementation({\n abstraction: ProjectInfoService,\n implementation: DefaultProjectInfoService,\n dependencies: [\n GetIsCiService,\n GetNpmVersionService,\n GetNpxVersionService,\n GetPulumiVersionService,\n GetYarnVersionService,\n GetProjectVersionService\n ]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AACjD,SACIC,kBAAkB,EAClBC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,EACrBC,wBAAwB;AAI5B,OAAO,MAAMC,yBAAyB,CAAyC;EAC3EC,WAAWA,CACCC,OAAiC,EACjCC,aAA6C,EAC7CC,aAA6C,EAC7CC,gBAAmD,EACnDC,cAA+C,EAC/CC,iBAAqD,EAC/D;IAAA,KANUL,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,gBAAmD,GAAnDA,gBAAmD;IAAA,KACnDC,cAA+C,GAA/CA,cAA+C;IAAA,KAC/CC,iBAAqD,GAArDA,iBAAqD;EAC9D;EAEH,MAAMC,OAAOA,CAAA,EAAG;IACZ,MAAMC,YAAY,GAAGC,OAAO,CAACC,GAAG,CAACC,iBAAiB,IAAIF,OAAO,CAACC,GAAG,CAACE,cAAc,IAAI,EAAE;IACtF;IACA;IACA,MAAMC,gCAAgC,GAAGC,OAAO,CAC5CL,OAAO,CAACC,GAAG,CAACK,sBAAsB,IAClCN,OAAO,CAACC,GAAG,CAACM,+BAA+B,IAC3CP,OAAO,CAACC,GAAG,CAACO,uBAChB,CAAC;IAED,MAAMC,IAAI,GAAG,IAAI,CAACjB,OAAO,CAACM,OAAO,CAAC,CAAC;IACnC,MAAMY,UAAU,GAAG,IAAI,CAACjB,aAAa,CAACK,OAAO,CAAC,CAAC;IAC/C,MAAMa,UAAU,GAAG,IAAI,CAACjB,aAAa,CAACI,OAAO,CAAC,CAAC;IAC/C,MAAMc,WAAW,GAAG,IAAI,CAAChB,cAAc,CAACE,OAAO,CAAC,CAAC;IACjD,MAAM,CAACe,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAI,CAACnB,gBAAgB,CAACG,OAAO,CAAC,CAAC;IAEzE,OAAO;MACHiB,MAAM,EAAE;QACJC,OAAO,EAAE,IAAI,CAACnB,iBAAiB,CAACC,OAAO,CAAC,CAAC;QACzCmB,YAAY,EAAEjB,OAAO,CAACC,GAAG,CAACiB,KAAK,KAAK,MAAM;QAC1CC,YAAY,EAAEnB,OAAO,CAACC,GAAG,CAACmB,oBAAoB,IAAI,CAAC;MACvD,CAAC;MACDC,GAAG,EAAE;QACDC,SAAS,EAAEvB,YAAY;QACvB;QACAwB,6BAA6B,EAAE,KAAK,CAAC;MACzC,CAAC;MACDC,IAAI,EAAE;QACFC,EAAE,EAAE,GAAGzB,OAAO,CAAC0B,QAAQ,KAAK1B,OAAO,CAAC2B,IAAI,GAAG;QAC3CC,MAAM,EAAE5B,OAAO,CAACgB,OAAO;QACvBa,GAAG,EAAEnB,UAAU;QACfoB,GAAG,EAAEnB,UAAU;QACfoB,IAAI,EAAEnB,WAAW;QACjBH,IAAI,EAAEA;MACV,CAAC;MACDuB,MAAM,EAAE;QACJ,gBAAgB,EAAEnB,aAAa;QAC/B,aAAa,EAAEC,gBAAgB;QAC/BmB,eAAe,EAAEjC,OAAO,CAACC,GAAG,CAACiC,uBAAuB,IAAI,EAAE;QAC1DC,aAAa,EAAE,CAAC,CAACnC,OAAO,CAACC,GAAG,CAACmC;MACjC;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAMC,kBAAkB,GAAGvD,oBAAoB,CAAC;EACnDwD,WAAW,EAAEvD,kBAAkB;EAC/BwD,cAAc,EAAEjD,yBAAyB;EACzCkD,YAAY,EAAE,CACVxD,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,EACrBC,wBAAwB;AAEhC,CAAC,CAAC","ignoreList":[]}
@@ -1,11 +0,0 @@
1
- export interface IAdminPulumi<TApp> {
2
- execute(app: TApp): void | Promise<void>;
3
- }
4
- /**
5
- * Implement this abstraction to add custom Pulumi code to Admin.
6
- */
7
- export declare const AdminPulumi: import("@webiny/di").Abstraction<IAdminPulumi<unknown>>;
8
- export declare namespace AdminPulumi {
9
- type Interface = IAdminPulumi<unknown>;
10
- type Params = unknown;
11
- }
@@ -1,7 +0,0 @@
1
- import { createAbstraction } from "../../createAbstraction.js";
2
- /**
3
- * Implement this abstraction to add custom Pulumi code to Admin.
4
- */
5
- export const AdminPulumi = createAbstraction("AdminPulumi");
6
-
7
- //# sourceMappingURL=AdminPulumi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["createAbstraction","AdminPulumi"],"sources":["AdminPulumi.ts"],"sourcesContent":["import { createAbstraction } from \"~/abstractions/createAbstraction.js\";\n\nexport interface IAdminPulumi<TApp> {\n execute(app: TApp): void | Promise<void>;\n}\n\n/**\n * Implement this abstraction to add custom Pulumi code to Admin.\n */\nexport const AdminPulumi = createAbstraction<IAdminPulumi<unknown>>(\"AdminPulumi\");\n\nexport namespace AdminPulumi {\n export type Interface = IAdminPulumi<unknown>;\n export type Params = unknown;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB;AAM1B;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAGD,iBAAiB,CAAwB,aAAa,CAAC","ignoreList":[]}