@webiny/project 6.3.0-beta.2 → 6.3.0-beta.4
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.
- package/abstractions/features/index.d.ts +0 -1
- package/abstractions/features/index.js +0 -1
- package/abstractions/features/index.js.map +1 -1
- package/defineExtension/models/ExtensionInstanceModel.js +4 -1
- package/defineExtension/models/ExtensionInstanceModel.js.map +1 -1
- package/exports/infra/admin.d.ts +0 -1
- package/exports/infra/admin.js +0 -1
- package/exports/infra/admin.js.map +1 -1
- package/exports/infra/api.d.ts +0 -1
- package/exports/infra/api.js +0 -1
- package/exports/infra/api.js.map +1 -1
- package/exports/infra/core.d.ts +0 -1
- package/exports/infra/core.js +0 -1
- package/exports/infra/core.js.map +1 -1
- package/extensions/ApiBuildParam.js +1 -1
- package/extensions/ApiBuildParam.js.map +1 -1
- package/extensions/ApiExtension.js +1 -1
- package/extensions/ApiExtension.js.map +1 -1
- package/extensions/Project/ValidateEncryptionBeforeDeploy.d.ts +12 -0
- package/extensions/Project/ValidateEncryptionBeforeDeploy.js +32 -0
- package/extensions/Project/ValidateEncryptionBeforeDeploy.js.map +1 -0
- package/extensions/Project.js +2 -0
- package/extensions/Project.js.map +1 -1
- package/extensions/ProjectId.js +1 -1
- package/extensions/ProjectId.js.map +1 -1
- package/extensions/index.d.ts +1 -4
- package/extensions/index.js +5 -8
- package/extensions/index.js.map +1 -1
- package/extensions/infra/Env.d.ts +6 -0
- package/extensions/infra/Env.js +21 -0
- package/extensions/infra/Env.js.map +1 -1
- package/extensions/pulumi/ProductionEnvironments.js +16 -1
- package/extensions/pulumi/ProductionEnvironments.js.map +1 -1
- package/extensions/pulumi/index.d.ts +0 -3
- package/extensions/pulumi/index.js +0 -3
- package/extensions/pulumi/index.js.map +1 -1
- package/features/index.d.ts +0 -1
- package/features/index.js +0 -1
- package/features/index.js.map +1 -1
- package/package.json +17 -17
- package/services/GetProjectConfigService/ProductionEnvironmentsContext.d.ts +6 -0
- package/services/GetProjectConfigService/ProductionEnvironmentsContext.js +21 -0
- package/services/GetProjectConfigService/ProductionEnvironmentsContext.js.map +1 -0
- package/services/GetProjectConfigService/renderConfigWorker.js +3 -2
- package/services/GetProjectConfigService/renderConfigWorker.js.map +1 -1
- package/services/InitProjectSdkService/InitProjectSdkService.js +0 -6
- package/services/InitProjectSdkService/InitProjectSdkService.js.map +1 -1
- package/services/InitProjectSdkService/registerPulumiExtensions.js +5 -3
- package/services/InitProjectSdkService/registerPulumiExtensions.js.map +1 -1
- package/services/InstallExtensionService/downloadFolderFromS3.js +33 -42
- package/services/InstallExtensionService/downloadFolderFromS3.js.map +1 -1
- package/services/ListPackagesService/ListPackagesService.js +1 -1
- package/services/ListPackagesService/ListPackagesService.js.map +1 -1
- package/services/ProjectInfoService/ProjectInfoService.js +1 -1
- package/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
- package/abstractions/features/pulumi/AdminPulumi.d.ts +0 -11
- package/abstractions/features/pulumi/AdminPulumi.js +0 -7
- package/abstractions/features/pulumi/AdminPulumi.js.map +0 -1
- package/abstractions/features/pulumi/ApiPulumi.d.ts +0 -11
- package/abstractions/features/pulumi/ApiPulumi.js +0 -7
- package/abstractions/features/pulumi/ApiPulumi.js.map +0 -1
- package/abstractions/features/pulumi/CorePulumi.d.ts +0 -11
- package/abstractions/features/pulumi/CorePulumi.js +0 -7
- package/abstractions/features/pulumi/CorePulumi.js.map +0 -1
- package/abstractions/features/pulumi/index.d.ts +0 -3
- package/abstractions/features/pulumi/index.js +0 -5
- package/abstractions/features/pulumi/index.js.map +0 -1
- package/extensions/pulumi/AdminPulumi.d.ts +0 -4
- package/extensions/pulumi/AdminPulumi.js +0 -25
- package/extensions/pulumi/AdminPulumi.js.map +0 -1
- package/extensions/pulumi/ApiPulumi.d.ts +0 -4
- package/extensions/pulumi/ApiPulumi.js +0 -25
- package/extensions/pulumi/ApiPulumi.js.map +0 -1
- package/extensions/pulumi/CorePulumi.d.ts +0 -4
- package/extensions/pulumi/CorePulumi.js +0 -25
- package/extensions/pulumi/CorePulumi.js.map +0 -1
- package/features/pulumi/AdminPulumi/AdminPulumi.d.ts +0 -7
- package/features/pulumi/AdminPulumi/AdminPulumi.js +0 -21
- package/features/pulumi/AdminPulumi/AdminPulumi.js.map +0 -1
- package/features/pulumi/AdminPulumi/index.d.ts +0 -1
- package/features/pulumi/AdminPulumi/index.js +0 -3
- package/features/pulumi/AdminPulumi/index.js.map +0 -1
- package/features/pulumi/ApiPulumi/ApiPulumi.d.ts +0 -7
- package/features/pulumi/ApiPulumi/ApiPulumi.js +0 -21
- package/features/pulumi/ApiPulumi/ApiPulumi.js.map +0 -1
- package/features/pulumi/ApiPulumi/index.d.ts +0 -1
- package/features/pulumi/ApiPulumi/index.js +0 -3
- package/features/pulumi/ApiPulumi/index.js.map +0 -1
- package/features/pulumi/CorePulumi/CorePulumi.d.ts +0 -7
- package/features/pulumi/CorePulumi/CorePulumi.js +0 -21
- package/features/pulumi/CorePulumi/CorePulumi.js.map +0 -1
- package/features/pulumi/CorePulumi/index.d.ts +0 -1
- package/features/pulumi/CorePulumi/index.js +0 -3
- package/features/pulumi/CorePulumi/index.js.map +0 -1
- package/features/pulumi/index.d.ts +0 -3
- package/features/pulumi/index.js +0 -5
- package/features/pulumi/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["z","defineExtension","ProductionEnvironments","type","tags","runtimeContext","description","
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./
|
|
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":[]}
|
package/features/index.d.ts
CHANGED
package/features/index.js
CHANGED
package/features/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./
|
|
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.
|
|
3
|
+
"version": "6.3.0-beta.4",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"
|
|
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.
|
|
14
|
-
"@webiny/build-tools": "6.3.0-beta.
|
|
16
|
+
"@webiny/aws-sdk": "6.3.0-beta.4",
|
|
17
|
+
"@webiny/build-tools": "6.3.0-beta.4",
|
|
15
18
|
"@webiny/di": "0.2.3",
|
|
16
|
-
"@webiny/feature-flags": "6.3.0-beta.
|
|
17
|
-
"@webiny/global-config": "6.3.0-beta.
|
|
18
|
-
"@webiny/pulumi-sdk": "6.3.0-beta.
|
|
19
|
-
"@webiny/react-properties": "6.3.0-beta.
|
|
20
|
-
"@webiny/system-requirements": "6.3.0-beta.
|
|
21
|
-
"@webiny/telemetry": "6.3.0-beta.
|
|
22
|
-
"@webiny/utils": "6.3.0-beta.
|
|
23
|
-
"@webiny/wcp": "6.3.0-beta.
|
|
19
|
+
"@webiny/feature-flags": "6.3.0-beta.4",
|
|
20
|
+
"@webiny/global-config": "6.3.0-beta.4",
|
|
21
|
+
"@webiny/pulumi-sdk": "6.3.0-beta.4",
|
|
22
|
+
"@webiny/react-properties": "6.3.0-beta.4",
|
|
23
|
+
"@webiny/system-requirements": "6.3.0-beta.4",
|
|
24
|
+
"@webiny/telemetry": "6.3.0-beta.4",
|
|
25
|
+
"@webiny/utils": "6.3.0-beta.4",
|
|
26
|
+
"@webiny/wcp": "6.3.0-beta.4",
|
|
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.
|
|
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": "
|
|
78
|
+
"gitHead": "7cefe15431dbd65504e1f58147dc9e55bcbfa693"
|
|
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
|
|
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","
|
|
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(
|
|
3
|
+
const pulumiExtensions = [...projectExtensions.extensionsByType("Core/Pulumi"), ...projectExtensions.extensionsByType("Api/Pulumi"), ...projectExtensions.extensionsByType("Admin/Pulumi")];
|
|
5
4
|
for (const pulumiExtension of pulumiExtensions) {
|
|
6
|
-
const
|
|
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","
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
|
54
|
-
if (!
|
|
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
|
|
58
|
-
const
|
|
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 (
|
|
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(
|
|
67
|
+
await downloadFile(key, localFilePath);
|
|
77
68
|
}
|
|
78
69
|
}
|
|
79
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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(/[
|
|
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
|
-
//
|
|
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 //
|
|
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 +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":[]}
|