@webiny/pulumi-sdk 5.27.0-beta.0 → 5.28.0
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/ApplicationBuilder.js.map +1 -1
- package/ApplicationBuilderGeneric.js.map +1 -1
- package/ApplicationBuilderLegacy.js.map +1 -1
- package/ApplicationConfig.js.map +1 -1
- package/ApplicationHook.js.map +1 -1
- package/Pulumi.js.map +1 -1
- package/PulumiApp.js.map +1 -1
- package/PulumiAppModule.js.map +1 -1
- package/PulumiResource.js.map +1 -1
- package/downloadBinaries.js.map +1 -1
- package/index.js.map +1 -1
- package/package.json +5 -5
- package/utils/getPulumiWorkDir.js.map +1 -1
- package/utils/getStackName.js.map +1 -1
- package/utils/index.js.map +1 -1
- package/utils/mergeAppHooks.js.map +1 -1
- package/utils/stagedRollouts.js.map +1 -1
- package/utils/tagResources.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["ApplicationBuilder","constructor","config","id","name","description","cli","onBeforeBuild","onAfterBuild","onBeforeDeploy","onAfterDeploy"],"sources":["ApplicationBuilder.ts"],"sourcesContent":["import { PreviewResult, RefreshResult, UpResult } from \"@pulumi/pulumi/automation\";\nimport { ApplicationHooks } from \"./ApplicationConfig\";\nimport { ApplicationHook } from \"./ApplicationHook\";\nimport { Pulumi } from \"./Pulumi\";\nimport { PulumiApp } from \"./PulumiApp\";\n\nexport interface ApplicationStackArgs {\n /** Root path of the application */\n appDir: string;\n /** Root dir of the project */\n projectDir: string;\n pulumi: Pulumi;\n debug?: boolean;\n env: string;\n variant?: string;\n}\n\nexport interface ApplicationBuilderConfig extends Partial<ApplicationHooks> {\n id: string;\n name: string;\n description?: string;\n cli?: Record<string, any>;\n}\n\nexport interface ApplicationStack {\n app?: PulumiApp;\n refresh(): Promise<RefreshResult | undefined>;\n preview(): Promise<PreviewResult | undefined>;\n up(): Promise<UpResult | undefined>;\n}\n\nexport abstract class ApplicationBuilder<\n TConfig extends ApplicationBuilderConfig = ApplicationBuilderConfig\n> implements ApplicationBuilderConfig\n{\n // It needs to duplicate configuration props for backwards compatibility.\n // There is a lot of CLI code, that depends on it.\n public readonly id: string;\n public readonly name: string;\n public readonly description?: string;\n public readonly cli?: Record<string, any>;\n public readonly onBeforeBuild?: ApplicationHook;\n public readonly onAfterBuild?: ApplicationHook;\n public readonly onBeforeDeploy?: ApplicationHook;\n public readonly onAfterDeploy?: ApplicationHook;\n\n constructor(public readonly config: TConfig) {\n this.id = config.id;\n this.name = config.name;\n this.description = config.description;\n this.cli = config.cli;\n this.onBeforeBuild = config.onBeforeBuild;\n this.onAfterBuild = config.onAfterBuild;\n this.onBeforeDeploy = config.onBeforeDeploy;\n this.onAfterDeploy = config.onAfterDeploy;\n }\n\n public abstract createOrSelectStack(args: ApplicationStackArgs): Promise<ApplicationStack>;\n}\n"],"mappings":";;;;;;;;;;;AA+BO,MAAeA,kBAAf,CAGP;EACI;EACA;EAUAC,WAAW,CAAiBC,MAAjB,EAAkC;IAAA,KAAjBA,MAAiB,GAAjBA,MAAiB;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IACzC,KAAKC,EAAL,GAAUD,MAAM,CAACC,EAAjB;IACA,KAAKC,IAAL,GAAYF,MAAM,CAACE,IAAnB;IACA,KAAKC,WAAL,GAAmBH,MAAM,CAACG,WAA1B;IACA,KAAKC,GAAL,GAAWJ,MAAM,CAACI,GAAlB;IACA,KAAKC,aAAL,GAAqBL,MAAM,CAACK,aAA5B;IACA,KAAKC,YAAL,GAAoBN,MAAM,CAACM,YAA3B;IACA,KAAKC,cAAL,GAAsBP,MAAM,CAACO,cAA7B;IACA,KAAKC,aAAL,GAAqBR,MAAM,CAACQ,aAA5B;EACH;;AArBL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["ApplicationBuilderGeneric","ApplicationBuilder","createOrSelectStack","args","PULUMI_SECRETS_PROVIDER","process","env","PATH_SEPARATOR","os","platform","relativePath","path","relative","projectDir","appDir","pulumiWorkDir","getPulumiWorkDir","fs","existsSync","mkdirSync","recursive","app","config","variant","appController","createController","workspace","LocalWorkspace","create","program","run","workDir","projectSettings","name","runtime","description","secretsProvider","pulumiHome","pulumi","pulumiFolder","envVars","WEBINY_ENV","WEBINY_PROJECT_NAME","PATH","stackName","getStackName","stack","Stack","createOrSelect","options","onOutput","line","console","log","trimNewlines","color","refresh","preview","up","result","outputs","key","Object","keys","value","deployFinished","createGenericApplication"],"sources":["ApplicationBuilderGeneric.ts"],"sourcesContent":["import os from \"os\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport trimNewlines from \"trim-newlines\";\nimport { LocalWorkspace, Stack, UpOptions } from \"@pulumi/pulumi/automation\";\n\nimport { PulumiApp } from \"./PulumiApp\";\nimport { getPulumiWorkDir, getStackName } from \"./utils\";\nimport {\n ApplicationBuilder,\n ApplicationBuilderConfig,\n ApplicationStack,\n ApplicationStackArgs\n} from \"./ApplicationBuilder\";\nimport { ApplicationContext } from \"./ApplicationConfig\";\n\nexport interface ApplicationGenericConfig extends ApplicationBuilderConfig {\n app(ctx: ApplicationContext): Promise<PulumiApp> | PulumiApp;\n}\n\nexport class ApplicationBuilderGeneric extends ApplicationBuilder<ApplicationGenericConfig> {\n public async createOrSelectStack(args: ApplicationStackArgs): Promise<ApplicationStack> {\n const PULUMI_SECRETS_PROVIDER = process.env[\"PULUMI_SECRETS_PROVIDER\"];\n\n // Use \";\" when on Windows. For Mac and Linux, use \":\".\n const PATH_SEPARATOR = os.platform() === \"win32\" ? \";\" : \":\";\n\n const relativePath = path.relative(args.projectDir, args.appDir);\n const pulumiWorkDir = getPulumiWorkDir(args.projectDir, relativePath);\n\n if (!fs.existsSync(pulumiWorkDir)) {\n fs.mkdirSync(pulumiWorkDir, { recursive: true });\n }\n\n const app = await this.config.app({\n env: args.env,\n variant: args.variant,\n appDir: args.appDir,\n projectDir: args.projectDir\n });\n\n const appController = app.createController();\n\n const workspace = await LocalWorkspace.create({\n program: () => appController.run(),\n workDir: pulumiWorkDir,\n projectSettings: {\n name: this.config.name,\n runtime: \"nodejs\",\n description: this.config.description\n },\n secretsProvider: PULUMI_SECRETS_PROVIDER,\n pulumiHome: args.pulumi.pulumiFolder,\n envVars: {\n WEBINY_ENV: args.env,\n WEBINY_PROJECT_NAME: this.config.name,\n // Add Pulumi CLI path to env variable, so the CLI would be properly resolved.\n PATH: args.pulumi.pulumiFolder + PATH_SEPARATOR + (process.env.PATH ?? \"\")\n }\n });\n\n const stackName = getStackName({\n env: args.env,\n variant: args.variant\n });\n\n const stack = await Stack.createOrSelect(stackName, workspace);\n\n type SharedOptions = Pick<UpOptions, \"onOutput\" | \"color\" | \"onEvent\">;\n const options: SharedOptions = {\n onOutput: line => console.log(trimNewlines(line)),\n color: \"always\"\n };\n\n return {\n app,\n async refresh() {\n return await stack.refresh(options);\n },\n async preview() {\n return await stack.preview(options);\n },\n async up() {\n const result = await stack.up(options);\n\n const outputs: Record<string, any> = {};\n for (const key of Object.keys(result.outputs)) {\n outputs[key] = result.outputs[key].value;\n }\n\n await appController.deployFinished({ outputs });\n return result;\n }\n };\n }\n}\n\nexport function createGenericApplication(config: ApplicationGenericConfig) {\n return new ApplicationBuilderGeneric(config);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["ApplicationBuilderLegacy","ApplicationBuilder","createOrSelectStack","args","PULUMI_SECRETS_PROVIDER","String","process","env","PULUMI_CONFIG_PASSPHRASE","DEBUG","debug","pulumi","run","command","create","secretsProvider","execa","refresh","stdio","WEBINY_ENV","WEBINY_PROJECT_NAME","config","name","undefined","preview","up","yes","skipPreview"],"sources":["ApplicationBuilderLegacy.ts"],"sourcesContent":["import { ApplicationBuilder, ApplicationStack, ApplicationStackArgs } from \"./ApplicationBuilder\";\n\nexport class ApplicationBuilderLegacy extends ApplicationBuilder {\n public async createOrSelectStack(args: ApplicationStackArgs): Promise<ApplicationStack> {\n const PULUMI_SECRETS_PROVIDER = String(process.env[\"PULUMI_SECRETS_PROVIDER\"]);\n const PULUMI_CONFIG_PASSPHRASE = String(process.env[\"PULUMI_CONFIG_PASSPHRASE\"]);\n const DEBUG = args.debug ?? false;\n\n await args.pulumi.run({\n command: [\"stack\", \"select\", args.env],\n args: {\n create: true,\n secretsProvider: PULUMI_SECRETS_PROVIDER\n },\n execa: {\n env: {\n PULUMI_CONFIG_PASSPHRASE\n }\n }\n });\n\n return {\n refresh: async () => {\n await args.pulumi.run({\n command: \"refresh\",\n args: {\n debug: DEBUG\n },\n execa: {\n stdio: \"inherit\",\n env: {\n WEBINY_ENV: args.env,\n WEBINY_PROJECT_NAME: this.config.name,\n PULUMI_CONFIG_PASSPHRASE\n }\n }\n });\n\n return undefined;\n },\n preview: async () => {\n await args.pulumi.run({\n command: \"preview\",\n args: {\n debug: DEBUG\n // Preview command does not accept \"--secrets-provider\" argument.\n // secretsProvider: PULUMI_SECRETS_PROVIDER\n },\n execa: {\n stdio: \"inherit\",\n env: {\n WEBINY_ENV: args.env,\n WEBINY_PROJECT_NAME: this.config.name,\n PULUMI_CONFIG_PASSPHRASE\n }\n }\n });\n\n return undefined;\n },\n up: async () => {\n await args.pulumi.run({\n command: \"up\",\n args: {\n yes: true,\n skipPreview: true,\n secretsProvider: PULUMI_SECRETS_PROVIDER,\n debug: DEBUG\n },\n execa: {\n // We pipe \"stderr\" so that we can intercept potential received error messages,\n // and hopefully, show extra information / help to the user.\n stdio: [\"inherit\", \"inherit\", \"pipe\"],\n env: {\n WEBINY_ENV: args.env,\n WEBINY_PROJECT_NAME: this.config.name,\n PULUMI_CONFIG_PASSPHRASE\n }\n }\n });\n\n return undefined;\n }\n };\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,wBAAN,SAAuCC,sCAAvC,CAA0D;EAC7B,MAAnBC,mBAAmB,CAACC,IAAD,EAAwD;IACpF,MAAMC,uBAAuB,GAAGC,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,yBAAZ,CAAD,CAAtC;IACA,MAAMC,wBAAwB,GAAGH,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,0BAAZ,CAAD,CAAvC;IACA,MAAME,KAAK,GAAGN,IAAI,CAACO,KAAL,IAAc,KAA5B;IAEA,MAAMP,IAAI,CAACQ,MAAL,CAAYC,GAAZ,CAAgB;MAClBC,OAAO,EAAE,CAAC,OAAD,EAAU,QAAV,EAAoBV,IAAI,CAACI,GAAzB,CADS;MAElBJ,IAAI,EAAE;QACFW,MAAM,EAAE,IADN;QAEFC,eAAe,EAAEX;MAFf,CAFY;MAMlBY,KAAK,EAAE;QACHT,GAAG,EAAE;UACDC;QADC;MADF;IANW,CAAhB,CAAN;IAaA,OAAO;MACHS,OAAO,EAAE,YAAY;QACjB,MAAMd,IAAI,CAACQ,MAAL,CAAYC,GAAZ,CAAgB;UAClBC,OAAO,EAAE,SADS;UAElBV,IAAI,EAAE;YACFO,KAAK,EAAED;UADL,CAFY;UAKlBO,KAAK,EAAE;YACHE,KAAK,EAAE,SADJ;YAEHX,GAAG,EAAE;cACDY,UAAU,EAAEhB,IAAI,CAACI,GADhB;cAEDa,mBAAmB,EAAE,KAAKC,MAAL,CAAYC,IAFhC;cAGDd;YAHC;UAFF;QALW,CAAhB,CAAN;QAeA,OAAOe,SAAP;MACH,CAlBE;MAmBHC,OAAO,EAAE,YAAY;QACjB,MAAMrB,IAAI,CAACQ,MAAL,CAAYC,GAAZ,CAAgB;UAClBC,OAAO,EAAE,SADS;UAElBV,IAAI,EAAE;YACFO,KAAK,EAAED,KADL,CAEF;YACA;;UAHE,CAFY;UAOlBO,KAAK,EAAE;YACHE,KAAK,EAAE,SADJ;YAEHX,GAAG,EAAE;cACDY,UAAU,EAAEhB,IAAI,CAACI,GADhB;cAEDa,mBAAmB,EAAE,KAAKC,MAAL,CAAYC,IAFhC;cAGDd;YAHC;UAFF;QAPW,CAAhB,CAAN;QAiBA,OAAOe,SAAP;MACH,CAtCE;MAuCHE,EAAE,EAAE,YAAY;QACZ,MAAMtB,IAAI,CAACQ,MAAL,CAAYC,GAAZ,CAAgB;UAClBC,OAAO,EAAE,IADS;UAElBV,IAAI,EAAE;YACFuB,GAAG,EAAE,IADH;YAEFC,WAAW,EAAE,IAFX;YAGFZ,eAAe,EAAEX,uBAHf;YAIFM,KAAK,EAAED;UAJL,CAFY;UAQlBO,KAAK,EAAE;YACH;YACA;YACAE,KAAK,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,MAAvB,CAHJ;YAIHX,GAAG,EAAE;cACDY,UAAU,EAAEhB,IAAI,CAACI,GADhB;cAEDa,mBAAmB,EAAE,KAAKC,MAAL,CAAYC,IAFhC;cAGDd;YAHC;UAJF;QARW,CAAhB,CAAN;QAoBA,OAAOe,SAAP;MACH;IA7DE,CAAP;EA+DH;;AAlF4D"}
|
package/ApplicationConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":[],"sources":["ApplicationConfig.ts"],"sourcesContent":["import { ApplicationHook } from \"./ApplicationHook\";\nimport { PulumiApp } from \"./PulumiApp\";\n\nexport interface ApplicationContext {\n env: string;\n variant?: string | null;\n appDir: string;\n projectDir: string;\n}\n\nexport interface ApplicationHooks {\n // TODO add typing to deploy hooks\n onBeforeBuild: ApplicationHook;\n onAfterBuild: ApplicationHook;\n onBeforeDeploy: ApplicationHook;\n onAfterDeploy: ApplicationHook;\n}\n\nexport interface ApplicationConfig<TApp extends PulumiApp> extends Partial<ApplicationHooks> {\n config?(app: TApp, ctx: ApplicationContext): Promise<void> | void;\n}\n"],"mappings":""}
|
package/ApplicationHook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["defineAppHook","appHook"],"sources":["ApplicationHook.ts"],"sourcesContent":["// TODO add typing to deploy hooks\nexport interface ApplicationHook {\n (params: any, context: any): Promise<void> | void;\n}\n\nexport function defineAppHook(appHook: ApplicationHook) {\n return appHook;\n}\n"],"mappings":";;;;;;;AAAA;AAKO,SAASA,aAAT,CAAuBC,OAAvB,EAAiD;EACpD,OAAOA,OAAP;AACH"}
|
package/Pulumi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["FLAG_NON_INTERACTIVE","Pulumi","constructor","options","pulumiDownloadFolder","path","join","pulumiFolder","process","cwd","os","platform","pulumiBinaryPath","run","rawArgs","args","Array","isArray","command","finalArgs","key","value","i","length","push","execa","PATH_SEPARATOR","execaArgs","env","PATH","flags","includes","install","installed","downloadBinaries","beforePulumiInstall","afterPulumiInstall","version","require","stdio","PULUMI_HOME","PULUMI_SKIP_UPDATE_CHECK"],"sources":["Pulumi.ts"],"sourcesContent":["import os from \"os\";\nimport execa from \"execa\";\nimport * as path from \"path\";\nimport { merge, kebabCase, set } from \"lodash\";\nimport downloadBinaries from \"./downloadBinaries\";\n\ntype Command = string | string[];\ninterface PulumiArgs {\n [key: string]: string | boolean;\n}\ninterface ExecaArgs {\n env?: {\n [key: string]: string | undefined;\n };\n [key: string]: any;\n}\n\ninterface Options {\n args?: PulumiArgs;\n execa?: ExecaArgs;\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n\n // A folder into which the Pulumi CLI, along with all of its meta data and config files, will be set up.\n // It's recommended this folder is not checked in into a code repository, since the Pulumi CLI can store\n // sensitive information here, for example - user's Pulumi Service credentials.\n pulumiFolder?: string;\n}\n\ninterface RunArgs {\n command: Command;\n args?: PulumiArgs;\n execa?: ExecaArgs;\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n}\n\ninterface InstallArgs {\n beforePulumiInstall?: () => any;\n afterPulumiInstall?: () => any;\n}\n\nexport const FLAG_NON_INTERACTIVE = \"--non-interactive\";\n\nexport class Pulumi {\n options: Options;\n pulumiFolder: string;\n pulumiDownloadFolder: string;\n pulumiBinaryPath: string;\n constructor(options: Options = {}) {\n this.options = options;\n\n this.pulumiDownloadFolder = path.join(\n options.pulumiFolder || process.cwd(),\n \"pulumi-cli\",\n os.platform()\n );\n\n this.pulumiFolder = path.join(this.pulumiDownloadFolder, \"pulumi\");\n this.pulumiBinaryPath = path.join(this.pulumiFolder, \"pulumi\");\n }\n\n run(rawArgs: RunArgs) {\n const args = merge({}, this.options, rawArgs);\n\n if (!Array.isArray(args.command)) {\n args.command = [args.command];\n }\n\n // 1. Prepare Pulumi args.\n const finalArgs = [];\n for (const key in args.args) {\n const value = args.args[key];\n if (!value) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n finalArgs.push(`--${kebabCase(key)}`, value[i]);\n }\n continue;\n }\n\n if (typeof value === \"boolean\") {\n finalArgs.push(`--${kebabCase(key)}`);\n continue;\n }\n\n finalArgs.push(`--${kebabCase(key)}`, value);\n }\n\n // Prepare execa args.\n if (!args.execa) {\n args.execa = {};\n }\n\n set(args.execa, \"env.PULUMI_SKIP_UPDATE_CHECK\", \"true\");\n set(args.execa, \"env.PULUMI_HOME\", this.pulumiFolder);\n\n // Use \";\" when on Windows. For Mac and Linux, use \":\".\n const PATH_SEPARATOR = os.platform() === \"win32\" ? \";\" : \":\";\n\n const execaArgs = {\n ...args.execa,\n env: {\n ...(args.execa.env || {}),\n /**\n * Due to an issue with Pulumi https://github.com/pulumi/pulumi/issues/8374, and even though this\n * commit suggests it should already work like that https://github.com/pulumi/pulumi/commit/c878916901a997a9c0ffcbed23560e19e224a6f1,\n * we need to specify the exact location of our Pulumi binaries, using the PATH environment variable, so it can correctly resolve\n * plugins necessary for custom resources and dynamic providers to work.\n */\n PATH: process.env.PATH + PATH_SEPARATOR + this.pulumiFolder\n }\n };\n\n // We want to keep the \"interactive\" output format of the Pulumi command when `--preview` flag is passed in.\n const flags =\n args.command && args.command.includes(\"preview\") ? [] : [FLAG_NON_INTERACTIVE];\n\n return execa(this.pulumiBinaryPath, [...args.command, ...finalArgs, ...flags], execaArgs);\n }\n\n async install(rawArgs?: InstallArgs): Promise<boolean> {\n const args = merge({}, this.options, rawArgs);\n\n const installed = await downloadBinaries(\n this.pulumiDownloadFolder,\n args.beforePulumiInstall,\n args.afterPulumiInstall\n );\n\n if (installed) {\n const { version } = require(\"@pulumi/aws/package.json\");\n await execa(this.pulumiBinaryPath, [\"plugin\", \"install\", \"resource\", \"aws\", version], {\n stdio: \"inherit\",\n env: {\n PULUMI_HOME: this.pulumiFolder,\n PULUMI_SKIP_UPDATE_CHECK: \"true\"\n }\n });\n }\n\n return installed;\n }\n}\n"],"mappings":"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"}
|
package/PulumiApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["PulumiApp.ts"],"names":["PulumiApp","constructor","params","Map","name","ctx","onResource","handler","resourceHandlers","push","onAfterDeploy","afterDeployHandlers","addResource","ctor","config","opts","promise","Promise","resolve","handlers","forEach","resourceInstance","resource","createConfigProxy","output","pulumi","addOutput","outputs","addOutputs","Object","assign","addModule","def","modules","has","symbol","Error","module","run","set","addHandler","getModule","get","optional","createController","runProgram","bind","deployFinished","WbyProjectName","String","process","env","WbyEnvironment","defineApp","appDef","App","setup","obj","Proxy","target","p","key","setter","value","modifier","currentValue","newValue","apply","v"],"mappings":";;;;;;;;;;;;AAAA;;AAKA;;;;;;AA6CO,MAAeA,SAAf,CAA4C;AAS/CC,EAAAA,WAAW,CAACC,MAAD,EAA0B;AAAA;AAAA;AAAA,4DANkB,EAMlB;AAAA,+DALwB,EAKxB;AAAA,oDAJuB,EAIvB;AAAA,mDAHW,EAGX;AAAA,mDAFV,IAAIC,GAAJ,EAEU;AACjC,SAAKC,IAAL,GAAYF,MAAM,CAACE,IAAnB;AACA,SAAKC,GAAL,GAAWH,MAAM,CAACG,GAAlB;AACH;;AAIMC,EAAAA,UAAU,CAACC,OAAD,EAAiC;AAC9C,SAAKC,gBAAL,CAAsBC,IAAtB,CAA2BF,OAA3B;AACH;;AAEMG,EAAAA,aAAa,CAACH,OAAD,EAA8B;AAC9C,SAAKI,mBAAL,CAAyBF,IAAzB,CAA8BF,OAA9B;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACWK,EAAAA,WAAW,CAAgCC,IAAhC,EAAyCX,MAAzC,EAA0E;AACxF,UAAMY,MAAM,GAAGZ,MAAM,CAACY,MAAP,IAAkB,EAAjC;AACA,UAAMC,IAAI,GAAGb,MAAM,CAACa,IAAP,IAAe,EAA5B;AAEA,UAAMC,OAAO,GAAG,IAAIC,OAAJ,CAA6BC,OAAO,IAAI;AACpD,WAAKC,QAAL,CAAcV,IAAd,CAAmB,MAAM;AACrB,aAAKD,gBAAL,CAAsBY,OAAtB,CAA8Bb,OAAO,IAAIA,OAAO,CAACc,gBAAD,CAAhD;AACA,cAAMA,gBAAgB,GAAG,IAAIR,IAAJ,CAASS,QAAQ,CAAClB,IAAlB,EAAwBU,MAAxB,EAAgCC,IAAhC,CAAzB;AACAG,QAAAA,OAAO,CAACG,gBAAD,CAAP;AACH,OAJD;AAKH,KANe,CAAhB;AAQA,UAAMC,QAA8B,GAAG;AACnClB,MAAAA,IAAI,EAAEF,MAAM,CAACE,IADsB;AAEnCU,MAAAA,MAAM,EAAES,iBAAiB,CAACT,MAAD,CAFU;AAGnCC,MAAAA,IAHmC;AAInCS,MAAAA,MAAM,EAAEC,MAAM,CAACD,MAAP,CAAcR,OAAd;AAJ2B,KAAvC;AAOA,WAAOM,QAAP;AACH;AAED;AACJ;AACA;AACA;AACA;;;AACWI,EAAAA,SAAS,CAAItB,IAAJ,EAAkBoB,MAAlB,EAA6B;AACzC,SAAKG,OAAL,CAAavB,IAAb,IAAqBoB,MAArB;AACH;AAED;AACJ;AACA;AACA;;;AACWI,EAAAA,UAAU,CAACD,OAAD,EAAmC;AAChDE,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKH,OAAnB,EAA4BA,OAA5B;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;AAcWI,EAAAA,SAAS,CACZC,GADY,EAEZlB,MAFY,EAGd;AACE,QAAI,KAAKmB,OAAL,CAAaC,GAAb,CAAiBF,GAAG,CAACG,MAArB,CAAJ,EAAkC;AAC9B,YAAM,IAAIC,KAAJ,CACD,WAAUJ,GAAG,CAAC5B,IAAK,gCAA+B,KAAKA,IAAK,gBAD3D,CAAN;AAGH;;AAED,UAAMiC,MAAM,GAAGL,GAAG,CAACM,GAAJ,CAAQ,IAAR,EAAcxB,MAAd,CAAf;AACA,SAAKmB,OAAL,CAAaM,GAAb,CAAiBP,GAAG,CAACG,MAArB,EAA6BE,MAA7B;AAEA,WAAOA,MAAP;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACWG,EAAAA,UAAU,CAAIjC,OAAJ,EAAmC;AAChD,UAAMS,OAAO,GAAG,IAAIC,OAAJ,CAAeC,OAAO,IAAI;AACtC,WAAKC,QAAL,CAAcV,IAAd,CAAmB,YAAY;AAC3BS,QAAAA,OAAO,CAAC,MAAMX,OAAO,EAAd,CAAP;AACH,OAFD;AAGH,KAJe,CAAhB;AAMA,WAAOkB,MAAM,CAACD,MAAP,CAAcR,OAAd,CAAP;AACH;AAED;AACJ;AACA;AACA;;;AAUWyB,EAAAA,SAAS,CACZT,GADY,EAEZjB,IAFY,EAGd;AACE,UAAMsB,MAAM,GAAG,KAAKJ,OAAL,CAAaS,GAAb,CAAiBV,GAAG,CAACG,MAArB,CAAf;;AAEA,QAAI,CAACE,MAAL,EAAa;AACT,UAAItB,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAE4B,QAAV,EAAoB;AAChB,eAAO,IAAP;AACH,OAFD,MAEO;AACH,cAAM,IAAIP,KAAJ,CAAW,WAAUJ,GAAG,CAAC5B,IAAK,mBAAkB,KAAKA,IAAK,OAA1D,CAAN;AACH;AACJ;;AAED,WAAOiC,MAAP;AACH;AAED;;;AACOO,EAAAA,gBAAgB,GAAG;AACtB,WAAO;AACHN,MAAAA,GAAG,EAAE,KAAKO,UAAL,CAAgBC,IAAhB,CAAqB,IAArB,CADF;AAEHC,MAAAA,cAAc,EAAE,KAAKA,cAAL,CAAoBD,IAApB,CAAyB,IAAzB;AAFb,KAAP;AAIH;;AAEuB,QAAVD,UAAU,GAAG;AACvB,6BAAa;AACTG,MAAAA,cAAc,EAAEC,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,qBAAZ,CAAD,CADb;AAETC,MAAAA,cAAc,EAAEH,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,YAAZ,CAAD;AAFb,KAAb;;AAKA,SAAK,MAAM5C,OAAX,IAAsB,KAAKY,QAA3B,EAAqC;AACjC,YAAMZ,OAAO,EAAb;AACH;;AAED,WAAO,KAAKoB,OAAZ;AACH;;AAE2B,QAAdoB,cAAc,CAAC7C,MAAD,EAA4B;AACpD,SAAK,MAAMK,OAAX,IAAsB,KAAKI,mBAA3B,EAAgD;AAC5C,YAAMJ,OAAO,CAACL,MAAD,CAAb;AACH;AACJ;;AAlL8C;;;;AA0L5C,SAASmD,SAAT,CACHnD,MADG,EAEL;AACE,QAAMoD,MAAM,GAAG,MAAMC,GAAN,SAAkBvD,SAAlB,CAAqC;AAChDC,IAAAA,WAAW,CAACI,GAAD,EAA0B;AACjC,YAAM;AAAED,QAAAA,IAAI,EAAEF,MAAM,CAACE,IAAf;AAAqBC,QAAAA,GAAG,EAAEA;AAA1B,OAAN;AACH;;AAEiB,UAALmD,KAAK,CAAC1C,MAAD,EAAkB;AAChC,YAAMU,MAAM,GAAG,MAAMtB,MAAM,CAACY,MAAP,CAAc,IAAd,EAAoBA,MAApB,CAArB;AACAe,MAAAA,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoBN,MAApB;AACH;;AAR+C,GAApD;AAWA,SAAO8B,MAAP;AACH;;AAED,SAAS/B,iBAAT,CAA6CkC,GAA7C,EAAqD;AACjD,SAAO,IAAIC,KAAJ,CAAUD,GAAV,EAAe;AAClBf,IAAAA,GAAG,CAACiB,MAAD,EAASC,CAAT,EAAoB;AAEnB,YAAMC,GAAG,GAAGD,CAAZ;;AACA,YAAME,MAA+B,GAAIC,KAAD,IAA0C;AAC9E,YAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;AAC7B,gBAAMC,QAAQ,GAAGD,KAAjB;AACA,gBAAME,YAAY,GAAGN,MAAM,CAACE,GAAD,CAA3B,CAF6B,CAG7B;;AACA,gBAAMK,QAAQ,GAAGzC,MAAM,CAACD,MAAP,CAAcyC,YAAd,EAA4BE,KAA5B,CAAkCC,CAAC,IAAI;AACpD,kBAAMF,QAAQ,GAAGF,QAAQ,CAACI,CAAD,CAAzB;AACA,mBAAO3C,MAAM,CAACD,MAAP,CAAc0C,QAAd,CAAP;AACH,WAHgB,CAAjB;AAKAP,UAAAA,MAAM,CAACE,GAAD,CAAN,GAAcK,QAAd;AACH,SAVD,MAUO;AACHP,UAAAA,MAAM,CAACE,GAAD,CAAN,GAAcE,KAAd;AACH;AACJ,OAdD;;AAgBA,aAAOD,MAAP;AACH;;AArBiB,GAAf,CAAP;AAuBH","sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\nimport { ApplicationContext } from \"./ApplicationConfig\";\nimport { PulumiAppModuleDefinition } from \"./PulumiAppModule\";\nimport { ResourceArgs, ResourceConstructor, ResourceType } from \"./PulumiResource\";\nimport { tagResources } from \"./utils\";\n\nexport interface CreateResourceParams<TCtor extends ResourceConstructor> {\n name: string;\n config: ResourceArgs<TCtor>;\n opts?: pulumi.CustomResourceOptions;\n}\n\nexport interface PulumiAppResource<T extends ResourceConstructor> {\n name: string;\n readonly config: ResourceConfigProxy<ResourceArgs<T>>;\n readonly opts: pulumi.CustomResourceOptions;\n readonly output: pulumi.Output<pulumi.Unwrap<ResourceType<T>>>;\n}\n\nexport interface PulumiAppParams {\n name: string;\n ctx: ApplicationContext;\n}\n\nexport interface ResourceHandler {\n (resource: PulumiAppResource<ResourceConstructor>): void;\n}\n\nexport type ResourceConfigProxy<T extends object> = {\n readonly [K in keyof T]-?: ResourceConfigSetter<T[K]>;\n};\n\nexport interface ResourceConfigSetter<T> {\n (value: T): void;\n (fcn: ResourceConfigModifier<T>): void;\n}\n\nexport interface ResourceConfigModifier<T> {\n (value: pulumi.Unwrap<T>): T | void;\n}\n\ninterface DeployEventParams {\n outputs: Record<string, any>;\n}\n\ninterface DeployEventHandler {\n (params: DeployEventParams): Promise<void> | void;\n}\n\nexport abstract class PulumiApp<TConfig = unknown> {\n public readonly name: string;\n public readonly ctx: ApplicationContext;\n private readonly resourceHandlers: ResourceHandler[] = [];\n private readonly afterDeployHandlers: DeployEventHandler[] = [];\n private readonly handlers: (() => void | Promise<void>)[] = [];\n private readonly outputs: Record<string, any> = {};\n private readonly modules = new Map<symbol, unknown>();\n\n constructor(params: PulumiAppParams) {\n this.name = params.name;\n this.ctx = params.ctx;\n }\n\n public abstract setup(config: TConfig): Promise<void> | void;\n\n public onResource(handler: ResourceHandler): void {\n this.resourceHandlers.push(handler);\n }\n\n public onAfterDeploy(handler: DeployEventHandler) {\n this.afterDeployHandlers.push(handler);\n }\n\n /**\n * Adds a resource to pulumi app.\n * It's not running the script immadietely, but enqueues the call.\n * This way we are still able to modify the config of the resource.\n * @param ctor Resource to be added, ie aws.s3.Bucket\n * @param params Parameters to configure the resource\n * @returns Object giving access to both resource outputs and its config.\n */\n public addResource<T extends ResourceConstructor>(ctor: T, params: CreateResourceParams<T>) {\n const config = params.config ?? ({} as ResourceArgs<T>);\n const opts = params.opts ?? {};\n\n const promise = new Promise<ResourceType<T>>(resolve => {\n this.handlers.push(() => {\n this.resourceHandlers.forEach(handler => handler(resourceInstance));\n const resourceInstance = new ctor(resource.name, config, opts);\n resolve(resourceInstance);\n });\n });\n\n const resource: PulumiAppResource<T> = {\n name: params.name,\n config: createConfigProxy(config),\n opts,\n output: pulumi.output(promise)\n };\n\n return resource;\n }\n\n /**\n * Registers output value within pulumi app.\n * @param name Name of the output value\n * @param output Value of the output\n */\n public addOutput<T>(name: string, output: T) {\n this.outputs[name] = output;\n }\n\n /**\n * Registers one or more output values.\n * @param outputs Dictionary containg output values.\n */\n public addOutputs(outputs: Record<string, unknown>) {\n Object.assign(this.outputs, outputs);\n }\n\n /**\n * Registers an app module witin app.\n * Allows to decompose application into smaller pieces.\n * Added module can be then retrieved with `getModule`.\n * @param def Module definition\n */\n public addModule<TModule>(def: PulumiAppModuleDefinition<TModule, void>): TModule;\n\n /**\n * Registers an app module witin app.\n * Allows to decompose application into smaller pieces.\n * Added module can be then retrieved with `getModule`.\n * @param def Module definition\n * @param config Module config\n */\n public addModule<TModule, TConfig>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n config: TConfig\n ): TModule;\n public addModule<TModule, TConfig>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n config?: TConfig\n ) {\n if (this.modules.has(def.symbol)) {\n throw new Error(\n `Module \"${def.name}\" is already present in the \"${this.name}\" application.`\n );\n }\n\n const module = def.run(this, config as TConfig);\n this.modules.set(def.symbol, module);\n\n return module;\n }\n\n /**\n * Schedules a handler to be executed when running pulumi script.\n * Anything, that is returned from handler will be wrapped in pulumi.Output\n * so it can be used in other places.\n * @param handler Handler to be executed.\n * @returns Result of the handler wrapped with pulumi.Output\n */\n public addHandler<T>(handler: () => Promise<T> | T) {\n const promise = new Promise<T>(resolve => {\n this.handlers.push(async () => {\n resolve(await handler());\n });\n });\n\n return pulumi.output(promise);\n }\n\n /**\n * Returns a module by its definition\n * @param def Module definition\n */\n public getModule<TConfig, TModule>(def: PulumiAppModuleDefinition<TModule, TConfig>): TModule;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts: { optional: false }\n ): TModule;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts: { optional: true }\n ): TModule | null;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts?: { optional: boolean }\n ) {\n const module = this.modules.get(def.symbol);\n\n if (!module) {\n if (opts?.optional) {\n return null;\n } else {\n throw new Error(`Module \"${def.name}\" not found in \"${this.name}\" app`);\n }\n }\n\n return module;\n }\n\n /** Internal usage only. */\n public createController() {\n return {\n run: this.runProgram.bind(this),\n deployFinished: this.deployFinished.bind(this)\n };\n }\n\n private async runProgram() {\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n for (const handler of this.handlers) {\n await handler();\n }\n\n return this.outputs;\n }\n\n private async deployFinished(params: DeployEventParams) {\n for (const handler of this.afterDeployHandlers) {\n await handler(params);\n }\n }\n}\n\nexport interface CreateAppParams<TOutput extends Record<string, unknown>, TConfig = void> {\n name: string;\n config(app: PulumiApp, config: TConfig): TOutput | Promise<TOutput>;\n}\n\nexport function defineApp<TOutput extends Record<string, unknown>, TConfig = void>(\n params: CreateAppParams<TOutput, TConfig>\n) {\n const appDef = class App extends PulumiApp<TConfig> {\n constructor(ctx: ApplicationContext) {\n super({ name: params.name, ctx: ctx });\n }\n\n public async setup(config: TConfig) {\n const output = await params.config(this, config);\n Object.assign(this, output);\n }\n };\n\n return appDef as new (ctx: ApplicationContext) => PulumiApp<TConfig> & TOutput;\n}\n\nfunction createConfigProxy<T extends object>(obj: T) {\n return new Proxy(obj, {\n get(target, p: string) {\n type V = T[keyof T];\n const key = p as keyof T;\n const setter: ResourceConfigSetter<V> = (value: V | ResourceConfigModifier<V>) => {\n if (typeof value === \"function\") {\n const modifier = value as ResourceConfigModifier<V>;\n const currentValue = target[key];\n // Wrap a current config with a function.\n const newValue = pulumi.output(currentValue).apply(v => {\n const newValue = modifier(v);\n return pulumi.output(newValue);\n });\n\n target[key] = newValue as unknown as V;\n } else {\n target[key] = value;\n }\n };\n\n return setter;\n }\n }) as ResourceConfigProxy<T>;\n}\n"]}
|
|
1
|
+
{"version":3,"names":["PulumiApp","constructor","params","Map","name","ctx","onResource","handler","resourceHandlers","push","onAfterDeploy","afterDeployHandlers","addResource","ctor","config","opts","promise","Promise","resolve","handlers","forEach","resourceInstance","resource","createConfigProxy","output","pulumi","addOutput","outputs","addOutputs","Object","assign","addModule","def","modules","has","symbol","Error","module","run","set","addHandler","getModule","get","optional","createController","runProgram","bind","deployFinished","tagResources","WbyProjectName","String","process","env","WbyEnvironment","defineApp","appDef","App","setup","obj","Proxy","target","p","key","setter","value","modifier","currentValue","newValue","apply","v"],"sources":["PulumiApp.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\nimport { ApplicationContext } from \"./ApplicationConfig\";\nimport { PulumiAppModuleDefinition } from \"./PulumiAppModule\";\nimport { ResourceArgs, ResourceConstructor, ResourceType } from \"./PulumiResource\";\nimport { tagResources } from \"./utils\";\n\nexport interface CreateResourceParams<TCtor extends ResourceConstructor> {\n name: string;\n config: ResourceArgs<TCtor>;\n opts?: pulumi.CustomResourceOptions;\n}\n\nexport interface PulumiAppResource<T extends ResourceConstructor> {\n name: string;\n readonly config: ResourceConfigProxy<ResourceArgs<T>>;\n readonly opts: pulumi.CustomResourceOptions;\n readonly output: pulumi.Output<pulumi.Unwrap<ResourceType<T>>>;\n}\n\nexport interface PulumiAppParams {\n name: string;\n ctx: ApplicationContext;\n}\n\nexport interface ResourceHandler {\n (resource: PulumiAppResource<ResourceConstructor>): void;\n}\n\nexport type ResourceConfigProxy<T extends object> = {\n readonly [K in keyof T]-?: ResourceConfigSetter<T[K]>;\n};\n\nexport interface ResourceConfigSetter<T> {\n (value: T): void;\n (fcn: ResourceConfigModifier<T>): void;\n}\n\nexport interface ResourceConfigModifier<T> {\n (value: pulumi.Unwrap<T>): T | void;\n}\n\ninterface DeployEventParams {\n outputs: Record<string, any>;\n}\n\ninterface DeployEventHandler {\n (params: DeployEventParams): Promise<void> | void;\n}\n\nexport abstract class PulumiApp<TConfig = unknown> {\n public readonly name: string;\n public readonly ctx: ApplicationContext;\n private readonly resourceHandlers: ResourceHandler[] = [];\n private readonly afterDeployHandlers: DeployEventHandler[] = [];\n private readonly handlers: (() => void | Promise<void>)[] = [];\n private readonly outputs: Record<string, any> = {};\n private readonly modules = new Map<symbol, unknown>();\n\n constructor(params: PulumiAppParams) {\n this.name = params.name;\n this.ctx = params.ctx;\n }\n\n public abstract setup(config: TConfig): Promise<void> | void;\n\n public onResource(handler: ResourceHandler): void {\n this.resourceHandlers.push(handler);\n }\n\n public onAfterDeploy(handler: DeployEventHandler) {\n this.afterDeployHandlers.push(handler);\n }\n\n /**\n * Adds a resource to pulumi app.\n * It's not running the script immadietely, but enqueues the call.\n * This way we are still able to modify the config of the resource.\n * @param ctor Resource to be added, ie aws.s3.Bucket\n * @param params Parameters to configure the resource\n * @returns Object giving access to both resource outputs and its config.\n */\n public addResource<T extends ResourceConstructor>(ctor: T, params: CreateResourceParams<T>) {\n const config = params.config ?? ({} as ResourceArgs<T>);\n const opts = params.opts ?? {};\n\n const promise = new Promise<ResourceType<T>>(resolve => {\n this.handlers.push(() => {\n this.resourceHandlers.forEach(handler => handler(resourceInstance));\n const resourceInstance = new ctor(resource.name, config, opts);\n resolve(resourceInstance);\n });\n });\n\n const resource: PulumiAppResource<T> = {\n name: params.name,\n config: createConfigProxy(config),\n opts,\n output: pulumi.output(promise)\n };\n\n return resource;\n }\n\n /**\n * Registers output value within pulumi app.\n * @param name Name of the output value\n * @param output Value of the output\n */\n public addOutput<T>(name: string, output: T) {\n this.outputs[name] = output;\n }\n\n /**\n * Registers one or more output values.\n * @param outputs Dictionary containg output values.\n */\n public addOutputs(outputs: Record<string, unknown>) {\n Object.assign(this.outputs, outputs);\n }\n\n /**\n * Registers an app module witin app.\n * Allows to decompose application into smaller pieces.\n * Added module can be then retrieved with `getModule`.\n * @param def Module definition\n */\n public addModule<TModule>(def: PulumiAppModuleDefinition<TModule, void>): TModule;\n\n /**\n * Registers an app module witin app.\n * Allows to decompose application into smaller pieces.\n * Added module can be then retrieved with `getModule`.\n * @param def Module definition\n * @param config Module config\n */\n public addModule<TModule, TConfig>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n config: TConfig\n ): TModule;\n public addModule<TModule, TConfig>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n config?: TConfig\n ) {\n if (this.modules.has(def.symbol)) {\n throw new Error(\n `Module \"${def.name}\" is already present in the \"${this.name}\" application.`\n );\n }\n\n const module = def.run(this, config as TConfig);\n this.modules.set(def.symbol, module);\n\n return module;\n }\n\n /**\n * Schedules a handler to be executed when running pulumi script.\n * Anything, that is returned from handler will be wrapped in pulumi.Output\n * so it can be used in other places.\n * @param handler Handler to be executed.\n * @returns Result of the handler wrapped with pulumi.Output\n */\n public addHandler<T>(handler: () => Promise<T> | T) {\n const promise = new Promise<T>(resolve => {\n this.handlers.push(async () => {\n resolve(await handler());\n });\n });\n\n return pulumi.output(promise);\n }\n\n /**\n * Returns a module by its definition\n * @param def Module definition\n */\n public getModule<TConfig, TModule>(def: PulumiAppModuleDefinition<TModule, TConfig>): TModule;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts: { optional: false }\n ): TModule;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts: { optional: true }\n ): TModule | null;\n public getModule<TConfig, TModule>(\n def: PulumiAppModuleDefinition<TModule, TConfig>,\n opts?: { optional: boolean }\n ) {\n const module = this.modules.get(def.symbol);\n\n if (!module) {\n if (opts?.optional) {\n return null;\n } else {\n throw new Error(`Module \"${def.name}\" not found in \"${this.name}\" app`);\n }\n }\n\n return module;\n }\n\n /** Internal usage only. */\n public createController() {\n return {\n run: this.runProgram.bind(this),\n deployFinished: this.deployFinished.bind(this)\n };\n }\n\n private async runProgram() {\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n for (const handler of this.handlers) {\n await handler();\n }\n\n return this.outputs;\n }\n\n private async deployFinished(params: DeployEventParams) {\n for (const handler of this.afterDeployHandlers) {\n await handler(params);\n }\n }\n}\n\nexport interface CreateAppParams<TOutput extends Record<string, unknown>, TConfig = void> {\n name: string;\n config(app: PulumiApp, config: TConfig): TOutput | Promise<TOutput>;\n}\n\nexport function defineApp<TOutput extends Record<string, unknown>, TConfig = void>(\n params: CreateAppParams<TOutput, TConfig>\n) {\n const appDef = class App extends PulumiApp<TConfig> {\n constructor(ctx: ApplicationContext) {\n super({ name: params.name, ctx: ctx });\n }\n\n public async setup(config: TConfig) {\n const output = await params.config(this, config);\n Object.assign(this, output);\n }\n };\n\n return appDef as new (ctx: ApplicationContext) => PulumiApp<TConfig> & TOutput;\n}\n\nfunction createConfigProxy<T extends object>(obj: T) {\n return new Proxy(obj, {\n get(target, p: string) {\n type V = T[keyof T];\n const key = p as keyof T;\n const setter: ResourceConfigSetter<V> = (value: V | ResourceConfigModifier<V>) => {\n if (typeof value === \"function\") {\n const modifier = value as ResourceConfigModifier<V>;\n const currentValue = target[key];\n // Wrap a current config with a function.\n const newValue = pulumi.output(currentValue).apply(v => {\n const newValue = modifier(v);\n return pulumi.output(newValue);\n });\n\n target[key] = newValue as unknown as V;\n } else {\n target[key] = value;\n }\n };\n\n return setter;\n }\n }) as ResourceConfigProxy<T>;\n}\n"],"mappings":"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"}
|
package/PulumiAppModule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["PulumiAppModuleDefinition","constructor","params","Symbol","name","run","config","defineAppModule"],"sources":["PulumiAppModule.ts"],"sourcesContent":["// There is a circular dependency between the two.\n// This trick allow us to make it work.\ntype PulumiApp = import(\"./PulumiApp\").PulumiApp;\n\nexport interface PulumiAppModuleCallback<TModule, TConfig> {\n (this: void, app: PulumiApp, config: TConfig): TModule;\n}\n\nexport interface PulumiAppModuleParams<TModule, TConfig> {\n name: string;\n config: PulumiAppModuleCallback<TModule, TConfig>;\n}\n\nexport type PulumiAppModule<T extends PulumiAppModuleDefinition<any, any>> =\n T extends PulumiAppModuleDefinition<infer V, any> ? V : never;\n\nexport class PulumiAppModuleDefinition<TModule, TConfig> {\n public readonly symbol = Symbol();\n public readonly name: string;\n public readonly run: PulumiAppModuleCallback<TModule, TConfig>;\n constructor(params: PulumiAppModuleParams<TModule, TConfig>) {\n this.name = params.name;\n this.run = params.config;\n }\n}\n\nexport function defineAppModule<TModule, TConfig = void>(\n params: PulumiAppModuleParams<TModule, TConfig>\n) {\n return new PulumiAppModuleDefinition(params);\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAeO,MAAMA,yBAAN,CAAkD;EAIrDC,WAAW,CAACC,MAAD,EAAkD;IAAA,8CAHpCC,MAAM,EAG8B;IAAA;IAAA;IACzD,KAAKC,IAAL,GAAYF,MAAM,CAACE,IAAnB;IACA,KAAKC,GAAL,GAAWH,MAAM,CAACI,MAAlB;EACH;;AAPoD;;;;AAUlD,SAASC,eAAT,CACHL,MADG,EAEL;EACE,OAAO,IAAIF,yBAAJ,CAA8BE,MAA9B,CAAP;AACH"}
|
package/PulumiResource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["PulumiResource","constructor","ctor","params","config","opts","resolve","created","create","resource","name","promise","Promise","r","output","pulumi"],"sources":["PulumiResource.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\nexport interface ResourceConstructor<T = any, TArgs = any> {\n new (name: string, args: TArgs, opts?: pulumi.CustomResourceOptions): T;\n}\n\nexport type ResourceType<T extends ResourceConstructor> = T extends ResourceConstructor<infer TType>\n ? TType\n : never;\n\nexport type ResourceArgs<T extends ResourceConstructor> = T extends ResourceConstructor<\n any,\n infer TArgs\n>\n ? Exclude<TArgs, undefined>\n : never;\n\nexport interface ResourceOverride<TCtor extends ResourceConstructor> {\n (args: ResourceArgs<TCtor>): void;\n}\n\nexport interface PulumiResourceParams<T extends ResourceConstructor> {\n name: string;\n config: ResourceArgs<T>;\n opts?: pulumi.CustomResourceOptions;\n output: pulumi.Output<pulumi.Unwrap<ResourceType<T>>>;\n}\n\nexport class PulumiResource<T extends ResourceConstructor> {\n public readonly output: pulumi.Output<pulumi.Unwrap<ResourceType<T>>>;\n public config: ResourceArgs<T>;\n public opts: pulumi.CustomResourceOptions;\n\n public readonly create: () => void;\n\n constructor(ctor: T, params: PulumiResourceParams<T>) {\n this.config = params.config;\n this.opts = params.opts ?? {};\n\n let resolve: (res: ResourceType<T>) => void;\n let created = false;\n\n this.create = () => {\n if (created) {\n // prevent double initialization\n return;\n }\n\n const resource = new ctor(params.name, this.config, this.opts);\n resolve(resource);\n created = false;\n };\n\n const promise = new Promise<ResourceType<T>>(r => {\n resolve = r;\n });\n\n this.output = pulumi.output(promise);\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;;;;;AA4BO,MAAMA,cAAN,CAAoD;EAOvDC,WAAW,CAACC,IAAD,EAAUC,MAAV,EAA2C;IAAA;IAAA;IAAA;IAAA;IAClD,KAAKC,MAAL,GAAcD,MAAM,CAACC,MAArB;IACA,KAAKC,IAAL,GAAYF,MAAM,CAACE,IAAP,IAAe,EAA3B;IAEA,IAAIC,OAAJ;IACA,IAAIC,OAAO,GAAG,KAAd;;IAEA,KAAKC,MAAL,GAAc,MAAM;MAChB,IAAID,OAAJ,EAAa;QACT;QACA;MACH;;MAED,MAAME,QAAQ,GAAG,IAAIP,IAAJ,CAASC,MAAM,CAACO,IAAhB,EAAsB,KAAKN,MAA3B,EAAmC,KAAKC,IAAxC,CAAjB;MACAC,OAAO,CAACG,QAAD,CAAP;MACAF,OAAO,GAAG,KAAV;IACH,CATD;;IAWA,MAAMI,OAAO,GAAG,IAAIC,OAAJ,CAA6BC,CAAC,IAAI;MAC9CP,OAAO,GAAGO,CAAV;IACH,CAFe,CAAhB;IAIA,KAAKC,MAAL,GAAcC,MAAM,CAACD,MAAP,CAAcH,OAAd,CAAd;EACH;;AA9BsD"}
|
package/downloadBinaries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["os","require","tar","fs","download","path","decompress","semver","getPulumiVersion","version","clean","downloadFolder","beforeInstall","afterInstall","existsSync","platform","setupDarwin","setupLinux","setupWindows","Error","filename","downloadUrl","extract","cwd","file","join","unlinkSync","archive","destination","strip"],"sources":["downloadBinaries.ts"],"sourcesContent":["const os = require(\"os\");\nconst tar = require(\"tar\");\nconst fs = require(\"fs\");\nconst download = require(\"download\");\nconst path = require(\"path\");\nconst decompress = require(\"decompress\");\nconst semver = require(\"semver\");\n\n// We gotta sanitize the package version, since on a few occasions, we've detected the Pulumi version\n// can look like the following: \"2.25.2+dirty\". We want to ensure only \"2.25.2\" is returned.\n// @see https://github.com/pulumi/pulumi/issues/6847\nconst getPulumiVersion = () => {\n const { version } = require(\"@pulumi/pulumi/package.json\");\n return semver.clean(version);\n};\n\nexport default async (\n downloadFolder: string,\n beforeInstall?: () => void,\n afterInstall?: () => void\n) => {\n if (fs.existsSync(downloadFolder)) {\n return false;\n }\n\n if (typeof beforeInstall === \"function\") {\n await beforeInstall();\n }\n\n const platform = os.platform();\n switch (platform) {\n case \"darwin\":\n await setupDarwin(downloadFolder);\n break;\n case \"linux\":\n await setupLinux(downloadFolder);\n break;\n case \"win32\":\n await setupWindows(downloadFolder);\n break;\n default:\n throw Error(\n `Cannot download Pulumi binaries - platform \"${platform}\" not supported. Supported ones are \"darwin\", \"linux\", and \"win32\"`\n );\n }\n\n if (typeof afterInstall === \"function\") {\n await afterInstall();\n }\n\n return true;\n};\n\nasync function setupDarwin(downloadFolder: string) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-darwin-x64.tar.gz`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n await tar.extract({\n cwd: downloadFolder,\n file: path.join(downloadFolder, filename)\n });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n\nasync function setupWindows(downloadFolder: string) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-windows-x64.zip`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n const archive = path.join(downloadFolder, filename);\n const destination = path.join(downloadFolder, \"pulumi\");\n await decompress(archive, destination, { strip: 2 });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n\nasync function setupLinux(downloadFolder: string) {\n const version = getPulumiVersion();\n const filename = `pulumi-v${version}-linux-x64.tar.gz`;\n const downloadUrl = \"https://get.pulumi.com/releases/sdk/\" + filename;\n\n await download(downloadUrl, downloadFolder);\n\n await tar.extract({\n cwd: downloadFolder,\n file: path.join(downloadFolder, filename)\n });\n\n fs.unlinkSync(path.join(downloadFolder, filename));\n}\n"],"mappings":"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"}
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./Pulumi\";\nexport * from \"./PulumiApp\";\nexport * from \"./PulumiAppModule\";\nexport * from \"./PulumiResource\";\nexport * from \"./ApplicationConfig\";\nexport * from \"./ApplicationHook\";\nexport * from \"./ApplicationBuilder\";\nexport * from \"./ApplicationBuilderGeneric\";\nexport * from \"./ApplicationBuilderLegacy\";\n\nexport * from \"./utils\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/pulumi-sdk",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.28.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"download": "5.0.3",
|
|
21
21
|
"execa": "4.1.0",
|
|
22
22
|
"lodash": "4.17.21",
|
|
23
|
-
"semver": "7.3.
|
|
23
|
+
"semver": "7.3.7",
|
|
24
24
|
"tar": "6.1.11",
|
|
25
25
|
"trim-newlines": "3.0.1"
|
|
26
26
|
},
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"@babel/core": "^7.16.0",
|
|
30
30
|
"@types/lodash": "^4.14.178",
|
|
31
31
|
"@types/node": "^10.0.0",
|
|
32
|
-
"@webiny/cli": "^5.
|
|
33
|
-
"@webiny/project-utils": "^5.
|
|
32
|
+
"@webiny/cli": "^5.28.0",
|
|
33
|
+
"@webiny/project-utils": "^5.28.0",
|
|
34
34
|
"rimraf": "^3.0.2",
|
|
35
35
|
"typescript": "4.5.5"
|
|
36
36
|
},
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"build": "yarn webiny run build",
|
|
47
47
|
"watch": "yarn webiny run watch"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "9fd082a2e4a0e0116ee5a07e2a9ca385e8ac0173"
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["getPulumiWorkDir","rootDir","appPath","path","join"],"sources":["getPulumiWorkDir.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getPulumiWorkDir(rootDir: string, appPath: string) {\n return path.join(rootDir, \".pulumi\", appPath);\n}\n"],"mappings":";;;;;;;;;AAAA;;AAEO,SAASA,gBAAT,CAA0BC,OAA1B,EAA2CC,OAA3C,EAA4D;EAC/D,OAAOC,aAAA,CAAKC,IAAL,CAAUH,OAAV,EAAmB,SAAnB,EAA8BC,OAA9B,CAAP;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["getStackName","args","variant","env"],"sources":["getStackName.ts"],"sourcesContent":["/** Return a full stack name for a given environment and app variant. */\nexport function getStackName(args: { env: string; variant?: string }) {\n return args.variant ? `${args.env}.${args.variant}` : args.env;\n}\n"],"mappings":";;;;;;;AAAA;AACO,SAASA,YAAT,CAAsBC,IAAtB,EAA+D;EAClE,OAAOA,IAAI,CAACC,OAAL,GAAgB,GAAED,IAAI,CAACE,GAAI,IAAGF,IAAI,CAACC,OAAQ,EAA3C,GAA+CD,IAAI,CAACE,GAA3D;AACH"}
|
package/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./getPulumiWorkDir\";\nexport * from \"./getStackName\";\nexport * from \"./mergeAppHooks\";\nexport * from \"./tagResources\";\nexport * from \"./stagedRollouts\";\n"],"mappings":";;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["mergeAppHooks","hooks","filtered","filter","Boolean","length","undefined","params","context","hook"],"sources":["mergeAppHooks.ts"],"sourcesContent":["import { ApplicationHook } from \"~/ApplicationHook\";\n\nexport function mergeAppHooks(\n ...hooks: (ApplicationHook | undefined | null)[]\n): ApplicationHook | undefined {\n const filtered = hooks.filter(Boolean) as ApplicationHook[];\n\n if (!hooks.length) {\n return undefined;\n }\n\n return async (params, context) => {\n for (const hook of filtered) {\n await hook(params, context);\n }\n };\n}\n"],"mappings":";;;;;;;AAEO,SAASA,aAAT,CACH,GAAGC,KADA,EAEwB;EAC3B,MAAMC,QAAQ,GAAGD,KAAK,CAACE,MAAN,CAAaC,OAAb,CAAjB;;EAEA,IAAI,CAACH,KAAK,CAACI,MAAX,EAAmB;IACf,OAAOC,SAAP;EACH;;EAED,OAAO,OAAOC,MAAP,EAAeC,OAAf,KAA2B;IAC9B,KAAK,MAAMC,IAAX,IAAmBP,QAAnB,EAA6B;MACzB,MAAMO,IAAI,CAACF,MAAD,EAASC,OAAT,CAAV;IACH;EACJ,CAJD;AAKH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["updateGatewayConfig","params","configPath","getGatewayConfigFilePath","config","readGatewayConfigFile","variant","domain","weight","writeGatewayConfigFile","loadGatewayConfig","path","join","cwd","app","env","filePath","fs","existsSync","configJson","promises","readFile","encoding","JSON","parse","stringify","writeFile"],"sources":["stagedRollouts.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\n\nexport type GatewayConfig = Record<\n string,\n {\n domain: string;\n weight: number;\n }\n>;\n\nexport interface GatewayConfigParams {\n cwd: string;\n app: string;\n env: string;\n}\n\nexport interface GatewayConfigUpdateParams extends GatewayConfigParams {\n variant: string;\n domain: string;\n}\n\nexport async function updateGatewayConfig(params: GatewayConfigUpdateParams) {\n const configPath = getGatewayConfigFilePath(params);\n const config = await readGatewayConfigFile(configPath);\n\n if (config[params.variant]) {\n // Update existing config.\n config[params.variant].domain = params.domain;\n } else {\n config[params.variant] = {\n domain: params.domain,\n // Every newly deployed variant has 0% of traffic.\n weight: 0\n };\n }\n\n await writeGatewayConfigFile(configPath, config);\n}\n\nexport async function loadGatewayConfig(params: GatewayConfigParams) {\n const configPath = getGatewayConfigFilePath(params);\n return readGatewayConfigFile(configPath);\n}\n\nfunction getGatewayConfigFilePath(params: GatewayConfigParams) {\n return path.join(params.cwd, `gateway.${params.app}.${params.env}.json`);\n}\n\nasync function readGatewayConfigFile(filePath: string): Promise<GatewayConfig> {\n if (!fs.existsSync(filePath)) {\n return {};\n }\n\n const configJson = await fs.promises.readFile(filePath, { encoding: \"utf-8\" });\n return JSON.parse(configJson) || {};\n}\n\nasync function writeGatewayConfigFile(filePath: string, config: GatewayConfig) {\n const configJson = JSON.stringify(config, null, 4);\n await fs.promises.writeFile(filePath, configJson, { encoding: \"utf-8\" });\n}\n"],"mappings":";;;;;;;;;;AAAA;;AACA;;AAqBO,eAAeA,mBAAf,CAAmCC,MAAnC,EAAsE;EACzE,MAAMC,UAAU,GAAGC,wBAAwB,CAACF,MAAD,CAA3C;EACA,MAAMG,MAAM,GAAG,MAAMC,qBAAqB,CAACH,UAAD,CAA1C;;EAEA,IAAIE,MAAM,CAACH,MAAM,CAACK,OAAR,CAAV,EAA4B;IACxB;IACAF,MAAM,CAACH,MAAM,CAACK,OAAR,CAAN,CAAuBC,MAAvB,GAAgCN,MAAM,CAACM,MAAvC;EACH,CAHD,MAGO;IACHH,MAAM,CAACH,MAAM,CAACK,OAAR,CAAN,GAAyB;MACrBC,MAAM,EAAEN,MAAM,CAACM,MADM;MAErB;MACAC,MAAM,EAAE;IAHa,CAAzB;EAKH;;EAED,MAAMC,sBAAsB,CAACP,UAAD,EAAaE,MAAb,CAA5B;AACH;;AAEM,eAAeM,iBAAf,CAAiCT,MAAjC,EAA8D;EACjE,MAAMC,UAAU,GAAGC,wBAAwB,CAACF,MAAD,CAA3C;EACA,OAAOI,qBAAqB,CAACH,UAAD,CAA5B;AACH;;AAED,SAASC,wBAAT,CAAkCF,MAAlC,EAA+D;EAC3D,OAAOU,aAAA,CAAKC,IAAL,CAAUX,MAAM,CAACY,GAAjB,EAAuB,WAAUZ,MAAM,CAACa,GAAI,IAAGb,MAAM,CAACc,GAAI,OAA1D,CAAP;AACH;;AAED,eAAeV,qBAAf,CAAqCW,QAArC,EAA+E;EAC3E,IAAI,CAACC,WAAA,CAAGC,UAAH,CAAcF,QAAd,CAAL,EAA8B;IAC1B,OAAO,EAAP;EACH;;EAED,MAAMG,UAAU,GAAG,MAAMF,WAAA,CAAGG,QAAH,CAAYC,QAAZ,CAAqBL,QAArB,EAA+B;IAAEM,QAAQ,EAAE;EAAZ,CAA/B,CAAzB;EACA,OAAOC,IAAI,CAACC,KAAL,CAAWL,UAAX,KAA0B,EAAjC;AACH;;AAED,eAAeV,sBAAf,CAAsCO,QAAtC,EAAwDZ,MAAxD,EAA+E;EAC3E,MAAMe,UAAU,GAAGI,IAAI,CAACE,SAAL,CAAerB,MAAf,EAAuB,IAAvB,EAA6B,CAA7B,CAAnB;EACA,MAAMa,WAAA,CAAGG,QAAH,CAAYM,SAAZ,CAAsBV,QAAtB,EAAgCG,UAAhC,EAA4C;IAAEG,QAAQ,EAAE;EAAZ,CAA5C,CAAN;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["tagResources.ts"],"names":["tagResources","tags","pulumi","runtime","registerStackTransformation","args","isTaggable","type","props","opts","undefined","module","exports","resourceType","taggableResourceTypes","has","Set"],"mappings":"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","sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\n/**\n * Registers a global stack transformation that merges a set\n * of tags with whatever was explicitly set in the resource definition.\n */\nexport function tagResources(tags: Record<string, string>) {\n pulumi.runtime.registerStackTransformation(args => {\n if (isTaggable(args.type)) {\n args.props[\"tags\"] = { ...args.props[\"tags\"], ...tags };\n return { props: args.props, opts: args.opts };\n }\n return undefined;\n });\n}\n\nmodule.exports = {\n tagResources\n};\n\n/**\n * Returns true if the given resource type is an AWS resource that supports tags.\n */\nfunction isTaggable(resourceType: string) {\n return taggableResourceTypes.has(resourceType);\n}\n\n// A list of known AWS type tokens that are taggable.\nconst taggableResourceTypes = new Set([\n \"aws:accessanalyzer/analyzer:Analyzer\",\n \"aws:acm/certificate:Certificate\",\n \"aws:acmpca/certificateAuthority:CertificateAuthority\",\n \"aws:alb/loadBalancer:LoadBalancer\",\n \"aws:alb/targetGroup:TargetGroup\",\n \"aws:apigateway/apiKey:ApiKey\",\n \"aws:apigateway/clientCertificate:ClientCertificate\",\n \"aws:apigateway/domainName:DomainName\",\n \"aws:apigateway/restApi:RestApi\",\n \"aws:apigateway/stage:Stage\",\n \"aws:apigateway/usagePlan:UsagePlan\",\n \"aws:apigateway/vpcLink:VpcLink\",\n \"aws:apigatewayv2/api:Api\",\n \"aws:apigatewayv2/stage:Stage\",\n \"aws:applicationloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:applicationloadbalancing/targetGroup:TargetGroup\",\n \"aws:appmesh/mesh:Mesh\",\n \"aws:appmesh/route:Route\",\n \"aws:appmesh/virtualNode:VirtualNode\",\n \"aws:appmesh/virtualRouter:VirtualRouter\",\n \"aws:appmesh/virtualService:VirtualService\",\n \"aws:appsync/graphQLApi:GraphQLApi\",\n \"aws:athena/workgroup:Workgroup\",\n \"aws:autoscaling/group:Group\",\n \"aws:backup/plan:Plan\",\n \"aws:backup/vault:Vault\",\n \"aws:cfg/aggregateAuthorization:AggregateAuthorization\",\n \"aws:cfg/configurationAggregator:ConfigurationAggregator\",\n \"aws:cfg/rule:Rule\",\n \"aws:cloudformation/stack:Stack\",\n \"aws:cloudformation/stackSet:StackSet\",\n \"aws:cloudfront/distribution:Distribution\",\n \"aws:cloudhsmv2/cluster:Cluster\",\n \"aws:cloudtrail/trail:Trail\",\n \"aws:cloudwatch/eventRule:EventRule\",\n \"aws:cloudwatch/logGroup:LogGroup\",\n \"aws:cloudwatch/metricAlarm:MetricAlarm\",\n \"aws:codebuild/project:Project\",\n \"aws:codecommit/repository:Repository\",\n \"aws:codepipeline/pipeline:Pipeline\",\n \"aws:codepipeline/webhook:Webhook\",\n \"aws:codestarnotifications/notificationRule:NotificationRule\",\n \"aws:cognito/identityPool:IdentityPool\",\n \"aws:cognito/userPool:UserPool\",\n \"aws:datapipeline/pipeline:Pipeline\",\n \"aws:datasync/agent:Agent\",\n \"aws:datasync/efsLocation:EfsLocation\",\n \"aws:datasync/locationSmb:LocationSmb\",\n \"aws:datasync/nfsLocation:NfsLocation\",\n \"aws:datasync/s3Location:S3Location\",\n \"aws:datasync/task:Task\",\n \"aws:dax/cluster:Cluster\",\n \"aws:directconnect/connection:Connection\",\n \"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor\",\n \"aws:directconnect/linkAggregationGroup:LinkAggregationGroup\",\n \"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface\",\n \"aws:directconnect/publicVirtualInterface:PublicVirtualInterface\",\n \"aws:directconnect/transitVirtualInterface:TransitVirtualInterface\",\n \"aws:directoryservice/directory:Directory\",\n \"aws:dlm/lifecyclePolicy:LifecyclePolicy\",\n \"aws:dms/endpoint:Endpoint\",\n \"aws:dms/replicationInstance:ReplicationInstance\",\n \"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup\",\n \"aws:dms/replicationTask:ReplicationTask\",\n \"aws:docdb/cluster:Cluster\",\n \"aws:docdb/clusterInstance:ClusterInstance\",\n \"aws:docdb/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:docdb/subnetGroup:SubnetGroup\",\n \"aws:dynamodb/table:Table\",\n \"aws:ebs/snapshot:Snapshot\",\n \"aws:ebs/snapshotCopy:SnapshotCopy\",\n \"aws:ebs/volume:Volume\",\n \"aws:ec2/ami:Ami\",\n \"aws:ec2/amiCopy:AmiCopy\",\n \"aws:ec2/amiFromInstance:AmiFromInstance\",\n \"aws:ec2/capacityReservation:CapacityReservation\",\n \"aws:ec2/customerGateway:CustomerGateway\",\n \"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl\",\n \"aws:ec2/defaultRouteTable:DefaultRouteTable\",\n \"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup\",\n \"aws:ec2/defaultSubnet:DefaultSubnet\",\n \"aws:ec2/defaultVpc:DefaultVpc\",\n \"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions\",\n \"aws:ec2/eip:Eip\",\n \"aws:ec2/fleet:Fleet\",\n \"aws:ec2/instance:Instance\",\n \"aws:ec2/internetGateway:InternetGateway\",\n \"aws:ec2/keyPair:KeyPair\",\n \"aws:ec2/launchTemplate:LaunchTemplate\",\n \"aws:ec2/natGateway:NatGateway\",\n \"aws:ec2/networkAcl:NetworkAcl\",\n \"aws:ec2/networkInterface:NetworkInterface\",\n \"aws:ec2/placementGroup:PlacementGroup\",\n \"aws:ec2/routeTable:RouteTable\",\n \"aws:ec2/securityGroup:SecurityGroup\",\n \"aws:ec2/spotInstanceRequest:SpotInstanceRequest\",\n \"aws:ec2/subnet:Subnet\",\n \"aws:ec2/vpc:Vpc\",\n \"aws:ec2/vpcDhcpOptions:VpcDhcpOptions\",\n \"aws:ec2/vpcEndpoint:VpcEndpoint\",\n \"aws:ec2/vpcEndpointService:VpcEndpointService\",\n \"aws:ec2/vpcPeeringConnection:VpcPeeringConnection\",\n \"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter\",\n \"aws:ec2/vpnConnection:VpnConnection\",\n \"aws:ec2/vpnGateway:VpnGateway\",\n \"aws:ec2clientvpn/endpoint:Endpoint\",\n \"aws:ec2transitgateway/routeTable:RouteTable\",\n \"aws:ec2transitgateway/transitGateway:TransitGateway\",\n \"aws:ec2transitgateway/vpcAttachment:VpcAttachment\",\n \"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter\",\n \"aws:ecr/repository:Repository\",\n \"aws:ecs/capacityProvider:CapacityProvider\",\n \"aws:ecs/cluster:Cluster\",\n \"aws:ecs/service:Service\",\n \"aws:ecs/taskDefinition:TaskDefinition\",\n \"aws:efs/fileSystem:FileSystem\",\n \"aws:eks/cluster:Cluster\",\n \"aws:eks/fargateProfile:FargateProfile\",\n \"aws:eks/nodeGroup:NodeGroup\",\n \"aws:elasticache/cluster:Cluster\",\n \"aws:elasticache/replicationGroup:ReplicationGroup\",\n \"aws:elasticbeanstalk/application:Application\",\n \"aws:elasticbeanstalk/applicationVersion:ApplicationVersion\",\n \"aws:elasticbeanstalk/environment:Environment\",\n \"aws:elasticloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/targetGroup:TargetGroup\",\n \"aws:elasticsearch/domain:Domain\",\n \"aws:elb/loadBalancer:LoadBalancer\",\n \"aws:emr/cluster:Cluster\",\n \"aws:fsx/lustreFileSystem:LustreFileSystem\",\n \"aws:fsx/windowsFileSystem:WindowsFileSystem\",\n \"aws:gamelift/alias:Alias\",\n \"aws:gamelift/build:Build\",\n \"aws:gamelift/fleet:Fleet\",\n \"aws:gamelift/gameSessionQueue:GameSessionQueue\",\n \"aws:glacier/vault:Vault\",\n \"aws:glue/crawler:Crawler\",\n \"aws:glue/job:Job\",\n \"aws:glue/trigger:Trigger\",\n \"aws:iam/role:Role\",\n \"aws:iam/user:User\",\n \"aws:inspector/resourceGroup:ResourceGroup\",\n \"aws:kinesis/analyticsApplication:AnalyticsApplication\",\n \"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream\",\n \"aws:kinesis/stream:Stream\",\n \"aws:kms/externalKey:ExternalKey\",\n \"aws:kms/key:Key\",\n \"aws:lambda/function:Function\",\n \"aws:lb/loadBalancer:LoadBalancer\",\n \"aws:lb/targetGroup:TargetGroup\",\n \"aws:licensemanager/licenseConfiguration:LicenseConfiguration\",\n \"aws:lightsail/instance:Instance\",\n \"aws:mediaconvert/queue:Queue\",\n \"aws:mediapackage/channel:Channel\",\n \"aws:mediastore/container:Container\",\n \"aws:mq/broker:Broker\",\n \"aws:mq/configuration:Configuration\",\n \"aws:msk/cluster:Cluster\",\n \"aws:neptune/cluster:Cluster\",\n \"aws:neptune/clusterInstance:ClusterInstance\",\n \"aws:neptune/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:neptune/eventSubscription:EventSubscription\",\n \"aws:neptune/parameterGroup:ParameterGroup\",\n \"aws:neptune/subnetGroup:SubnetGroup\",\n \"aws:opsworks/stack:Stack\",\n \"aws:organizations/account:Account\",\n \"aws:pinpoint/app:App\",\n \"aws:qldb/ledger:Ledger\",\n \"aws:ram/resourceShare:ResourceShare\",\n \"aws:rds/cluster:Cluster\",\n \"aws:rds/clusterEndpoint:ClusterEndpoint\",\n \"aws:rds/clusterInstance:ClusterInstance\",\n \"aws:rds/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:rds/clusterSnapshot:ClusterSnapshot\",\n \"aws:rds/eventSubscription:EventSubscription\",\n \"aws:rds/instance:Instance\",\n \"aws:rds/optionGroup:OptionGroup\",\n \"aws:rds/parameterGroup:ParameterGroup\",\n \"aws:rds/securityGroup:SecurityGroup\",\n \"aws:rds/snapshot:Snapshot\",\n \"aws:rds/subnetGroup:SubnetGroup\",\n \"aws:redshift/cluster:Cluster\",\n \"aws:redshift/eventSubscription:EventSubscription\",\n \"aws:redshift/parameterGroup:ParameterGroup\",\n \"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant\",\n \"aws:redshift/snapshotSchedule:SnapshotSchedule\",\n \"aws:redshift/subnetGroup:SubnetGroup\",\n \"aws:resourcegroups/group:Group\",\n \"aws:route53/healthCheck:HealthCheck\",\n \"aws:route53/resolverEndpoint:ResolverEndpoint\",\n \"aws:route53/resolverRule:ResolverRule\",\n \"aws:route53/zone:Zone\",\n \"aws:s3/bucket:Bucket\",\n \"aws:s3/bucketObject:BucketObject\",\n \"aws:sagemaker/endpoint:Endpoint\",\n \"aws:sagemaker/endpointConfiguration:EndpointConfiguration\",\n \"aws:sagemaker/model:Model\",\n \"aws:sagemaker/notebookInstance:NotebookInstance\",\n \"aws:secretsmanager/secret:Secret\",\n \"aws:servicecatalog/portfolio:Portfolio\",\n \"aws:sfn/activity:Activity\",\n \"aws:sfn/stateMachine:StateMachine\",\n \"aws:sns/topic:Topic\",\n \"aws:sqs/queue:Queue\",\n \"aws:ssm/activation:Activation\",\n \"aws:ssm/document:Document\",\n \"aws:ssm/maintenanceWindow:MaintenanceWindow\",\n \"aws:ssm/parameter:Parameter\",\n \"aws:ssm/patchBaseline:PatchBaseline\",\n \"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume\",\n \"aws:storagegateway/gateway:Gateway\",\n \"aws:storagegateway/nfsFileShare:NfsFileShare\",\n \"aws:storagegateway/smbFileShare:SmbFileShare\",\n \"aws:swf/domain:Domain\",\n \"aws:transfer/server:Server\",\n \"aws:transfer/user:User\",\n \"aws:waf/rateBasedRule:RateBasedRule\",\n \"aws:waf/rule:Rule\",\n \"aws:waf/ruleGroup:RuleGroup\",\n \"aws:waf/webAcl:WebAcl\",\n \"aws:wafregional/rateBasedRule:RateBasedRule\",\n \"aws:wafregional/rule:Rule\",\n \"aws:wafregional/ruleGroup:RuleGroup\",\n \"aws:wafregional/webAcl:WebAcl\",\n \"aws:workspaces/directory:Directory\",\n \"aws:workspaces/ipGroup:IpGroup\"\n]);\n"]}
|
|
1
|
+
{"version":3,"names":["tagResources","tags","pulumi","runtime","registerStackTransformation","args","isTaggable","type","props","opts","undefined","module","exports","resourceType","taggableResourceTypes","has","Set"],"sources":["tagResources.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\n/**\n * Registers a global stack transformation that merges a set\n * of tags with whatever was explicitly set in the resource definition.\n */\nexport function tagResources(tags: Record<string, string>) {\n pulumi.runtime.registerStackTransformation(args => {\n if (isTaggable(args.type)) {\n args.props[\"tags\"] = { ...args.props[\"tags\"], ...tags };\n return { props: args.props, opts: args.opts };\n }\n return undefined;\n });\n}\n\nmodule.exports = {\n tagResources\n};\n\n/**\n * Returns true if the given resource type is an AWS resource that supports tags.\n */\nfunction isTaggable(resourceType: string) {\n return taggableResourceTypes.has(resourceType);\n}\n\n// A list of known AWS type tokens that are taggable.\nconst taggableResourceTypes = new Set([\n \"aws:accessanalyzer/analyzer:Analyzer\",\n \"aws:acm/certificate:Certificate\",\n \"aws:acmpca/certificateAuthority:CertificateAuthority\",\n \"aws:alb/loadBalancer:LoadBalancer\",\n \"aws:alb/targetGroup:TargetGroup\",\n \"aws:apigateway/apiKey:ApiKey\",\n \"aws:apigateway/clientCertificate:ClientCertificate\",\n \"aws:apigateway/domainName:DomainName\",\n \"aws:apigateway/restApi:RestApi\",\n \"aws:apigateway/stage:Stage\",\n \"aws:apigateway/usagePlan:UsagePlan\",\n \"aws:apigateway/vpcLink:VpcLink\",\n \"aws:apigatewayv2/api:Api\",\n \"aws:apigatewayv2/stage:Stage\",\n \"aws:applicationloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:applicationloadbalancing/targetGroup:TargetGroup\",\n \"aws:appmesh/mesh:Mesh\",\n \"aws:appmesh/route:Route\",\n \"aws:appmesh/virtualNode:VirtualNode\",\n \"aws:appmesh/virtualRouter:VirtualRouter\",\n \"aws:appmesh/virtualService:VirtualService\",\n \"aws:appsync/graphQLApi:GraphQLApi\",\n \"aws:athena/workgroup:Workgroup\",\n \"aws:autoscaling/group:Group\",\n \"aws:backup/plan:Plan\",\n \"aws:backup/vault:Vault\",\n \"aws:cfg/aggregateAuthorization:AggregateAuthorization\",\n \"aws:cfg/configurationAggregator:ConfigurationAggregator\",\n \"aws:cfg/rule:Rule\",\n \"aws:cloudformation/stack:Stack\",\n \"aws:cloudformation/stackSet:StackSet\",\n \"aws:cloudfront/distribution:Distribution\",\n \"aws:cloudhsmv2/cluster:Cluster\",\n \"aws:cloudtrail/trail:Trail\",\n \"aws:cloudwatch/eventRule:EventRule\",\n \"aws:cloudwatch/logGroup:LogGroup\",\n \"aws:cloudwatch/metricAlarm:MetricAlarm\",\n \"aws:codebuild/project:Project\",\n \"aws:codecommit/repository:Repository\",\n \"aws:codepipeline/pipeline:Pipeline\",\n \"aws:codepipeline/webhook:Webhook\",\n \"aws:codestarnotifications/notificationRule:NotificationRule\",\n \"aws:cognito/identityPool:IdentityPool\",\n \"aws:cognito/userPool:UserPool\",\n \"aws:datapipeline/pipeline:Pipeline\",\n \"aws:datasync/agent:Agent\",\n \"aws:datasync/efsLocation:EfsLocation\",\n \"aws:datasync/locationSmb:LocationSmb\",\n \"aws:datasync/nfsLocation:NfsLocation\",\n \"aws:datasync/s3Location:S3Location\",\n \"aws:datasync/task:Task\",\n \"aws:dax/cluster:Cluster\",\n \"aws:directconnect/connection:Connection\",\n \"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor\",\n \"aws:directconnect/linkAggregationGroup:LinkAggregationGroup\",\n \"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface\",\n \"aws:directconnect/publicVirtualInterface:PublicVirtualInterface\",\n \"aws:directconnect/transitVirtualInterface:TransitVirtualInterface\",\n \"aws:directoryservice/directory:Directory\",\n \"aws:dlm/lifecyclePolicy:LifecyclePolicy\",\n \"aws:dms/endpoint:Endpoint\",\n \"aws:dms/replicationInstance:ReplicationInstance\",\n \"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup\",\n \"aws:dms/replicationTask:ReplicationTask\",\n \"aws:docdb/cluster:Cluster\",\n \"aws:docdb/clusterInstance:ClusterInstance\",\n \"aws:docdb/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:docdb/subnetGroup:SubnetGroup\",\n \"aws:dynamodb/table:Table\",\n \"aws:ebs/snapshot:Snapshot\",\n \"aws:ebs/snapshotCopy:SnapshotCopy\",\n \"aws:ebs/volume:Volume\",\n \"aws:ec2/ami:Ami\",\n \"aws:ec2/amiCopy:AmiCopy\",\n \"aws:ec2/amiFromInstance:AmiFromInstance\",\n \"aws:ec2/capacityReservation:CapacityReservation\",\n \"aws:ec2/customerGateway:CustomerGateway\",\n \"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl\",\n \"aws:ec2/defaultRouteTable:DefaultRouteTable\",\n \"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup\",\n \"aws:ec2/defaultSubnet:DefaultSubnet\",\n \"aws:ec2/defaultVpc:DefaultVpc\",\n \"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions\",\n \"aws:ec2/eip:Eip\",\n \"aws:ec2/fleet:Fleet\",\n \"aws:ec2/instance:Instance\",\n \"aws:ec2/internetGateway:InternetGateway\",\n \"aws:ec2/keyPair:KeyPair\",\n \"aws:ec2/launchTemplate:LaunchTemplate\",\n \"aws:ec2/natGateway:NatGateway\",\n \"aws:ec2/networkAcl:NetworkAcl\",\n \"aws:ec2/networkInterface:NetworkInterface\",\n \"aws:ec2/placementGroup:PlacementGroup\",\n \"aws:ec2/routeTable:RouteTable\",\n \"aws:ec2/securityGroup:SecurityGroup\",\n \"aws:ec2/spotInstanceRequest:SpotInstanceRequest\",\n \"aws:ec2/subnet:Subnet\",\n \"aws:ec2/vpc:Vpc\",\n \"aws:ec2/vpcDhcpOptions:VpcDhcpOptions\",\n \"aws:ec2/vpcEndpoint:VpcEndpoint\",\n \"aws:ec2/vpcEndpointService:VpcEndpointService\",\n \"aws:ec2/vpcPeeringConnection:VpcPeeringConnection\",\n \"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter\",\n \"aws:ec2/vpnConnection:VpnConnection\",\n \"aws:ec2/vpnGateway:VpnGateway\",\n \"aws:ec2clientvpn/endpoint:Endpoint\",\n \"aws:ec2transitgateway/routeTable:RouteTable\",\n \"aws:ec2transitgateway/transitGateway:TransitGateway\",\n \"aws:ec2transitgateway/vpcAttachment:VpcAttachment\",\n \"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter\",\n \"aws:ecr/repository:Repository\",\n \"aws:ecs/capacityProvider:CapacityProvider\",\n \"aws:ecs/cluster:Cluster\",\n \"aws:ecs/service:Service\",\n \"aws:ecs/taskDefinition:TaskDefinition\",\n \"aws:efs/fileSystem:FileSystem\",\n \"aws:eks/cluster:Cluster\",\n \"aws:eks/fargateProfile:FargateProfile\",\n \"aws:eks/nodeGroup:NodeGroup\",\n \"aws:elasticache/cluster:Cluster\",\n \"aws:elasticache/replicationGroup:ReplicationGroup\",\n \"aws:elasticbeanstalk/application:Application\",\n \"aws:elasticbeanstalk/applicationVersion:ApplicationVersion\",\n \"aws:elasticbeanstalk/environment:Environment\",\n \"aws:elasticloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/targetGroup:TargetGroup\",\n \"aws:elasticsearch/domain:Domain\",\n \"aws:elb/loadBalancer:LoadBalancer\",\n \"aws:emr/cluster:Cluster\",\n \"aws:fsx/lustreFileSystem:LustreFileSystem\",\n \"aws:fsx/windowsFileSystem:WindowsFileSystem\",\n \"aws:gamelift/alias:Alias\",\n \"aws:gamelift/build:Build\",\n \"aws:gamelift/fleet:Fleet\",\n \"aws:gamelift/gameSessionQueue:GameSessionQueue\",\n \"aws:glacier/vault:Vault\",\n \"aws:glue/crawler:Crawler\",\n \"aws:glue/job:Job\",\n \"aws:glue/trigger:Trigger\",\n \"aws:iam/role:Role\",\n \"aws:iam/user:User\",\n \"aws:inspector/resourceGroup:ResourceGroup\",\n \"aws:kinesis/analyticsApplication:AnalyticsApplication\",\n \"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream\",\n \"aws:kinesis/stream:Stream\",\n \"aws:kms/externalKey:ExternalKey\",\n \"aws:kms/key:Key\",\n \"aws:lambda/function:Function\",\n \"aws:lb/loadBalancer:LoadBalancer\",\n \"aws:lb/targetGroup:TargetGroup\",\n \"aws:licensemanager/licenseConfiguration:LicenseConfiguration\",\n \"aws:lightsail/instance:Instance\",\n \"aws:mediaconvert/queue:Queue\",\n \"aws:mediapackage/channel:Channel\",\n \"aws:mediastore/container:Container\",\n \"aws:mq/broker:Broker\",\n \"aws:mq/configuration:Configuration\",\n \"aws:msk/cluster:Cluster\",\n \"aws:neptune/cluster:Cluster\",\n \"aws:neptune/clusterInstance:ClusterInstance\",\n \"aws:neptune/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:neptune/eventSubscription:EventSubscription\",\n \"aws:neptune/parameterGroup:ParameterGroup\",\n \"aws:neptune/subnetGroup:SubnetGroup\",\n \"aws:opsworks/stack:Stack\",\n \"aws:organizations/account:Account\",\n \"aws:pinpoint/app:App\",\n \"aws:qldb/ledger:Ledger\",\n \"aws:ram/resourceShare:ResourceShare\",\n \"aws:rds/cluster:Cluster\",\n \"aws:rds/clusterEndpoint:ClusterEndpoint\",\n \"aws:rds/clusterInstance:ClusterInstance\",\n \"aws:rds/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:rds/clusterSnapshot:ClusterSnapshot\",\n \"aws:rds/eventSubscription:EventSubscription\",\n \"aws:rds/instance:Instance\",\n \"aws:rds/optionGroup:OptionGroup\",\n \"aws:rds/parameterGroup:ParameterGroup\",\n \"aws:rds/securityGroup:SecurityGroup\",\n \"aws:rds/snapshot:Snapshot\",\n \"aws:rds/subnetGroup:SubnetGroup\",\n \"aws:redshift/cluster:Cluster\",\n \"aws:redshift/eventSubscription:EventSubscription\",\n \"aws:redshift/parameterGroup:ParameterGroup\",\n \"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant\",\n \"aws:redshift/snapshotSchedule:SnapshotSchedule\",\n \"aws:redshift/subnetGroup:SubnetGroup\",\n \"aws:resourcegroups/group:Group\",\n \"aws:route53/healthCheck:HealthCheck\",\n \"aws:route53/resolverEndpoint:ResolverEndpoint\",\n \"aws:route53/resolverRule:ResolverRule\",\n \"aws:route53/zone:Zone\",\n \"aws:s3/bucket:Bucket\",\n \"aws:s3/bucketObject:BucketObject\",\n \"aws:sagemaker/endpoint:Endpoint\",\n \"aws:sagemaker/endpointConfiguration:EndpointConfiguration\",\n \"aws:sagemaker/model:Model\",\n \"aws:sagemaker/notebookInstance:NotebookInstance\",\n \"aws:secretsmanager/secret:Secret\",\n \"aws:servicecatalog/portfolio:Portfolio\",\n \"aws:sfn/activity:Activity\",\n \"aws:sfn/stateMachine:StateMachine\",\n \"aws:sns/topic:Topic\",\n \"aws:sqs/queue:Queue\",\n \"aws:ssm/activation:Activation\",\n \"aws:ssm/document:Document\",\n \"aws:ssm/maintenanceWindow:MaintenanceWindow\",\n \"aws:ssm/parameter:Parameter\",\n \"aws:ssm/patchBaseline:PatchBaseline\",\n \"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume\",\n \"aws:storagegateway/gateway:Gateway\",\n \"aws:storagegateway/nfsFileShare:NfsFileShare\",\n \"aws:storagegateway/smbFileShare:SmbFileShare\",\n \"aws:swf/domain:Domain\",\n \"aws:transfer/server:Server\",\n \"aws:transfer/user:User\",\n \"aws:waf/rateBasedRule:RateBasedRule\",\n \"aws:waf/rule:Rule\",\n \"aws:waf/ruleGroup:RuleGroup\",\n \"aws:waf/webAcl:WebAcl\",\n \"aws:wafregional/rateBasedRule:RateBasedRule\",\n \"aws:wafregional/rule:Rule\",\n \"aws:wafregional/ruleGroup:RuleGroup\",\n \"aws:wafregional/webAcl:WebAcl\",\n \"aws:workspaces/directory:Directory\",\n \"aws:workspaces/ipGroup:IpGroup\"\n]);\n"],"mappings":"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"}
|