@azure/app-configuration 1.4.1-alpha.20230406.2 → 1.4.1
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/dist/index.js +11 -96
- package/dist/index.js.map +1 -1
- package/dist-esm/samples-dev/featureFlag.js +12 -5
- package/dist-esm/samples-dev/featureFlag.js.map +1 -1
- package/dist-esm/samples-dev/getSettingOnlyIfChanged.js +13 -6
- package/dist-esm/samples-dev/getSettingOnlyIfChanged.js.map +1 -1
- package/dist-esm/samples-dev/helloworld.js +12 -5
- package/dist-esm/samples-dev/helloworld.js.map +1 -1
- package/dist-esm/samples-dev/helloworldWithLabels.js +12 -5
- package/dist-esm/samples-dev/helloworldWithLabels.js.map +1 -1
- package/dist-esm/samples-dev/listConfigurationSettings.js +23 -9
- package/dist-esm/samples-dev/listConfigurationSettings.js.map +1 -1
- package/dist-esm/samples-dev/listRevisions.js +25 -11
- package/dist-esm/samples-dev/listRevisions.js.map +1 -1
- package/dist-esm/samples-dev/optimisticConcurrencyViaEtag.js +13 -6
- package/dist-esm/samples-dev/optimisticConcurrencyViaEtag.js.map +1 -1
- package/dist-esm/samples-dev/secretReference.js +12 -5
- package/dist-esm/samples-dev/secretReference.js.map +1 -1
- package/dist-esm/samples-dev/setReadOnlySample.js +13 -6
- package/dist-esm/samples-dev/setReadOnlySample.js.map +1 -1
- package/dist-esm/samples-dev/updateSyncTokenSample.js +12 -5
- package/dist-esm/samples-dev/updateSyncTokenSample.js.map +1 -1
- package/dist-esm/src/generated/src/appConfiguration.js +10 -18
- package/dist-esm/src/generated/src/appConfiguration.js.map +1 -1
- package/dist-esm/src/generated/src/models/index.js +17 -72
- package/dist-esm/src/generated/src/models/index.js.map +1 -1
- package/dist-esm/src/generated/src/models/parameters.js +1 -78
- package/dist-esm/src/generated/src/models/parameters.js.map +1 -1
- package/dist-esm/test/public/featureFlag.spec.js +36 -22
- package/dist-esm/test/public/featureFlag.spec.js.map +1 -1
- package/dist-esm/test/public/secretReference.spec.js +35 -21
- package/dist-esm/test/public/secretReference.spec.js.map +1 -1
- package/dist-esm/test/public/utils/testHelpers.js +50 -22
- package/dist-esm/test/public/utils/testHelpers.js.map +1 -1
- package/package.json +5 -5
|
@@ -109,20 +109,27 @@ export async function main() {
|
|
|
109
109
|
await cleanupSampleValues([originalFeatureFlag.key], appConfigClient);
|
|
110
110
|
}
|
|
111
111
|
async function cleanupSampleValues(keys, client) {
|
|
112
|
-
var e_1,
|
|
112
|
+
var _a, e_1, _b, _c;
|
|
113
113
|
const settingsIterator = client.listConfigurationSettings({
|
|
114
114
|
keyFilter: keys.join(","),
|
|
115
115
|
});
|
|
116
116
|
try {
|
|
117
|
-
for (var settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(),
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
for (var _d = true, settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(), _a = settingsIterator_1_1.done, !_a;) {
|
|
118
|
+
_c = settingsIterator_1_1.value;
|
|
119
|
+
_d = false;
|
|
120
|
+
try {
|
|
121
|
+
const setting = _c;
|
|
122
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
_d = true;
|
|
126
|
+
}
|
|
120
127
|
}
|
|
121
128
|
}
|
|
122
129
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
130
|
finally {
|
|
124
131
|
try {
|
|
125
|
-
if (
|
|
132
|
+
if (!_d && !_a && (_b = settingsIterator_1.return)) await _b.call(settingsIterator_1);
|
|
126
133
|
}
|
|
127
134
|
finally { if (e_1) throw e_1.error; }
|
|
128
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlag.js","sourceRoot":"","sources":["../../samples-dev/featureFlag.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;;GAIG;AACH,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,EAEtB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,mBAAmB,GAA2C;QAClE,GAAG,EAAE,qBAAqB;QAC1B,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,mBAAmB;YAChC,UAAU,EAAE;gBACV,aAAa,EAAE;oBACb;wBACE,iFAAiF;wBACjF,IAAI,EAAE,sBAAsB;wBAC5B,UAAU,EAAE;4BACV,KAAK,EAAE,+BAA+B;4BACtC,GAAG,EAAE,gCAAgC;yBACtC;qBACF;oBACD;wBACE,4EAA4E;wBAC5E,IAAI,EAAE,qBAAqB;wBAC3B,UAAU,EAAE;4BACV,QAAQ,EAAE;gCACR,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC;gCACxD,KAAK,EAAE,CAAC,kBAAkB,CAAC;gCAC3B,wBAAwB,EAAE,CAAC,EAAE,kGAAkG;6BAChI;4BACD,iMAAiM;yBAClM;qBACF;oBACD,IAAI;oBACJ,qHAAqH;oBACrH,kCAAkC;oBAClC,8BAA8B;oBAC9B,KAAK;oBACL,wCAAwC;iBACzC;aACF;SACF;KACF,CAAC;IAEF,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,mBAAmB,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;IAEtE,OAAO,CAAC,GAAG,CAAC,mCAAmC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E,MAAM,eAAe,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,gDAAgD,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,uBAAuB,CAAC;QAChE,GAAG,EAAE,mBAAmB,CAAC,GAAG;KAC7B,CAAC,CAAC;IAEH,qKAAqK;IACrK,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,qDAAqD;IAC3G,mBAAmB;IACnB,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE;QACxE,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CACT,wBAAwB,YAAY,CAAC,IAAI,mBAAmB,IAAI,CAAC,SAAS,CACxE,YAAY,CAAC,UAAU,EACvB,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;QACF,QAAQ,YAAY,CAAC,IAAI,EAAE;YACzB,+CAA+C;YAC/C,KAAK,qBAAqB;gBACxB,+BAA+B;gBAC/B,IAAI,uBAAuB,CAAC,YAAY,CAAC,EAAE;oBACzC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK;wBACpC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;iBACtE;gBACD,MAAM;YACR,KAAK,sBAAsB;gBACzB,yBAAyB;gBACzB,IAAI,wBAAwB,CAAC,YAAY,CAAC,EAAE;oBAC1C,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,gCAAgC,CAAC;iBAClE;gBACD,MAAM;YACR,+BAA+B;YAC/B,iGAAiG;YACjG,wCAAwC;YACxC,WAAW;YACX;gBACE,sDAAsD;gBACtD,iCAAiC;gBACjC,MAAM;SACT;KACF;IAED,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,8BAA8B;IAC9B,MAAM,eAAe,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;IAE9D,+BAA+B;IAC/B,OAAO,CAAC,GAAG,CAAC,4CAA4C,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,MAAM,sBAAsB,GAAG,MAAM,eAAe,CAAC,uBAAuB,CAAC;QAC3E,GAAG,EAAE,cAAc,CAAC,GAAG;KACxB,CAAC,CAAC;IAEH,qKAAqK;IACrK,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC,qDAAqD;IAC9H,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC;IAC3D,KAAK,MAAM,YAAY,IAAI,UAAU,CAAC,aAAa,EAAE;QACnD,OAAO,CAAC,GAAG,CACT,wBAAwB,YAAY,CAAC,IAAI,mBAAmB,IAAI,CAAC,SAAS,CACxE,YAAY,CAAC,UAAU,EACvB,IAAI,EACJ,CAAC,CACF,IAAI,CACN,CAAC;KACH;IACD,MAAM,mBAAmB,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,IAAA,qBAAA,cAAA,gBAAgB,CAAA,sBAAA;YAAjC,MAAM,OAAO,6BAAA,CAAA;YACtB,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SACrF;;;;;;;;;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,YAAiB;IAShD,OAAO,CACL,YAAY,CAAC,IAAI,KAAK,qBAAqB;QAC3C,YAAY,CAAC,UAAU;QACvB,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,0BAA0B,CAAC,KAAK,QAAQ,CACpF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAiB;IAEjB,OAAO,CACL,YAAY,CAAC,IAAI,KAAK,sBAAsB;QAC5C,YAAY,CAAC,UAAU;QACvB,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAChC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;QAC9B,OAAO,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,QAAQ;QACpD,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,QAAQ,CACnD,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Feature flags are settings that follow specific JSON schema for the value.\n *\n * @azsdk-weight 20\n */\nimport {\n AppConfigurationClient,\n ConfigurationSetting,\n featureFlagContentType,\n FeatureFlagValue,\n parseFeatureFlag,\n} from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(`Running featureFlag sample`);\n\n const originalFeatureFlag: ConfigurationSetting<FeatureFlagValue> = {\n key: `sample-feature-flag`,\n isReadOnly: false,\n contentType: featureFlagContentType,\n value: {\n enabled: false,\n description: \"I'm a description\",\n conditions: {\n clientFilters: [\n {\n // Time window filter - Use this filter to activate the feature for a time period\n name: \"Microsoft.TimeWindow\",\n parameters: {\n Start: \"Wed, 01 May 2021 13:59:59 GMT\",\n End: \"Mon, 01 July 2022 00:00:00 GMT\",\n },\n },\n {\n // Targeting filter - you can target users/groups of users using this filter\n name: \"Microsoft.Targeting\",\n parameters: {\n Audience: {\n Groups: [{ Name: \"contoso.com\", RolloutPercentage: 50 }], // The feature flag is enabled for 50% of other users in the contoso.com group, because contoso.com is listed in the Groups section with a Percentage of 50.\n Users: [\"test@contoso.com\"], // The feature flag is always enabled for user test@contoso.com, because test@contoso.com is listed in the Users section.\n DefaultRolloutPercentage: 0, // The feature is always disabled for all other users, because the Default percentage is set to 0.\n },\n // You can create additional users with @contoso.com email addresses to see the behavior of the group settings. 50% of these users will see the Beta item. The other 50% won't see the Beta item.\n },\n },\n // {\n // // Percentage filter - activates a feature based on a percentage, to enable the feature flag for 50% of requests\n // name: \"Microsoft.Percentage\",\n // parameters: { Value: 50 }\n // },\n // { name: \"FilterX\" }, // Custom filter\n ],\n },\n },\n };\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const appConfigClient = new AppConfigurationClient(connectionString);\n\n await cleanupSampleValues([originalFeatureFlag.key], appConfigClient);\n\n console.log(`Add a new featureFlag with key: ${originalFeatureFlag.key}`);\n await appConfigClient.addConfigurationSetting(originalFeatureFlag);\n\n console.log(`Get the added configurationSetting with key: ${originalFeatureFlag.key}`);\n const getResponse = await appConfigClient.getConfigurationSetting({\n key: originalFeatureFlag.key,\n });\n\n // You can use the `isFeatureFlag` global method to check if the content type is featureFlagContentType (\"application/vnd.microsoft.appconfig.ff+json;charset=utf-8\")\n const newFeatureFlag = parseFeatureFlag(getResponse); // Converts the configurationsetting into featureflag\n // Modify the props\n for (const clientFilter of newFeatureFlag.value.conditions.clientFilters) {\n clientFilter.parameters = clientFilter.parameters || {};\n console.log(\n `\\n...clientFilter - \"${clientFilter.name}\"...\\nparams => ${JSON.stringify(\n clientFilter.parameters,\n null,\n 1\n )}\\n`\n );\n switch (clientFilter.name) {\n // Tweak the client filters of the feature flag\n case \"Microsoft.Targeting\":\n // Adds a new user to the group\n if (isTargetingClientFilter(clientFilter)) {\n clientFilter.parameters.Audience.Users =\n clientFilter.parameters.Audience.Users.concat(\"test2@contoso.com\");\n }\n break;\n case \"Microsoft.TimeWindow\":\n // Changes the start time\n if (isTimeWindowClientFilter(clientFilter)) {\n clientFilter.parameters.Start = \"Wed, 01 June 2021 13:59:59 GMT\";\n }\n break;\n // case \"Microsoft.Percentage\":\n // // Changes the percentage value from 50 to 75 - to enable the feature flag for 75% of requests\n // clientFilter.parameters.Value = 75;\n // break;\n default:\n // Change the filter name for all other client filters\n // clientFilter.name = \"FilterY\";\n break;\n }\n }\n\n console.log(`========> Update the featureFlag <======== `);\n // Updating the config setting\n await appConfigClient.setConfigurationSetting(newFeatureFlag);\n\n // Get the config setting again\n console.log(`Get the updated config setting with key: ${newFeatureFlag.key}`);\n const getResponseAfterUpdate = await appConfigClient.getConfigurationSetting({\n key: newFeatureFlag.key,\n });\n\n // You can use the `isFeatureFlag` global method to check if the content type is featureFlagContentType (\"application/vnd.microsoft.appconfig.ff+json;charset=utf-8\")\n const featureFlagAfterUpdate = parseFeatureFlag(getResponseAfterUpdate); // Converts the configurationsetting into featureflag\n const conditions = featureFlagAfterUpdate.value.conditions;\n for (const clientFilter of conditions.clientFilters) {\n console.log(\n `\\n...clientFilter - \"${clientFilter.name}\"...\\nparams => ${JSON.stringify(\n clientFilter.parameters,\n null,\n 1\n )}\\n`\n );\n }\n await cleanupSampleValues([originalFeatureFlag.key], appConfigClient);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const settingsIterator = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of settingsIterator) {\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\n/**\n * typeguard - for targeting client filter\n */\nfunction isTargetingClientFilter(clientFilter: any): clientFilter is {\n parameters: {\n Audience: {\n Groups: Array<{ Name: string; RolloutPercentage: number }>;\n Users: Array<string>;\n DefaultRolloutPercentage: number;\n };\n };\n} {\n return (\n clientFilter.name === \"Microsoft.Targeting\" &&\n clientFilter.parameters &&\n clientFilter.parameters[\"Audience\"] &&\n Array.isArray(clientFilter.parameters[\"Audience\"][\"Groups\"]) &&\n Array.isArray(clientFilter.parameters[\"Audience\"][\"Users\"]) &&\n typeof clientFilter.parameters[\"Audience\"][\"DefaultRolloutPercentage\"] === \"number\"\n );\n}\n\n/**\n * typeguard - for timewindow client filter\n */\nexport function isTimeWindowClientFilter(\n clientFilter: any\n): clientFilter is { parameters: { Start: string; End: string } } {\n return (\n clientFilter.name === \"Microsoft.TimeWindow\" &&\n clientFilter.parameters &&\n clientFilter.parameters[\"Start\"] &&\n clientFilter.parameters[\"End\"] &&\n typeof clientFilter.parameters[\"Start\"] === \"string\" &&\n typeof clientFilter.parameters[\"End\"] === \"string\"\n );\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
1
|
+
{"version":3,"file":"featureFlag.js","sourceRoot":"","sources":["../../samples-dev/featureFlag.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Feature flags are settings that follow specific JSON schema for the value.\n *\n * @azsdk-weight 20\n */\nimport {\n AppConfigurationClient,\n ConfigurationSetting,\n featureFlagContentType,\n FeatureFlagValue,\n parseFeatureFlag,\n} from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(`Running featureFlag sample`);\n\n const originalFeatureFlag: ConfigurationSetting<FeatureFlagValue> = {\n key: `sample-feature-flag`,\n isReadOnly: false,\n contentType: featureFlagContentType,\n value: {\n enabled: false,\n description: \"I'm a description\",\n conditions: {\n clientFilters: [\n {\n // Time window filter - Use this filter to activate the feature for a time period\n name: \"Microsoft.TimeWindow\",\n parameters: {\n Start: \"Wed, 01 May 2021 13:59:59 GMT\",\n End: \"Mon, 01 July 2022 00:00:00 GMT\",\n },\n },\n {\n // Targeting filter - you can target users/groups of users using this filter\n name: \"Microsoft.Targeting\",\n parameters: {\n Audience: {\n Groups: [{ Name: \"contoso.com\", RolloutPercentage: 50 }], // The feature flag is enabled for 50% of other users in the contoso.com group, because contoso.com is listed in the Groups section with a Percentage of 50.\n Users: [\"test@contoso.com\"], // The feature flag is always enabled for user test@contoso.com, because test@contoso.com is listed in the Users section.\n DefaultRolloutPercentage: 0, // The feature is always disabled for all other users, because the Default percentage is set to 0.\n },\n // You can create additional users with @contoso.com email addresses to see the behavior of the group settings. 50% of these users will see the Beta item. The other 50% won't see the Beta item.\n },\n },\n // {\n // // Percentage filter - activates a feature based on a percentage, to enable the feature flag for 50% of requests\n // name: \"Microsoft.Percentage\",\n // parameters: { Value: 50 }\n // },\n // { name: \"FilterX\" }, // Custom filter\n ],\n },\n },\n };\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const appConfigClient = new AppConfigurationClient(connectionString);\n\n await cleanupSampleValues([originalFeatureFlag.key], appConfigClient);\n\n console.log(`Add a new featureFlag with key: ${originalFeatureFlag.key}`);\n await appConfigClient.addConfigurationSetting(originalFeatureFlag);\n\n console.log(`Get the added configurationSetting with key: ${originalFeatureFlag.key}`);\n const getResponse = await appConfigClient.getConfigurationSetting({\n key: originalFeatureFlag.key,\n });\n\n // You can use the `isFeatureFlag` global method to check if the content type is featureFlagContentType (\"application/vnd.microsoft.appconfig.ff+json;charset=utf-8\")\n const newFeatureFlag = parseFeatureFlag(getResponse); // Converts the configurationsetting into featureflag\n // Modify the props\n for (const clientFilter of newFeatureFlag.value.conditions.clientFilters) {\n clientFilter.parameters = clientFilter.parameters || {};\n console.log(\n `\\n...clientFilter - \"${clientFilter.name}\"...\\nparams => ${JSON.stringify(\n clientFilter.parameters,\n null,\n 1\n )}\\n`\n );\n switch (clientFilter.name) {\n // Tweak the client filters of the feature flag\n case \"Microsoft.Targeting\":\n // Adds a new user to the group\n if (isTargetingClientFilter(clientFilter)) {\n clientFilter.parameters.Audience.Users =\n clientFilter.parameters.Audience.Users.concat(\"test2@contoso.com\");\n }\n break;\n case \"Microsoft.TimeWindow\":\n // Changes the start time\n if (isTimeWindowClientFilter(clientFilter)) {\n clientFilter.parameters.Start = \"Wed, 01 June 2021 13:59:59 GMT\";\n }\n break;\n // case \"Microsoft.Percentage\":\n // // Changes the percentage value from 50 to 75 - to enable the feature flag for 75% of requests\n // clientFilter.parameters.Value = 75;\n // break;\n default:\n // Change the filter name for all other client filters\n // clientFilter.name = \"FilterY\";\n break;\n }\n }\n\n console.log(`========> Update the featureFlag <======== `);\n // Updating the config setting\n await appConfigClient.setConfigurationSetting(newFeatureFlag);\n\n // Get the config setting again\n console.log(`Get the updated config setting with key: ${newFeatureFlag.key}`);\n const getResponseAfterUpdate = await appConfigClient.getConfigurationSetting({\n key: newFeatureFlag.key,\n });\n\n // You can use the `isFeatureFlag` global method to check if the content type is featureFlagContentType (\"application/vnd.microsoft.appconfig.ff+json;charset=utf-8\")\n const featureFlagAfterUpdate = parseFeatureFlag(getResponseAfterUpdate); // Converts the configurationsetting into featureflag\n const conditions = featureFlagAfterUpdate.value.conditions;\n for (const clientFilter of conditions.clientFilters) {\n console.log(\n `\\n...clientFilter - \"${clientFilter.name}\"...\\nparams => ${JSON.stringify(\n clientFilter.parameters,\n null,\n 1\n )}\\n`\n );\n }\n await cleanupSampleValues([originalFeatureFlag.key], appConfigClient);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const settingsIterator = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of settingsIterator) {\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\n/**\n * typeguard - for targeting client filter\n */\nfunction isTargetingClientFilter(clientFilter: any): clientFilter is {\n parameters: {\n Audience: {\n Groups: Array<{ Name: string; RolloutPercentage: number }>;\n Users: Array<string>;\n DefaultRolloutPercentage: number;\n };\n };\n} {\n return (\n clientFilter.name === \"Microsoft.Targeting\" &&\n clientFilter.parameters &&\n clientFilter.parameters[\"Audience\"] &&\n Array.isArray(clientFilter.parameters[\"Audience\"][\"Groups\"]) &&\n Array.isArray(clientFilter.parameters[\"Audience\"][\"Users\"]) &&\n typeof clientFilter.parameters[\"Audience\"][\"DefaultRolloutPercentage\"] === \"number\"\n );\n}\n\n/**\n * typeguard - for timewindow client filter\n */\nexport function isTimeWindowClientFilter(\n clientFilter: any\n): clientFilter is { parameters: { Start: string; End: string } } {\n return (\n clientFilter.name === \"Microsoft.TimeWindow\" &&\n clientFilter.parameters &&\n clientFilter.parameters[\"Start\"] &&\n clientFilter.parameters[\"End\"] &&\n typeof clientFilter.parameters[\"Start\"] === \"string\" &&\n typeof clientFilter.parameters[\"End\"] === \"string\"\n );\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -35,21 +35,28 @@ export async function main() {
|
|
|
35
35
|
await cleanupSampleValues([key], client);
|
|
36
36
|
}
|
|
37
37
|
async function cleanupSampleValues(keys, client) {
|
|
38
|
-
var e_1,
|
|
38
|
+
var _a, e_1, _b, _c;
|
|
39
39
|
const existingSettings = client.listConfigurationSettings({
|
|
40
40
|
keyFilter: keys.join(","),
|
|
41
41
|
});
|
|
42
42
|
try {
|
|
43
|
-
for (var existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
for (var _d = true, existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(), _a = existingSettings_1_1.done, !_a;) {
|
|
44
|
+
_c = existingSettings_1_1.value;
|
|
45
|
+
_d = false;
|
|
46
|
+
try {
|
|
47
|
+
const setting = _c;
|
|
48
|
+
await client.setReadOnly(setting, false);
|
|
49
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
_d = true;
|
|
53
|
+
}
|
|
47
54
|
}
|
|
48
55
|
}
|
|
49
56
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
50
57
|
finally {
|
|
51
58
|
try {
|
|
52
|
-
if (
|
|
59
|
+
if (!_d && !_a && (_b = existingSettings_1.return)) await _b.call(existingSettings_1);
|
|
53
60
|
}
|
|
54
61
|
finally { if (e_1) throw e_1.error; }
|
|
55
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSettingOnlyIfChanged.js","sourceRoot":"","sources":["../../samples-dev/getSettingOnlyIfChanged.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;;;GAKG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,GAAG,GAAG,gCAAgC,CAAC;IAC7C,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAE3F,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IAEvF,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE;QAC3E,oGAAoG;QACpG,2EAA2E;QAC3E,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,oGAAoG;IACpG,OAAO,CAAC,GAAG,CAAC,+BAA+B,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,0BAA0B;IAEtG,yGAAyG;IACzG,IAAI,iBAAiB,CAAC,KAAK,KAAK,SAAS,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IAED,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,
|
|
1
|
+
{"version":3,"file":"getSettingOnlyIfChanged.js","sourceRoot":"","sources":["../../samples-dev/getSettingOnlyIfChanged.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;;;GAKG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,GAAG,GAAG,gCAAgC,CAAC;IAC7C,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAE3F,yEAAyE;IACzE,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IAEvF,MAAM,iBAAiB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE;QAC3E,oGAAoG;QACpG,2EAA2E;QAC3E,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,oGAAoG;IACpG,OAAO,CAAC,GAAG,CAAC,+BAA+B,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,0BAA0B;IAEtG,yGAAyG;IACzG,IAAI,iBAAiB,CAAC,KAAK,KAAK,SAAS,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IAED,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,eAAA,qBAAA,cAAA,gBAAgB,CAAA,sBAAA;YAAhB,gCAAgB;YAAhB,WAAgB;;gBAAjC,MAAM,OAAO,KAAA,CAAA;gBACtB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;SACrF;;;;;;;;;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Demonstrates getting a setting only if it has changed\n * from what you already have. (This allows your app to avoid downloading\n * the contents of a setting if the value is unchanged.)\n * @azsdk-weight 60\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(\"Running get setting only if changed sample\");\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n const key = \"getSettingOnlyIfChangedExample\";\n await cleanupSampleValues([key], client);\n\n const addedSetting = await client.addConfigurationSetting({ key, value: \"Initial value\" });\n\n // now our application only wants to download the setting if it's changed\n console.log(\"Checking to see if the value has changed using the etag and ifNoneMatch\");\n\n const unchangedResponse = await client.getConfigurationSetting(addedSetting, {\n // onlyIfChanged allows us to say \"get me the value only if it doesn't match the one I already have\"\n // this allows us to avoid transferring the setting if nothing has changed.\n onlyIfChanged: true,\n });\n\n // we return the response so you can still inspect the returned headers. The body, however, is blank\n console.log(`Received a response code of ${unchangedResponse.statusCode}`); // will be HTTP status 304\n\n // To prevent any accidental usages of this model all properties (except for 'key') are set to undefined.\n if (unchangedResponse.value !== undefined) {\n throw new Error(\"All properties should be undefined\");\n }\n\n await cleanupSampleValues([key], client);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const existingSettings = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of existingSettings) {\n await client.setReadOnly(setting, false);\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -31,20 +31,27 @@ export async function main() {
|
|
|
31
31
|
await cleanupSampleValues([greetingKey], client);
|
|
32
32
|
}
|
|
33
33
|
async function cleanupSampleValues(keys, client) {
|
|
34
|
-
var e_1,
|
|
34
|
+
var _a, e_1, _b, _c;
|
|
35
35
|
const settingsIterator = client.listConfigurationSettings({
|
|
36
36
|
keyFilter: keys.join(","),
|
|
37
37
|
});
|
|
38
38
|
try {
|
|
39
|
-
for (var settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(),
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
for (var _d = true, settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(), _a = settingsIterator_1_1.done, !_a;) {
|
|
40
|
+
_c = settingsIterator_1_1.value;
|
|
41
|
+
_d = false;
|
|
42
|
+
try {
|
|
43
|
+
const setting = _c;
|
|
44
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
_d = true;
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
45
52
|
finally {
|
|
46
53
|
try {
|
|
47
|
-
if (
|
|
54
|
+
if (!_d && !_a && (_b = settingsIterator_1.return)) await _b.call(settingsIterator_1);
|
|
48
55
|
}
|
|
49
56
|
finally { if (e_1) throw e_1.error; }
|
|
50
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helloworld.js","sourceRoot":"","sources":["../../samples-dev/helloworld.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAEvC,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjD,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAElE,kCAAkC;IAClC,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE9E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,oBAAoB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;IAEtE,uBAAuB;IACvB,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,mBAAmB,CAAC,CAAC;IAE/C,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,
|
|
1
|
+
{"version":3,"file":"helloworld.js","sourceRoot":"","sources":["../../samples-dev/helloworld.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAEvC,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjD,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,oBAAoB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAElE,kCAAkC;IAClC,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAE9E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,oBAAoB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;IAEtE,uBAAuB;IACvB,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,mBAAmB,CAAC,CAAC;IAE/C,MAAM,mBAAmB,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,eAAA,qBAAA,cAAA,gBAAgB,CAAA,sBAAA;YAAhB,gCAAgB;YAAhB,WAAgB;;gBAAjC,MAAM,OAAO,KAAA,CAAA;gBACtB,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;SACrF;;;;;;;;;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Demonstrates the CRUD operations on the configuration settings.\n * @azsdk-weight 100\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(`Running helloworld sample`);\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n const greetingKey = \"Samples:Greeting\";\n\n await cleanupSampleValues([greetingKey], client);\n\n // creating a new setting\n console.log(`Adding in new setting ${greetingKey}`);\n await client.addConfigurationSetting({ key: greetingKey, value: \"Hello!\" });\n\n const newSetting = await client.getConfigurationSetting({ key: greetingKey });\n console.log(`${greetingKey} has been set to ${newSetting.value}`);\n\n // changing the value of a setting\n await client.setConfigurationSetting({ key: greetingKey, value: \"Goodbye!\" });\n\n const updatedSetting = await client.getConfigurationSetting({ key: greetingKey });\n console.log(`${greetingKey} has been set to ${updatedSetting.value}`);\n\n // removing the setting\n await client.deleteConfigurationSetting({ key: greetingKey });\n console.log(`${greetingKey} has been deleted`);\n\n await cleanupSampleValues([greetingKey], client);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const settingsIterator = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of settingsIterator) {\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -41,20 +41,27 @@ export async function main() {
|
|
|
41
41
|
await cleanupSampleValues([urlKey], client);
|
|
42
42
|
}
|
|
43
43
|
async function cleanupSampleValues(keys, client) {
|
|
44
|
-
var e_1,
|
|
44
|
+
var _a, e_1, _b, _c;
|
|
45
45
|
const existingSettings = client.listConfigurationSettings({
|
|
46
46
|
keyFilter: keys.join(","),
|
|
47
47
|
});
|
|
48
48
|
try {
|
|
49
|
-
for (var existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(),
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
for (var _d = true, existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(), _a = existingSettings_1_1.done, !_a;) {
|
|
50
|
+
_c = existingSettings_1_1.value;
|
|
51
|
+
_d = false;
|
|
52
|
+
try {
|
|
53
|
+
const setting = _c;
|
|
54
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
_d = true;
|
|
58
|
+
}
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
61
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
55
62
|
finally {
|
|
56
63
|
try {
|
|
57
|
-
if (
|
|
64
|
+
if (!_d && !_a && (_b = existingSettings_1.return)) await _b.call(existingSettings_1);
|
|
58
65
|
}
|
|
59
66
|
finally { if (e_1) throw e_1.error; }
|
|
60
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helloworldWithLabels.js","sourceRoot":"","sources":["../../samples-dev/helloworldWithLabels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,iIAAiI;IACjI,oGAAoG;IACpG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,sBAAsB,CAAC;IAEtC,MAAM,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5C,uFAAuF;IACvF,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,0BAA0B;KAClC,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,qBAAqB;KAC7B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;QAC9D,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3E,MAAM,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,
|
|
1
|
+
{"version":3,"file":"helloworldWithLabels.js","sourceRoot":"","sources":["../../samples-dev/helloworldWithLabels.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,iIAAiI;IACjI,oGAAoG;IACpG,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,sBAAsB,CAAC;IAEtC,MAAM,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5C,uFAAuF;IACvF,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,0BAA0B;KAClC,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,qBAAqB;KAC7B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;QAC9D,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3E,MAAM,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,eAAA,qBAAA,cAAA,gBAAgB,CAAA,sBAAA;YAAhB,gCAAgB;YAAhB,WAAgB;;gBAAjC,MAAM,OAAO,KAAA,CAAA;gBACtB,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;SACrF;;;;;;;;;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary This sample builds on concepts in helloworld.ts and shows you how to use labels.\n * @azsdk-weight 90\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n // Labels allow you to add an extra dimension for your setting and gives you a simple way to create conventions for environments.\n // More info - https://docs.microsoft.com/azure/azure-app-configuration/concept-key-value#label-keys\n console.log(\"Running helloworldWithLabels sample\");\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n const urlKey = \"Samples:Endpoint:Url\";\n\n await cleanupSampleValues([urlKey], client);\n\n // labels allow you to use the same key with different values for separate environments\n // or clients\n console.log(\"Adding in endpoint with two labels - beta and production\");\n await client.addConfigurationSetting({\n key: urlKey,\n label: \"beta\",\n value: \"https://beta.example.com\",\n });\n await client.addConfigurationSetting({\n key: urlKey,\n label: \"production\",\n value: \"https://example.com\",\n });\n\n const betaEndpoint = await client.getConfigurationSetting({ key: urlKey, label: \"beta\" });\n console.log(`Endpoint with beta label: ${betaEndpoint.value}`);\n\n const productionEndpoint = await client.getConfigurationSetting({\n key: urlKey,\n label: \"production\",\n });\n console.log(`Endpoint with production label: ${productionEndpoint.value}`);\n\n await cleanupSampleValues([urlKey], client);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const existingSettings = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of existingSettings) {\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\nmain().catch((error) => {\n console.error(\"Failed to run sample:\", error);\n});\n"]}
|
|
@@ -10,7 +10,7 @@ import { AppConfigurationClient } from "@azure/app-configuration";
|
|
|
10
10
|
import * as dotenv from "dotenv";
|
|
11
11
|
dotenv.config();
|
|
12
12
|
export async function main() {
|
|
13
|
-
var e_1,
|
|
13
|
+
var _a, e_1, _b, _c, _d, e_2, _e, _f;
|
|
14
14
|
console.log(`Running listConfigurationSettings sample`);
|
|
15
15
|
// Set the following environment variable or edit the value on the following line.
|
|
16
16
|
const connectionString = process.env["APPCONFIG_CONNECTION_STRING"] || "<connection string>";
|
|
@@ -36,15 +36,22 @@ export async function main() {
|
|
|
36
36
|
});
|
|
37
37
|
console.log(`Settings matching keyFilter 'sample*'`);
|
|
38
38
|
try {
|
|
39
|
-
for (var sampleKeys_1 = __asyncValues(sampleKeys), sampleKeys_1_1; sampleKeys_1_1 = await sampleKeys_1.next(),
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
for (var _g = true, sampleKeys_1 = __asyncValues(sampleKeys), sampleKeys_1_1; sampleKeys_1_1 = await sampleKeys_1.next(), _a = sampleKeys_1_1.done, !_a;) {
|
|
40
|
+
_c = sampleKeys_1_1.value;
|
|
41
|
+
_g = false;
|
|
42
|
+
try {
|
|
43
|
+
const setting = _c;
|
|
44
|
+
console.log(` Found key: ${setting.key}, label: ${setting.label}`);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
_g = true;
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
45
52
|
finally {
|
|
46
53
|
try {
|
|
47
|
-
if (
|
|
54
|
+
if (!_g && !_a && (_b = sampleKeys_1.return)) await _b.call(sampleKeys_1);
|
|
48
55
|
}
|
|
49
56
|
finally { if (e_1) throw e_1.error; }
|
|
50
57
|
}
|
|
@@ -54,15 +61,22 @@ export async function main() {
|
|
|
54
61
|
});
|
|
55
62
|
console.log(`Settings matching labelFilter 'development*'`);
|
|
56
63
|
try {
|
|
57
|
-
for (var samplesWithDevelopmentLabel_1 = __asyncValues(samplesWithDevelopmentLabel), samplesWithDevelopmentLabel_1_1; samplesWithDevelopmentLabel_1_1 = await samplesWithDevelopmentLabel_1.next(),
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
for (var _h = true, samplesWithDevelopmentLabel_1 = __asyncValues(samplesWithDevelopmentLabel), samplesWithDevelopmentLabel_1_1; samplesWithDevelopmentLabel_1_1 = await samplesWithDevelopmentLabel_1.next(), _d = samplesWithDevelopmentLabel_1_1.done, !_d;) {
|
|
65
|
+
_f = samplesWithDevelopmentLabel_1_1.value;
|
|
66
|
+
_h = false;
|
|
67
|
+
try {
|
|
68
|
+
const setting = _f;
|
|
69
|
+
console.log(` Found key: ${setting.key}, label: ${setting.label}`);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
_h = true;
|
|
73
|
+
}
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
76
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
63
77
|
finally {
|
|
64
78
|
try {
|
|
65
|
-
if (
|
|
79
|
+
if (!_h && !_d && (_e = samplesWithDevelopmentLabel_1.return)) await _e.call(samplesWithDevelopmentLabel_1);
|
|
66
80
|
}
|
|
67
81
|
finally { if (e_2) throw e_2.error; }
|
|
68
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listConfigurationSettings.js","sourceRoot":"","sources":["../../samples-dev/listConfigurationSettings.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;;IACxB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,uBAAuB,CAAC;QACnC,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC;QAClD,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;;QAErD,KAA4B,
|
|
1
|
+
{"version":3,"file":"listConfigurationSettings.js","sourceRoot":"","sources":["../../samples-dev/listConfigurationSettings.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Demonstrates listing multiple configuration settings using a filter for a key or label.\n * @azsdk-weight 50\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(`Running listConfigurationSettings sample`);\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n await client.setConfigurationSetting({\n key: \"sample key\",\n value: \"sample value\",\n label: \"production\",\n });\n\n await client.setConfigurationSetting({\n key: \"sample key\",\n value: \"sample value\",\n label: \"developmentA\",\n });\n\n await client.setConfigurationSetting({\n key: \"key only for development\",\n value: \"value\",\n label: \"developmentB\",\n });\n\n // ex: using a keyFilter\n const sampleKeys = client.listConfigurationSettings({\n keyFilter: \"sample*\",\n });\n\n console.log(`Settings matching keyFilter 'sample*'`);\n\n for await (const setting of sampleKeys) {\n console.log(` Found key: ${setting.key}, label: ${setting.label}`);\n }\n\n // ex: using a labelFilter\n const samplesWithDevelopmentLabel = client.listConfigurationSettings({\n labelFilter: \"development*\",\n });\n\n console.log(`Settings matching labelFilter 'development*'`);\n\n for await (const setting of samplesWithDevelopmentLabel) {\n console.log(` Found key: ${setting.key}, label: ${setting.label}`);\n }\n\n ////////////////////////////////////////////////////////\n /////////////// Example for .byPage() ////////////////\n ////////////////////////////////////////////////////////\n\n // Passing marker as an argument\n let iterator = client.listConfigurationSettings({ keyFilter: \"sample*\" }).byPage();\n let response = await iterator.next();\n if (!response.done) {\n for (const setting of response.value.items) {\n console.log(` Found key: ${setting.key}`);\n }\n }\n // Gets next marker\n let marker = response.value.continuationToken;\n // Passing next marker as continuationToken\n iterator = client.listConfigurationSettings({ keyFilter: \"sample*\" }).byPage({\n continuationToken: marker,\n });\n response = await iterator.next();\n if (response.done) {\n console.log(\"List done.\");\n } else {\n if (response.value.items) {\n for (const setting of response.value.items) {\n console.log(` Found key: ${setting.key}`);\n }\n }\n }\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -10,7 +10,7 @@ import { AppConfigurationClient } from "@azure/app-configuration";
|
|
|
10
10
|
import * as dotenv from "dotenv";
|
|
11
11
|
dotenv.config();
|
|
12
12
|
export async function main() {
|
|
13
|
-
var e_1,
|
|
13
|
+
var _a, e_1, _b, _c;
|
|
14
14
|
console.log(`Running listRevisions sample`);
|
|
15
15
|
// Set the following environment variable or edit the value on the following line.
|
|
16
16
|
const connectionString = process.env["APPCONFIG_CONNECTION_STRING"] || "<connection string>";
|
|
@@ -32,16 +32,23 @@ export async function main() {
|
|
|
32
32
|
});
|
|
33
33
|
try {
|
|
34
34
|
// show all the revisions, including the date they were set.
|
|
35
|
-
for (var revisionsIterator_1 = __asyncValues(revisionsIterator), revisionsIterator_1_1; revisionsIterator_1_1 = await revisionsIterator_1.next(),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
for (var _d = true, revisionsIterator_1 = __asyncValues(revisionsIterator), revisionsIterator_1_1; revisionsIterator_1_1 = await revisionsIterator_1.next(), _a = revisionsIterator_1_1.done, !_a;) {
|
|
36
|
+
_c = revisionsIterator_1_1.value;
|
|
37
|
+
_d = false;
|
|
38
|
+
try {
|
|
39
|
+
const revision = _c;
|
|
40
|
+
// revisions are just a configuration setting at a particular point in time
|
|
41
|
+
console.log(`At ${revision.lastModified}, the value was ${revision.value}`);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
_d = true;
|
|
45
|
+
}
|
|
39
46
|
}
|
|
40
47
|
}
|
|
41
48
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
42
49
|
finally {
|
|
43
50
|
try {
|
|
44
|
-
if (
|
|
51
|
+
if (!_d && !_a && (_b = revisionsIterator_1.return)) await _b.call(revisionsIterator_1);
|
|
45
52
|
}
|
|
46
53
|
finally { if (e_1) throw e_1.error; }
|
|
47
54
|
}
|
|
@@ -81,20 +88,27 @@ export async function main() {
|
|
|
81
88
|
cleanupSampleValues([originalSetting.key], client);
|
|
82
89
|
}
|
|
83
90
|
async function cleanupSampleValues(keys, client) {
|
|
84
|
-
var e_2,
|
|
91
|
+
var _a, e_2, _b, _c;
|
|
85
92
|
const settingsIterator = client.listConfigurationSettings({
|
|
86
93
|
keyFilter: keys.join(","),
|
|
87
94
|
});
|
|
88
95
|
try {
|
|
89
|
-
for (var settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(),
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
for (var _d = true, settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(), _a = settingsIterator_1_1.done, !_a;) {
|
|
97
|
+
_c = settingsIterator_1_1.value;
|
|
98
|
+
_d = false;
|
|
99
|
+
try {
|
|
100
|
+
const setting = _c;
|
|
101
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
_d = true;
|
|
105
|
+
}
|
|
92
106
|
}
|
|
93
107
|
}
|
|
94
108
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
95
109
|
finally {
|
|
96
110
|
try {
|
|
97
|
-
if (
|
|
111
|
+
if (!_d && !_a && (_b = settingsIterator_1.return)) await _b.call(settingsIterator_1);
|
|
98
112
|
}
|
|
99
113
|
finally { if (e_2) throw e_2.error; }
|
|
100
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listRevisions.js","sourceRoot":"","sources":["../../samples-dev/listRevisions.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;;IACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,2BAA2B;IAC3B,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC;QAC3D,GAAG,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE;QACrC,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,qCAAqC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1E,MAAM,UAAU,mCACX,eAAe,KAClB,KAAK,EAAE,cAAc,GACtB,CAAC;IAEF,6DAA6D;IAC7D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1D,uFAAuF;IACvF,cAAc;IACd,MAAM,MAAM,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC;QAC7C,SAAS,EAAE,UAAU,CAAC,GAAG;KAC1B,CAAC,CAAC;;QAEH,4DAA4D;QAC5D,KAA6B,
|
|
1
|
+
{"version":3,"file":"listRevisions.js","sourceRoot":"","sources":["../../samples-dev/listRevisions.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Demonstrates listing revisions for a configuration setting.\n * @azsdk-weight 40\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(`Running listRevisions sample`);\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n // let's create the setting\n const originalSetting = await client.addConfigurationSetting({\n key: `keyWithRevisions-${Date.now()}`,\n value: \"original value\",\n });\n\n console.log(`First revision created with value ${originalSetting.value}`);\n\n const newSetting = {\n ...originalSetting,\n value: \"A new value!\",\n };\n\n // delay for a second to make the timestamps more interesting\n await new Promise((resolve) => setTimeout(resolve, 1000));\n\n // now we'll update it - this leaves us with two revisions (the previous 'original' and\n // our update)\n await client.setConfigurationSetting(newSetting);\n\n const revisionsIterator = client.listRevisions({\n keyFilter: newSetting.key,\n });\n\n // show all the revisions, including the date they were set.\n for await (const revision of revisionsIterator) {\n // revisions are just a configuration setting at a particular point in time\n console.log(`At ${revision.lastModified}, the value was ${revision.value}`);\n }\n\n ////////////////////////////////////////////////////////\n /////////////// Example for .byPage() ////////////////\n ////////////////////////////////////////////////////////\n\n // If you want to see the pagination\n // for (let index = 0; index < 135; index++) {\n // await client.setConfigurationSetting({ ...originalSetting, value: `new value = ${index}` });\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n // }\n\n // Passing marker as an argument\n let iterator = client.listRevisions({ keyFilter: \"keyWithRevisions-1626819906487\" }).byPage();\n let response = await iterator.next();\n if (!response.done) {\n for (const revision of response.value.items) {\n console.log(` Found key: ${revision.key}, ${revision.value} === ${revision.lastModified}`);\n }\n }\n // Gets next marker\n let marker = response.value.continuationToken;\n // Passing next marker as continuationToken\n iterator = client.listRevisions({ keyFilter: \"keyWithRevisions-1626819906487\" }).byPage({\n continuationToken: marker,\n });\n response = await iterator.next();\n if (response.done) {\n console.log(\"List done.\");\n } else {\n if (response.value.items) {\n for (const revision of response.value.items) {\n console.log(` Found key: ${revision.key}, ${revision.value} === ${revision.lastModified}`);\n }\n }\n }\n\n cleanupSampleValues([originalSetting.key], client);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const settingsIterator = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of settingsIterator) {\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -82,21 +82,28 @@ export async function main() {
|
|
|
82
82
|
await cleanupSampleValues([key], client);
|
|
83
83
|
}
|
|
84
84
|
async function cleanupSampleValues(keys, client) {
|
|
85
|
-
var e_1,
|
|
85
|
+
var _a, e_1, _b, _c;
|
|
86
86
|
const existingSettings = client.listConfigurationSettings({
|
|
87
87
|
keyFilter: keys.join(","),
|
|
88
88
|
});
|
|
89
89
|
try {
|
|
90
|
-
for (var existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(),
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
for (var _d = true, existingSettings_1 = __asyncValues(existingSettings), existingSettings_1_1; existingSettings_1_1 = await existingSettings_1.next(), _a = existingSettings_1_1.done, !_a;) {
|
|
91
|
+
_c = existingSettings_1_1.value;
|
|
92
|
+
_d = false;
|
|
93
|
+
try {
|
|
94
|
+
const setting = _c;
|
|
95
|
+
await client.setReadOnly(setting, false);
|
|
96
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
_d = true;
|
|
100
|
+
}
|
|
94
101
|
}
|
|
95
102
|
}
|
|
96
103
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
97
104
|
finally {
|
|
98
105
|
try {
|
|
99
|
-
if (
|
|
106
|
+
if (!_d && !_a && (_b = existingSettings_1.return)) await _b.call(existingSettings_1);
|
|
100
107
|
}
|
|
101
108
|
finally { if (e_1) throw e_1.error; }
|
|
102
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimisticConcurrencyViaEtag.js","sourceRoot":"","sources":["../../samples-dev/optimisticConcurrencyViaEtag.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"optimisticConcurrencyViaEtag.js","sourceRoot":"","sources":["../../samples-dev/optimisticConcurrencyViaEtag.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;AAElC;;;GAGG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,kCAAkC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAErD,kFAAkF;IAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,qBAAqB,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,MAAM,GAAG,GAAG,gCAAgC,CAAC;IAC7C,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAElD,oFAAoF;IACpF,EAAE;IACF,wFAAwF;IACxF,8EAA8E;IAC9E,EAAE;IACF,yEAAyE;IAEzE,yDAAyD;IACzD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAE/C,qGAAqG;IACrG,IAAI,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAEtE,2EAA2E;IAC3E,IAAI,WAAW,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAErE,OAAO,CAAC,GAAG,CAAC,4CAA4C,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,2CAA2C,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3E,uEAAuE;IACvE,mEAAmE;IAEnE,+CAA+C;IAC/C,WAAW,CAAC,KAAK,GAAG,4BAA4B,CAAC;IACjD,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,WAAW,EAAE;QAC3E,qGAAqG;QACrG,yEAAyE;QACzE,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,2DAA2D,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;IAElG,uEAAuE;IACvE,wEAAwE;IACxE,OAAO,CAAC,GAAG,CACT,sFAAsF,CACvF,CAAC;IAEF,IAAI;QACF,YAAY,CAAC,KAAK,GAAG,uDAAuD,CAAC;QAC7E,MAAM,MAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE;YACjD,yEAAyE;YACzE,sEAAsE;YACtE,8EAA8E;YAC9E,MAAM;YACN,EAAE;YACF,oDAAoD;YACpD,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;KACJ;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;YAC1B,sBAAsB;YACtB,OAAO,CAAC,GAAG,CACT,8FAA8F,CAC/F,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAEzE,iEAAiE;YACjE,8BAA8B;YAC9B,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,4CAA4C,CAAC;YAEzF,OAAO,CAAC,GAAG,CAAC,sDAAsD,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,MAAM,MAAM,CAAC,uBAAuB,CAAC,aAAa,EAAE;gBAClD,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC;SACJ;KACF;IAED,+DAA+D;IAC/D,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,8CAA8C,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhF,IACE,YAAY,CAAC,KAAK,KAAK,sEAAsE,EAC7F;QACA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACrE;IAED,MAAM,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAc,EAAE,MAA8B;;IAC/E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;QACxD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAC1B,CAAC,CAAC;;QAEH,KAA4B,eAAA,qBAAA,cAAA,gBAAgB,CAAA,sBAAA;YAAhB,gCAAgB;YAAhB,WAAgB;;gBAAjC,MAAM,OAAO,KAAA,CAAA;gBACtB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;;;;;SACrF;;;;;;;;;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @summary Demonstrates implementing optimistic concurrency using App Configuration and etags.\n * @azsdk-weight 80\n */\nimport { AppConfigurationClient } from \"@azure/app-configuration\";\n\n// Load the .env file if it exists\nimport * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport async function main() {\n console.log(\"Running optimistic concurrency sample\");\n\n // Set the following environment variable or edit the value on the following line.\n const connectionString = process.env[\"APPCONFIG_CONNECTION_STRING\"] || \"<connection string>\";\n const client = new AppConfigurationClient(connectionString);\n\n const key = \"optimisticConcurrencySampleKey\";\n await cleanupSampleValues([key], client);\n\n console.log(\"Creating a new key\");\n const setting = await client.addConfigurationSetting({ key: key, value: \"Initial value\" });\n console.log(`Etag for ${key} is ${setting.etag}`);\n\n // Each setting (on update or add) gets a unique identifier, via the .etag property.\n //\n // This etag can be passed to the server when retrieving or updating settings to prevent\n // race conditions where two independent updaters keep overwriting each other.\n //\n // https://en.wikipedia.org/wiki/Optimistic_concurrency_control#Web_usage\n\n // let's simulate this with two updaters - Alpha and Beta\n console.log(\"Starting Alpha and Beta updates\");\n\n // Alpha is preparing to do an update - to do this properly they retrieve the setting from the server\n let alphaSetting = await client.getConfigurationSetting({ key: key });\n\n // Beta would also like to do an update and will do the same thing as Alpha\n let betaSetting = await client.getConfigurationSetting({ key: key });\n\n console.log(`Alpha retrieves the setting and has etag ${alphaSetting.etag}`);\n console.log(`Beta retrieves the setting and has etag ${betaSetting.etag}`);\n\n // Since both of Alpha and Beta will attempt to update at the same time\n // they'll have to coordinate this. This is when they use the etag.\n\n // For our example we'll have Beta update first\n betaSetting.value = \"Beta has updated the value\";\n const betaUpdatedSetting = await client.setConfigurationSetting(betaSetting, {\n // onlyIfUnchanged allows Beta to say \"only update the setting if the _current_ etag matches my etag\"\n // which is true for Beta since nobody has modified it since Beta got it.\n onlyIfUnchanged: true,\n });\n\n console.log(`Beta has updated the setting. The setting's etag is now ${betaUpdatedSetting.etag}`);\n\n // now Alpha is going to attempt to update it - note that at this point\n // the setting has been updated (by Beta) and so our etag will not match\n console.log(\n \"Alpha is unaware of Beta's update and will now attempt to update the setting as well\"\n );\n\n try {\n alphaSetting.value = \"Alpha is attempting to update the value but will fail\";\n await client.setConfigurationSetting(alphaSetting, {\n // in this case Alpha's etag is out of date - there's no way to update it\n // without retrieving the setting again. This allows Alpha a chance to\n // potentially incorporate Beta's update into their own _or_ to just overwrite\n // it.\n //\n // the 'catch' below will now incorporate the update\n onlyIfUnchanged: true,\n });\n } catch (err: any) {\n if (err.statusCode === 412) {\n // precondition failed\n console.log(\n `Alpha's update failed because the etag has changed. Alpha will now need to update and merge.`\n );\n\n console.log(\"Alpha gets the newly updated value and is merging in their changes.\");\n const actualSetting = await client.getConfigurationSetting({ key: key });\n\n // the setting has changed - Alpha chooses to merge their changes\n // rather than overwriting it.\n actualSetting.value = actualSetting.value + \" and Alpha has updated the setting as well\";\n\n console.log(`Alpha is setting the value again with the new etag ${actualSetting.etag}`);\n await client.setConfigurationSetting(actualSetting, {\n onlyIfUnchanged: true,\n });\n }\n }\n\n // and now that the dust has settled the value has been updated\n const finalSetting = await client.getConfigurationSetting({ key: key });\n console.log(`Final value with Alpha and Beta's updates: ${finalSetting.value}`);\n\n if (\n finalSetting.value !== \"Beta has updated the value and Alpha has updated the setting as well\"\n ) {\n throw new Error(\"SAMPLE FAILURE: Setting was not properly updated\");\n }\n\n await cleanupSampleValues([key], client);\n}\n\nasync function cleanupSampleValues(keys: string[], client: AppConfigurationClient) {\n const existingSettings = client.listConfigurationSettings({\n keyFilter: keys.join(\",\"),\n });\n\n for await (const setting of existingSettings) {\n await client.setReadOnly(setting, false);\n await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });\n }\n}\n\nmain().catch((err) => {\n console.error(\"Failed to run sample:\", err);\n process.exit(1);\n});\n"]}
|
|
@@ -89,20 +89,27 @@ async function createConfigSetting(key, secretId) {
|
|
|
89
89
|
await appConfigClient.addConfigurationSetting(secretReference);
|
|
90
90
|
}
|
|
91
91
|
async function cleanupSampleValues(keys, client) {
|
|
92
|
-
var e_1,
|
|
92
|
+
var _a, e_1, _b, _c;
|
|
93
93
|
const settingsIterator = client.listConfigurationSettings({
|
|
94
94
|
keyFilter: keys.join(","),
|
|
95
95
|
});
|
|
96
96
|
try {
|
|
97
|
-
for (var settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(),
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
for (var _d = true, settingsIterator_1 = __asyncValues(settingsIterator), settingsIterator_1_1; settingsIterator_1_1 = await settingsIterator_1.next(), _a = settingsIterator_1_1.done, !_a;) {
|
|
98
|
+
_c = settingsIterator_1_1.value;
|
|
99
|
+
_d = false;
|
|
100
|
+
try {
|
|
101
|
+
const setting = _c;
|
|
102
|
+
await client.deleteConfigurationSetting({ key: setting.key, label: setting.label });
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
_d = true;
|
|
106
|
+
}
|
|
100
107
|
}
|
|
101
108
|
}
|
|
102
109
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
103
110
|
finally {
|
|
104
111
|
try {
|
|
105
|
-
if (
|
|
112
|
+
if (!_d && !_a && (_b = settingsIterator_1.return)) await _b.call(settingsIterator_1);
|
|
106
113
|
}
|
|
107
114
|
finally { if (e_1) throw e_1.error; }
|
|
108
115
|
}
|