Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
217 changes: 119 additions & 98 deletions common/config/rush/pnpm-lock.yaml

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions rush.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* This is the main configuration file for Rush.
* For full documentation, please see https://rushjs.io
*/ {
*/{
"$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.json",
/**
* (Required) This specifies the version of the Rush engine to be used in this repo.
Expand Down Expand Up @@ -1695,6 +1695,11 @@
"packageName": "@azure/arm-servicelinker",
"projectFolder": "sdk/servicelinker/arm-servicelinker",
"versionPolicyName": "management"
},
{
"packageName": "@azure/arm-changes",
"projectFolder": "sdk/changes/arm-changes",
"versionPolicyName": "management"
}
]
}
}
11 changes: 0 additions & 11 deletions sdk/features/arm-features/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ Azure Feature Exposure Control (AFEC) provides a mechanism for the resource prov
- [LTS versions of Node.js](https://nodejs.org/about/releases/)
- Latest versions of Safari, Chrome, Edge and Firefox.

See our [support policy](https://github.com/Azure/azure-sdk-for-js/blob/main/SUPPORT.md) for more details.

### Prerequisites

- An [Azure subscription][azure_sub].
Expand Down Expand Up @@ -51,17 +49,8 @@ For more information about how to create an Azure AD Application check out [this
```javascript
const { FeatureClient } = require("@azure/arm-features");
const { DefaultAzureCredential } = require("@azure/identity");
// For client-side applications running in the browser, use InteractiveBrowserCredential instead of DefaultAzureCredential. See https://aka.ms/azsdk/js/identity/examples for more details.

const subscriptionId = "00000000-0000-0000-0000-000000000000";
const client = new FeatureClient(new DefaultAzureCredential(), subscriptionId);

// For client-side applications running in the browser, use this code instead:
// const credential = new InteractiveBrowserCredential({
// tenantId: "<YOUR_TENANT_ID>",
// clientId: "<YOUR_CLIENT_ID>"
// });
// const client = new FeatureClient(credential, subscriptionId);
```


Expand Down
10 changes: 5 additions & 5 deletions sdk/features/arm-features/_meta.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"commit": "a42f1b58607091c4f255ead152a8ef323fa0b280",
"readme": "specification\\resources\\resource-manager\\readme.md",
"autorest_command": "autorest --version=3.7.3 --typescript --modelerfour.lenient-model-deduplication --head-as-boolean=true --license-header=MICROSOFT_MIT_NO_VERSION --generate-test --typescript-sdks-folder=D:\\work\\azure-sdk-for-js ..\\azure-rest-api-specs\\specification\\resources\\resource-manager\\readme.md --use=@autorest/[email protected].19.20220408.1 --generate-sample=true",
"commit": "d8ea7da67c4e0f3c004662afda82f79abc881f57",
"readme": "specification/resources/resource-manager/readme.md",
"autorest_command": "autorest --version=3.7.3 --typescript --modelerfour.lenient-model-deduplication --head-as-boolean=true --license-header=MICROSOFT_MIT_NO_VERSION --generate-test --typescript-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-js ../azure-rest-api-specs/specification/resources/resource-manager/readme.md --use=@autorest/[email protected].16.20220105.1",
"repository_url": "https://github.com/Azure/azure-rest-api-specs.git",
"release_tool": "@azure-tools/js-sdk-release-tools@2.2.6",
"use": "@autorest/[email protected].19.20220408.1"
"release_tool": "@azure-tools/js-sdk-release-tools@2.3.0",
"use": "@autorest/[email protected].16.20220105.1"
}
40 changes: 12 additions & 28 deletions sdk/features/arm-features/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
"sdk-type": "mgmt",
"author": "Microsoft Corporation",
"description": "A generated SDK for FeatureClient.",
"version": "3.0.1",
"version": "3.0.2",
"engines": {
"node": ">=12.0.0"
},
"dependencies": {
"@azure/core-paging": "^1.2.0",
"@azure/core-client": "^1.5.0",
"@azure/core-client": "^1.0.0",
"@azure/core-auth": "^1.3.0",
"@azure/core-rest-pipeline": "^1.8.0",
"@azure/core-rest-pipeline": "^1.1.0",
"tslib": "^2.2.0"
},
"keywords": [
Expand All @@ -26,14 +26,14 @@
"module": "./dist-esm/src/index.js",
"types": "./types/arm-features.d.ts",
"devDependencies": {
"@microsoft/api-extractor": "7.18.11",
"@rollup/plugin-commonjs": "^21.0.1",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-multi-entry": "^4.1.0",
"@rollup/plugin-node-resolve": "^13.1.3",
"@microsoft/api-extractor": "^7.18.11",
"@rollup/plugin-commonjs": "11.0.2",
"@rollup/plugin-json": "^4.0.0",
"@rollup/plugin-multi-entry": "^3.0.0",
"@rollup/plugin-node-resolve": "^8.0.0",
"mkdirp": "^1.0.4",
"rollup": "^2.66.1",
"rollup-plugin-sourcemaps": "^0.6.3",
"rollup": "^1.16.3",
"rollup-plugin-sourcemaps": "^0.4.2",
"typescript": "~4.2.0",
"uglify-js": "^3.4.9",
"rimraf": "^3.0.0",
Expand Down Expand Up @@ -96,21 +96,5 @@
"docs": "echo skipped"
},
"sideEffects": false,
"//metadata": {
"constantPaths": [
{
"path": "src/featureClient.ts",
"prefix": "packageDetails"
}
]
},
"autoPublish": true,
"//sampleConfiguration": {
"productName": "",
"productSlugs": [
"azure"
],
"disableDocsMs": true,
"apiRefLink": "https://docs.microsoft.com/javascript/api/@azure/arm-features?view=azure-node-preview"
}
}
"autoPublish": true
}
78 changes: 72 additions & 6 deletions sdk/features/arm-features/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,62 @@ import json from "@rollup/plugin-json";

import nodeBuiltins from "builtin-modules";

/**
* Gets the proper configuration needed for rollup's commonJS plugin for @opentelemetry/api.
*
* NOTE: this manual configuration is only needed because OpenTelemetry uses an
* __exportStar downleveled helper function to declare its exports which confuses
* rollup's automatic discovery mechanism.
*
* @returns an object reference that can be `...`'d into your cjs() configuration.
*/
export function openTelemetryCommonJs() {
const namedExports = {};

for (const key of [
"@opentelemetry/api",
"@azure/core-tracing/node_modules/@opentelemetry/api"
]) {
namedExports[key] = [
"SpanKind",
"TraceFlags",
"getSpan",
"setSpan",
"SpanStatusCode",
"getSpanContext",
"setSpanContext"
];
}

const releasedOpenTelemetryVersions = ["0.10.2", "1.0.0-rc.0"];

for (const version of releasedOpenTelemetryVersions) {
namedExports[
// working around a limitation in the rollup common.js plugin - it's not able to resolve these modules so the named exports listed above will not get applied. We have to drill down to the actual path.
`../../../common/temp/node_modules/.pnpm/@opentelemetry/api@${version}/node_modules/@opentelemetry/api/build/src/index.js`
] = [
"SpanKind",
"TraceFlags",
"getSpan",
"setSpan",
"StatusCode",
"CanonicalCode",
"getSpanContext",
"setSpanContext"
];
}

return namedExports;
}

// #region Warning Handler

/**
* A function that can determine whether a rollup warning should be ignored. If
* A function that can determine whether a rollupwarning should be ignored. If
* the function returns `true`, then the warning will not be displayed.
*/

function ignoreNiseSinonEval(warning) {
function ignoreNiseSinonEvalWarnings(warning) {
return (
warning.code === "EVAL" &&
warning.id &&
Expand All @@ -30,14 +78,17 @@ function ignoreNiseSinonEval(warning) {
);
}

function ignoreChaiCircularDependency(warning) {
function ignoreChaiCircularDependencyWarnings(warning) {
return (
warning.code === "CIRCULAR_DEPENDENCY" &&
warning.importer && warning.importer.includes("node_modules/chai") === true
);
}

const warningInhibitors = [ignoreChaiCircularDependency, ignoreNiseSinonEval];
const warningInhibitors = [
ignoreChaiCircularDependencyWarnings,
ignoreNiseSinonEvalWarnings
];

/**
* Construct a warning handler for the shared rollup configuration
Expand Down Expand Up @@ -71,7 +122,22 @@ function makeBrowserTestConfig() {
nodeResolve({
mainFields: ["module", "browser"]
}),
cjs(),
cjs({
namedExports: {
// Chai's strange internal architecture makes it impossible to statically
// analyze its exports.
chai: [
"version",
"use",
"util",
"config",
"expect",
"should",
"assert"
],
...openTelemetryCommonJs()
}
}),
json(),
sourcemaps()
//viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
Expand Down Expand Up @@ -107,7 +173,7 @@ export function makeConfig(pkg, options) {
],
output: { file: "dist/index.js", format: "cjs", sourcemap: true },
preserveSymlinks: false,
plugins: [sourcemaps(), nodeResolve()]
plugins: [sourcemaps(), nodeResolve(), cjs()]
};

const config = [baseConfig];
Expand Down
29 changes: 2 additions & 27 deletions sdk/features/arm-features/src/featureClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
*/

import * as coreClient from "@azure/core-client";
import * as coreRestPipeline from "@azure/core-rest-pipeline";
import * as coreAuth from "@azure/core-auth";
import { PagedAsyncIterableIterator } from "@azure/core-paging";
import {
Expand Down Expand Up @@ -62,7 +61,7 @@ export class FeatureClient extends coreClient.ServiceClient {
credential: credentials
};

const packageDetails = `azsdk-js-arm-features/3.0.1`;
const packageDetails = `azsdk-js-arm-features/3.0.2`;
const userAgentPrefix =
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
Expand All @@ -77,33 +76,9 @@ export class FeatureClient extends coreClient.ServiceClient {
userAgentOptions: {
userAgentPrefix
},
baseUri:
options.endpoint ?? options.baseUri ?? "https://management.azure.com"
baseUri: options.endpoint || "https://management.azure.com"
};
super(optionsWithDefaults);

if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {
const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();
const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(
(pipelinePolicy) =>
pipelinePolicy.name ===
coreRestPipeline.bearerTokenAuthenticationPolicyName
);
if (!bearerTokenAuthenticationPolicyFound) {
this.pipeline.removePolicy({
name: coreRestPipeline.bearerTokenAuthenticationPolicyName
});
this.pipeline.addPolicy(
coreRestPipeline.bearerTokenAuthenticationPolicy({
scopes: `${optionsWithDefaults.baseUri}/.default`,
challengeCallbacks: {
authorizeRequestOnChallenge:
coreClient.authorizeRequestOnClaimChallenge
}
})
);
}
}
// Parameter assignments
this.subscriptionId = subscriptionId;

Expand Down
52 changes: 4 additions & 48 deletions sdk/features/arm-features/test/sampleTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,9 @@ import {
env,
record,
RecorderEnvironmentSetup,
Recorder,
delay,
isPlaybackMode
Recorder
} from "@azure-tools/test-recorder";
import * as assert from "assert";
import { ClientSecretCredential } from "@azure/identity";
import { FeatureClient } from "../src/featureClient";

const recorderEnvSetup: RecorderEnvironmentSetup = {
replaceableVariables: {
Expand All @@ -35,58 +31,18 @@ const recorderEnvSetup: RecorderEnvironmentSetup = {
queryParametersToSkip: []
};

export const testPollingOptions = {
updateIntervalInMs: isPlaybackMode() ? 0 : undefined,
};

describe("Features test", () => {
describe("My test", () => {
let recorder: Recorder;
let subscriptionId: string;
let client: FeatureClient;
let location: string;
let resourceGroup: string;

beforeEach(async function() {
recorder = record(this, recorderEnvSetup);
subscriptionId = env.SUBSCRIPTION_ID;
// This is an example of how the environment variables are used
const credential = new ClientSecretCredential(
env.AZURE_TENANT_ID,
env.AZURE_CLIENT_ID,
env.AZURE_CLIENT_SECRET
);
client = new FeatureClient(credential, subscriptionId);
location = "eastus";
resourceGroup = "myjstest";
});

afterEach(async function() {
await recorder.stop();
});

it("features listall test", async function() {
const arrayList = [];
for await (const item of client.features.listAll()) {
arrayList.push(item);
}
assert.notEqual(arrayList.length,0);
});

it("features list test", async function() {
const arrayList = [];
for await (const item of client.features.list("Microsoft.Compute")) {
arrayList.push(item);
}
assert.notEqual(arrayList.length,0);
});

it("features get test", async function() {
const arrayList = new Array();
for await (const item of client.features.list("Microsoft.Compute")) {
arrayList.push(item);
}
const featureName = arrayList[0].name.split("/")[1];
const feature = await client.features.get("Microsoft.Compute", featureName);
assert.equal(feature.name,"Microsoft.Compute/"+featureName);
it("sample test", async function() {
console.log("Hi, I'm a test!");
});
});
11 changes: 2 additions & 9 deletions sdk/features/arm-features/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,12 @@
],
"declaration": true,
"outDir": "./dist-esm",
"importHelpers": true,
"paths": {
"@azure/arm-features": [
"./src/index"
]
}
"importHelpers": true
},
"include": [
"./src/**/*.ts",
"./test/**/*.ts",
"samples-dev/**/*.ts",
"./test/**/*.ts",
"samples-dev/**/*.ts"
"./test/**/*.ts"
],
"exclude": [
"node_modules"
Expand Down