├── .azure-pipelines └── ci-build-production.yml ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── 01-sdk-bug.yml │ ├── 02-sdk-feature-request.yml │ ├── 03-blank-issue.md │ └── config.yml ├── dependabot.yml ├── policies │ ├── msgraph-typescript-typings-branch-protection.yml │ └── resourceManagement.yml └── workflows │ ├── auto-merge-dependabot.yml │ ├── codeql.yml │ └── project-auto-add.yml ├── .gitignore ├── .npmignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README-Localized ├── README-es-es.md ├── README-fr-fr.md ├── README-ja-jp.md ├── README-pt-br.md ├── README-ru-ru.md └── README-zh-cn.md ├── README.md ├── SECURITY.md ├── microsoft-graph.d.ts ├── package-lock.json ├── package.json ├── scripts └── src │ ├── AddGithubUser.ps1 │ ├── CalculateNewProductionVersion.ps1 │ ├── CommitAndPushChangesToGithub.ps1 │ ├── GetLatestCommitSHA.ps1 │ ├── GetPackageVersion.ps1 │ ├── HasNewCommitsAfterLastRelease.ps1 │ └── RemoveGithubUser.ps1 ├── spec ├── groups.ts ├── testHelpers.ts └── users.ts ├── tsconfig.json ├── typings-demo.gif └── typings.json /.azure-pipelines/ci-build-production.yml: -------------------------------------------------------------------------------- 1 | # This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool. 2 | # Please make sure to check all the converted content, it is your team's responsibility to make sure that the pipeline is still valid and functions as expected. 3 | # This pipeline will be extended to the OneESPT template 4 | # The pool section has been filled with placeholder values, replace the pool section with your hosted pool, os, and image name. If you are using a Linux image, you must specify an additional windows image for SDL: https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/1es-pipeline-templates/features/sdlanalysis/overview#how-to-specify-a-windows-pool-for-the-sdl-source-analysis-stage 5 | name: $(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r) 6 | trigger: 7 | branches: 8 | include: 9 | - main 10 | paths: 11 | include: 12 | - microsoft-graph.d.ts 13 | pr: none 14 | resources: 15 | repositories: 16 | - repository: 1ESPipelineTemplates 17 | type: git 18 | name: 1ESPipelineTemplates/1ESPipelineTemplates 19 | ref: refs/tags/release 20 | extends: 21 | template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates 22 | parameters: 23 | pool: 24 | name: Azure-Pipelines-1ESPT-ExDShared 25 | image: windows-latest 26 | os: windows 27 | customBuildTags: 28 | - ES365AIMigrationTooling 29 | stages: 30 | - stage: build 31 | jobs: 32 | - job: job 33 | templateContext: 34 | outputs: 35 | - output: pipelineArtifact 36 | displayName: 'Publish Artifact drop' 37 | targetPath: '$(Build.ArtifactStagingDirectory)' 38 | artifactName: build-drop 39 | steps: 40 | - checkout: self 41 | displayName: checkout main 42 | - task: CopyFiles@2 43 | displayName: 'Copy Files to staging directory' 44 | inputs: 45 | SourceFolder: '$(System.DefaultWorkingDirectory)' 46 | Contents: | 47 | **/* 48 | !spec/** 49 | !.azure-pipelines/** 50 | !.github/** 51 | !.git/** 52 | !.vscode/** 53 | !typings-demo.gif 54 | TargetFolder: '$(Build.ArtifactStagingDirectory)' 55 | 56 | 57 | - stage: deploy 58 | condition: and(contains(variables['build.sourceBranch'], 'refs/heads/main'), succeeded()) 59 | jobs: 60 | - deployment: deploy_npm 61 | pool: 62 | name: Azure-Pipelines-1ESPT-ExDShared 63 | os: windows 64 | image: windows-latest 65 | dependsOn: [] 66 | environment: msgraph-npm-org 67 | strategy: 68 | runOnce: 69 | deploy: 70 | steps: 71 | - download: current 72 | artifact: build-drop 73 | - task: EsrpRelease@5 74 | inputs: 75 | ConnectedServiceName: 'MsGraph-ESRP-Publisher-Service-Connection' 76 | Intent: 'PackageDistribution' 77 | ContentType: 'npm' 78 | ContentSource: 'Folder' 79 | FolderLocation: $(Pipeline.Workspace)/build-drop/ 80 | WaitForReleaseCompletion: true 81 | Owners: '3PMSGraphDevxTeam@microsoft.com' 82 | Approvers: 'anomondi@microsoft.com,ronaldkudoyi@microsoft.com,pgichuhi@microsoft.com,shemogumbe@microsoft.com' 83 | ServiceEndpointUrl: 'https://api.esrp.microsoft.com' 84 | MainPublisher: 'ESRPRELPACMAN' 85 | DomainTenantId: 'cdc5aeea-15c5-4db6-b079-fcadd2505dc2' -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @microsoftgraph/msgraph-devx-typescript-write 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/01-sdk-bug.yml: -------------------------------------------------------------------------------- 1 | name: SDK Bug Report 2 | description: File SDK bug report 3 | labels: ["type:bug", "status:waiting-for-triage"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | **Thank you for taking the time to fill out this bug report!** 9 | 💥Before submitting a new request, please search existing issues to see if an issue already exists. 10 | - type: textarea 11 | id: description 12 | attributes: 13 | label: Describe the bug 14 | description: | 15 | Provide a description of the actual behavior observed. If applicable please include any error messages, exception stacktraces or a screenshot. 16 | placeholder: I am trying to do [...] but [...] 17 | validations: 18 | required: true 19 | - type: textarea 20 | id: expected-behavior 21 | attributes: 22 | label: Expected behavior 23 | description: | 24 | A clear and concise description of what you expected to happen. 25 | placeholder: Expected behavior 26 | validations: 27 | required: true 28 | - type: textarea 29 | id: repro-steps 30 | attributes: 31 | label: How to reproduce 32 | description: | 33 | Please include minimal steps to reproduce the problem if possible. E.g.: the smallest possible code snippet; or steps to run project in link above. If possible include text as text rather than screenshots (so it shows up in searches). 34 | If there's a link to a public repo where the sample code exists, include it too. 35 | placeholder: Minimal Reproduction steps 36 | validations: 37 | required: true 38 | - type: input 39 | attributes: 40 | label: SDK Version 41 | placeholder: e.g. 5.32.1 42 | description: Version of the SDK with the bug described above. 43 | validations: 44 | required: false 45 | - type: input 46 | id: regression 47 | attributes: 48 | label: Latest version known to work for scenario above? 49 | description: | 50 | Did this work in a previous build or release of the SDK or API client? If you can try a previous release or build to find out, that can help us narrow down the problem. If you don't know, that's OK. 51 | placeholder: version-number 52 | validations: 53 | required: false 54 | - type: textarea 55 | id: known-workarounds 56 | attributes: 57 | label: Known Workarounds 58 | description: | 59 | Please provide a description of any known workarounds. 60 | placeholder: Known Workarounds 61 | validations: 62 | required: false 63 | - type: textarea 64 | id: logs 65 | attributes: 66 | label: Debug output 67 | description: Please copy and paste the debug output below. 68 | value: | 69 |
Click to expand log 70 | ``` 71 | 72 | 73 | 74 | ``` 75 |
76 | validations: 77 | required: false 78 | - type: textarea 79 | id: configuration 80 | attributes: 81 | label: Configuration 82 | description: | 83 | Please provide more information on your SDK configuration: 84 | * What OS and version, and what distro if applicable (Windows 10, Windows 11, MacOS Catalina, Ubuntu 22.04)? 85 | * What is the architecture (x64, x86, ARM, ARM64)? 86 | * Do you know whether it is specific to that configuration? 87 | placeholder: | 88 | - OS: 89 | - architecture: 90 | validations: 91 | required: false 92 | - type: textarea 93 | id: other-info 94 | attributes: 95 | label: Other information 96 | description: | 97 | If you have an idea where the problem might lie, let us know that here. Please include any pointers to code, relevant changes, or related issues you know of. 98 | placeholder: Other information 99 | validations: 100 | required: false 101 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/02-sdk-feature-request.yml: -------------------------------------------------------------------------------- 1 | name: SDK Feature request 2 | description: Request a new feature on the SDK 3 | labels: ["type:feature", "status:waiting-for-triage"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | **Thank you for taking the time to fill out this feature request form!** 9 | 💥Please search to see if an issue already exists for the feature you are requesting. 10 | - type: textarea 11 | attributes: 12 | label: Is your feature request related to a problem? Please describe the problem. 13 | description: A clear and concise description of what the problem is. 14 | placeholder: I am trying to do [...] but [...] 15 | validations: 16 | required: false 17 | - type: textarea 18 | attributes: 19 | label: Describe the solution you'd like. 20 | description: | 21 | A clear and concise description of what you want to happen. Include any alternative solutions you've considered. 22 | validations: 23 | required: true 24 | - type: textarea 25 | attributes: 26 | label: Additional context? 27 | description: | 28 | Add any other context or screenshots about the feature request here. 29 | validations: 30 | required: false 31 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/03-blank-issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Blank issue 3 | about: Something that doesn't fit the other categories 4 | title: '' 5 | labels: ["status:waiting-for-triage"] 6 | assignees: '' 7 | 8 | --- 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Question on use of graph sdk 4 | url: https://github.com/microsoftgraph/msgraph-typescript-typings/discussions 5 | about: Please add your question in the discussions section of the repo 6 | - name: Question on use of kiota 7 | url: https://github.com/microsoft/kiota/discussions 8 | about: Please add your question in the discussions section of the repo 9 | - name: Question or Feature Request for the MS Graph API? 10 | url: https://aka.ms/msgraphsupport 11 | about: Report an issue or limitation with the MS Graph service APIs 12 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | open-pull-requests-limit: 10 8 | - package-ecosystem: npm 9 | directory: "/" 10 | schedule: 11 | interval: daily 12 | open-pull-requests-limit: 10 13 | -------------------------------------------------------------------------------- /.github/policies/msgraph-typescript-typings-branch-protection.yml: -------------------------------------------------------------------------------- 1 | # Copyright (c) Microsoft Corporation. 2 | # Licensed under the MIT License. 3 | 4 | # File initially created using https://github.com/MIchaelMainer/policyservicetoolkit/blob/main/branch_protection_export.ps1. 5 | 6 | name: msgraph-typescript-typings-branch-protection 7 | description: Branch protection policy for the msgraph-typescript-typings repository 8 | resource: repository 9 | configuration: 10 | branchProtectionRules: 11 | 12 | - branchNamePattern: main 13 | # This branch pattern applies to the following branches as of 06/12/2023 14:45:32: 14 | # main 15 | 16 | # Specifies whether this branch can be deleted. boolean 17 | allowsDeletions: false 18 | # Specifies whether forced pushes are allowed on this branch. boolean 19 | allowsForcePushes: false 20 | # Specifies whether new commits pushed to the matching branches dismiss pull request review approvals. boolean 21 | dismissStaleReviews: true 22 | # Specifies whether admins can overwrite branch protection. boolean 23 | isAdminEnforced: false 24 | # Indicates whether "Require a pull request before merging" is enabled. boolean 25 | requiresPullRequestBeforeMerging: true 26 | # Specifies the number of pull request reviews before merging. int (0-6). Should be null/empty if PRs are not required 27 | requiredApprovingReviewsCount: 1 28 | # Require review from Code Owners. Requires requiredApprovingReviewsCount. boolean 29 | requireCodeOwnersReview: true 30 | # Are commits required to be signed. boolean. TODO: all contributors must have commit signing on local machines. 31 | requiresCommitSignatures: false 32 | # Are conversations required to be resolved before merging? boolean 33 | requiresConversationResolution: true 34 | # Are merge commits prohibited from being pushed to this branch. boolean 35 | requiresLinearHistory: false 36 | # Required status checks to pass before merging. Values can be any string, but if the value does not correspond to any existing status check, the status check will be stuck on pending for status since nothing exists to push an actual status 37 | requiredStatusChecks: 38 | - CodeQL 39 | - GitOps/AdvancedSecurity 40 | # Require branches to be up to date before merging. Requires requiredStatusChecks. boolean 41 | requiresStrictStatusChecks: true 42 | # Indicates whether there are restrictions on who can push. boolean. Should be set with whoCanPush. 43 | restrictsPushes: false 44 | # Restrict who can dismiss pull request reviews. boolean 45 | restrictsReviewDismissals: false 46 | 47 | -------------------------------------------------------------------------------- /.github/policies/resourceManagement.yml: -------------------------------------------------------------------------------- 1 | id: 2 | name: GitOps.PullRequestIssueManagement 3 | description: GitOps.PullRequestIssueManagement primitive 4 | owner: 5 | resource: repository 6 | disabled: false 7 | where: 8 | configuration: 9 | resourceManagementConfiguration: 10 | scheduledSearches: [] 11 | eventResponderTasks: 12 | - if: 13 | - payloadType: Issues 14 | - isAction: 15 | action: Closed 16 | - hasLabel: 17 | label: 'status:waiting-for-author-feedback' 18 | then: 19 | - removeLabel: 20 | label: 'status:waiting-for-author-feedback' 21 | description: 22 | - if: 23 | - payloadType: Issue_Comment 24 | - isAction: 25 | action: Created 26 | - isActivitySender: 27 | issueAuthor: True 28 | - hasLabel: 29 | label: 'status:waiting-for-author-feedback' 30 | then: 31 | - addLabel: 32 | label: 'Needs: Attention :wave:' 33 | - removeLabel: 34 | label: 'status:waiting-for-author-feedback' 35 | description: 36 | - if: 37 | - payloadType: Issues 38 | - not: 39 | isAction: 40 | action: Closed 41 | - hasLabel: 42 | label: no-recent-activity 43 | then: 44 | - removeLabel: 45 | label: no-recent-activity 46 | description: 47 | - if: 48 | - payloadType: Issues 49 | - labelAdded: 50 | label: service bug 51 | then: [] 52 | description: 53 | - if: 54 | - payloadType: Issue_Comment 55 | - activitySenderHasAssociation: 56 | association: Contributor 57 | - bodyContains: 58 | pattern: '?' 59 | isRegex: False 60 | - bodyContains: 61 | pattern: '@' 62 | isRegex: False 63 | then: 64 | - addLabel: 65 | label: 'status:waiting-for-author-feedback' 66 | description: 67 | - if: 68 | - payloadType: Issues 69 | - or: 70 | - isAssignedToSomeone 71 | - isAction: 72 | action: Closed 73 | then: 74 | - removeLabel: 75 | label: ToTriage 76 | description: 77 | onFailure: 78 | onSuccess: 79 | -------------------------------------------------------------------------------- /.github/workflows/auto-merge-dependabot.yml: -------------------------------------------------------------------------------- 1 | name: Auto-merge dependabot updates 2 | 3 | on: 4 | pull_request: 5 | branches: [ main ] 6 | 7 | permissions: 8 | pull-requests: write 9 | contents: write 10 | 11 | jobs: 12 | 13 | dependabot-merge: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | if: ${{ github.actor == 'dependabot[bot]' }} 18 | 19 | steps: 20 | - name: Dependabot metadata 21 | id: metadata 22 | uses: dependabot/fetch-metadata@v2.3.0 23 | with: 24 | github-token: "${{ secrets.GITHUB_TOKEN }}" 25 | 26 | - name: Enable auto-merge for Dependabot PRs 27 | # Only if version bump is not a major version change 28 | if: ${{steps.metadata.outputs.update-type != 'version-update:semver-major'}} 29 | run: gh pr merge --auto --merge "$PR_URL" 30 | env: 31 | PR_URL: ${{github.event.pull_request.html_url}} 32 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 33 | -------------------------------------------------------------------------------- /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ "main" ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ "main" ] 20 | schedule: 21 | - cron: '37 21 * * 1' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | # Runner size impacts CodeQL analysis time. To learn more, please see: 27 | # - https://gh.io/recommended-hardware-resources-for-running-codeql 28 | # - https://gh.io/supported-runners-and-hardware-resources 29 | # - https://gh.io/using-larger-runners 30 | # Consider using larger runners for possible analysis time improvements. 31 | runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} 32 | timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} 33 | permissions: 34 | actions: read 35 | contents: read 36 | security-events: write 37 | 38 | strategy: 39 | fail-fast: false 40 | matrix: 41 | language: [ 'javascript' ] 42 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ] 43 | # Use only 'java' to analyze code written in Java, Kotlin or both 44 | # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both 45 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 46 | 47 | steps: 48 | - name: Checkout repository 49 | uses: actions/checkout@v4 50 | 51 | # Initializes the CodeQL tools for scanning. 52 | - name: Initialize CodeQL 53 | uses: github/codeql-action/init@v3 54 | with: 55 | languages: ${{ matrix.language }} 56 | # If you wish to specify custom queries, you can do so here or in a config file. 57 | # By default, queries listed here will override any specified in a config file. 58 | # Prefix the list here with "+" to use these queries and those in the config file. 59 | 60 | # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 61 | # queries: security-extended,security-and-quality 62 | 63 | 64 | # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). 65 | # If this step fails, then you should remove it and run the build manually (see below) 66 | - name: Autobuild 67 | uses: github/codeql-action/autobuild@v3 68 | 69 | # ℹ️ Command-line programs to run using the OS shell. 70 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun 71 | 72 | # If the Autobuild fails above, remove it and uncomment the following three lines. 73 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. 74 | 75 | # - run: | 76 | # echo "Run, Build Application using script" 77 | # ./location_of_script_within_repo/buildscript.sh 78 | 79 | - name: Perform CodeQL Analysis 80 | uses: github/codeql-action/analyze@v3 81 | with: 82 | category: "/language:${{matrix.language}}" 83 | -------------------------------------------------------------------------------- /.github/workflows/project-auto-add.yml: -------------------------------------------------------------------------------- 1 | # This workflow is used to add new issues to GitHub GraphSDKs Project 2 | 3 | name: Add Issue or PR to project 4 | on: 5 | issues: 6 | types: 7 | - opened 8 | pull_request: 9 | types: 10 | - opened 11 | branches: 12 | - "main" 13 | 14 | jobs: 15 | track_issue: 16 | if: github.actor != 'dependabot[bot]' && github.event.pull_request.head.repo.fork == false 17 | runs-on: ubuntu-latest 18 | steps: 19 | - name: Generate token 20 | id: generate_token 21 | uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a 22 | with: 23 | app_id: ${{ secrets.GRAPHBOT_APP_ID }} 24 | private_key: ${{ secrets.GRAPHBOT_APP_PEM }} 25 | 26 | - name: Get project data 27 | env: 28 | GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} 29 | ORGANIZATION: microsoftgraph 30 | PROJECT_NUMBER: 55 31 | run: | 32 | gh api graphql -f query=' 33 | query($org: String!, $number: Int!) { 34 | organization(login: $org){ 35 | projectV2(number: $number) { 36 | id 37 | fields(first:20) { 38 | nodes { 39 | ... on ProjectV2SingleSelectField { 40 | id 41 | name 42 | options { 43 | id 44 | name 45 | } 46 | } 47 | } 48 | } 49 | } 50 | } 51 | }' -f org=$ORGANIZATION -F number=$PROJECT_NUMBER > project_data.json 52 | 53 | echo 'PROJECT_ID='$(jq '.data.organization.projectV2.id' project_data.json) >> $GITHUB_ENV 54 | echo 'LANGUAGE_FIELD_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .id' project_data.json) >> $GITHUB_ENV 55 | echo 'LANGUAGE_OPTION_ID='$(jq '.data.organization.projectV2.fields.nodes[] | select(.name== "Language") | .options[] | select(.name=="TypeScript") |.id' project_data.json) >> $GITHUB_ENV 56 | 57 | - name: Add Issue or PR to project 58 | env: 59 | GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} 60 | ISSUE_ID: ${{ github.event_name == 'issues' && github.event.issue.node_id || github.event.pull_request.node_id }} 61 | run: | 62 | item_id="$( gh api graphql -f query=' 63 | mutation($project:ID!, $issue:ID!) { 64 | addProjectV2ItemById(input: {projectId: $project, contentId: $issue}) { 65 | item { 66 | id 67 | } 68 | } 69 | }' -f project=$PROJECT_ID -f issue=$ISSUE_ID --jq '.data.addProjectV2ItemById.item.id')" 70 | 71 | echo 'ITEM_ID='$item_id >> $GITHUB_ENV 72 | 73 | - name: Set Language 74 | env: 75 | GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} 76 | run: | 77 | gh api graphql -f query=' 78 | mutation ( 79 | $project: ID! 80 | $item: ID! 81 | $language_field: ID! 82 | $language_value: String! 83 | ) { 84 | set_status: updateProjectV2ItemFieldValue(input: { 85 | projectId: $project 86 | itemId: $item 87 | fieldId: $language_field 88 | value: {singleSelectOptionId: $language_value} 89 | }) { 90 | projectV2Item { 91 | id 92 | } 93 | } 94 | }' -f project=$PROJECT_ID -f item=$ITEM_ID -f language_field=$LANGUAGE_FIELD_ID -f language_value=${{ env.LANGUAGE_OPTION_ID }} --silent 95 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | npm-debug.log* 3 | node_modules 4 | npm-debug.log 5 | 6 | 7 | # Bundled npm package 8 | *.tgz 9 | 10 | # Only keep microsoft-graph-tests.ts in the repo 11 | microsoft-graph-tests.js 12 | 13 | spec/secrets.* 14 | spec/*.js.map 15 | spec/*.js 16 | spec/*.d.ts -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | spec/ 2 | scripts/ 3 | .vscode/ -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible Node.js debug attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "program": "${file}", 12 | "preLaunchTask": "tsc", 13 | "outFiles": [] 14 | }, 15 | { 16 | "type": "node", 17 | "request": "attach", 18 | "name": "Attach to Process", 19 | "address": "localhost", 20 | "port": 5858, 21 | "outFiles": [] 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "**/.git": true, 5 | "**/.svn": true, 6 | "**/.hg": true, 7 | "**/.DS_Store": true, 8 | "**/spec/*.d.ts": true, 9 | "**/spec/*.js*": true 10 | } 11 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "command": "tsc", 6 | "args": [ 7 | "-p", 8 | "." 9 | ], 10 | "problemMatcher": "$tsc", 11 | "tasks": [ 12 | { 13 | "label": "tsc", 14 | "type": "shell", 15 | "command": "tsc", 16 | "args": [ 17 | "-p", 18 | "." 19 | ], 20 | "problemMatcher": "$tsc", 21 | "group": { 22 | "_id": "build", 23 | "isDefault": false 24 | } 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | - Employees can reach out at [aka.ms/opensource/moderation-support](https://aka.ms/opensource/moderation-support) 11 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contribute to this documentation 2 | 3 | Thank you for your interest in our documentation! 4 | 5 | * [Ways to contribute](#ways-to-contribute) 6 | * [Contribute using GitHub](#contribute-using-github) 7 | * [Contribute using Git](#contribute-using-git) 8 | * [How to use Markdown to format your topic](#how-to-use-markdown-to-format-your-topic) 9 | * [FAQ](#faq) 10 | * [More resources](#more-resources) 11 | 12 | ## Ways to contribute 13 | 14 | Here are some ways you can contribute to this documentation: 15 | 16 | * To make small changes to an article, [Contribute using GitHub](#contribute-using-github). 17 | * To make large changes, or changes that involve code, [Contribute using Git](#contribute-using-git). 18 | * Report documentation bugs via GitHub Issues 19 | * Request new documentation at the [Office Developer Platform UserVoice](http://officespdev.uservoice.com) site. 20 | 21 | ## Contribute using GitHub 22 | 23 | Use GitHub to contribute to this documentation without having to clone the repo to your desktop. This is the easiest way to create a pull request in this repository. Use this method to make a minor change that doesn't involve code changes. 24 | 25 | **Note** Using this method allows you to contribute to one article at a time. 26 | 27 | ### To Contribute using GitHub 28 | 29 | 1. Find the article you want to contribute to on GitHub. 30 | 31 | If the article is in MSDN, choose the **suggest and submit changes** link in the **Contribute to this content** section and you'll be taken to the same article on GitHub. 32 | 2. Once you are on the article in GitHub, sign in to GitHub (get a free account [Join GitHub](https://github.com/join). 33 | 3. Choose the **pencil icon** (edit the file in your fork of this project) and make your changes in the **<>Edit file** window. 34 | 4. Scroll to the bottom and enter a description. 35 | 5. Choose **Propose file change**>**Create pull request**. 36 | 37 | You now have successfully submitted a pull request. Pull requests are typically reviewed within 10 business days. 38 | 39 | 40 | ## Contribute using Git 41 | 42 | Use Git to contribute substantive changes, such as: 43 | 44 | * Contributing code. 45 | * Contributing changes that affect meaning. 46 | * Contributing large changes to text. 47 | * Adding new topics. 48 | 49 | ### To Contribute using Git 50 | 51 | 1. If you don't have a GitHub account, set one up at [GitHub](https://github.com/join). 52 | 2. After you have an account, install Git on your computer. Follow the steps in [Setting up Git Tutorial](https://help.github.com/articles/set-up-git/). 53 | 3. To submit a pull request using Git, follow the steps in [Use GitHub, Git, and this repository](#use-github-git-and-this-repository). 54 | 4. You will be asked to sign the Contributor's License Agreement if you are: 55 | 56 | * A member of the Microsoft Open Technologies group. 57 | * A contributors who doesn't work for Microsoft. 58 | 59 | As a community member, you must sign the Contribution License Agreement (CLA) before you can contribute large submissions to a project. You only need to complete and submit the documentation once. Carefully review the document. You may be required to have your employer sign the document. 60 | 61 | Signing the CLA does not grant you rights to commit to the main repository, but it does mean that the Office Developer and Office Developer Content Publishing teams will be able to review and approve your contributions. You will be credited for your submissions. 62 | 63 | Pull requests are typically reviewed within 10 business days. 64 | 65 | ## Use GitHub, Git, and this repository 66 | 67 | **Note:** Most of the information in this section can be found in [GitHub Help] articles. If you're familiar with Git and GitHub, skip to the **Contribute and edit content** section for the specifics of the code/content flow of this repository. 68 | 69 | ### To set up your fork of the repository 70 | 71 | 1. Set up a GitHub account so you can contribute to this project. If you haven't done this, go to [GitHub](https://github.com/join) and do it now. 72 | 2. Install Git on your computer. Follow the steps in the [Setting up Git Tutorial] [Set Up Git]. 73 | 3. Create your own fork of this repository. To do this, at the top of the page, choose the **Fork** button. 74 | 4. Copy your fork to your computer. To do this, open Git Bash. At the command prompt enter: 75 | 76 | git clone https://github.com//.git 77 | 78 | Next, create a reference to the root repository by entering these commands: 79 | 80 | cd 81 | git remote add upstream https://github.com/microsoftgraph/.git 82 | git fetch upstream 83 | 84 | Congratulations! You've now set up your repository. You won't need to repeat these steps again. 85 | 86 | ### Contribute and edit content 87 | 88 | To make the contribution process as seamless as possible, follow these steps. 89 | 90 | #### To contribute and edit content 91 | 92 | 1. Create a new branch. 93 | 2. Add new content or edit existing content. 94 | 3. Submit a pull request to the main repository. 95 | 4. Delete the branch. 96 | 97 | **Important** Limit each branch to a single concept/article to streamline the work flow and reduce the chance of merge conflicts. Content appropriate for a new branch includes: 98 | 99 | * A new article. 100 | * Spelling and grammar edits. 101 | * Applying a single formatting change across a large set of articles (for example, applying a new copyright footer). 102 | 103 | #### To create a new branch 104 | 105 | 1. Open Git Bash. 106 | 2. At the Git Bash command prompt, type `git pull upstream master:`. This creates a new branch locally that is copied from the latest MicrosoftGraph master branch. 107 | 3. At the Git Bash command prompt, type `git push origin `. This alerts GitHub to the new branch. You should now see the new branch in your fork of the repository on GitHub. 108 | 4. At the Git Bash command prompt, type `git checkout ` to switch to your new branch. 109 | 110 | #### Add new content or edit existing content 111 | 112 | You navigate to the repository on your computer by using File Explorer. The repository files are in `C:\Users\\`. 113 | 114 | To edit files, open them in an editor of your choice and modify them. To create a new file, use the editor of your choice and save the new file in the appropriate location in your local copy of the repository. While working, save your work frequently. 115 | 116 | The files in `C:\Users\\` are a working copy of the new branch that you created in your local repository. Changing anything in this folder doesn't affect the local repository until you commit a change. To commit a change to the local repository, type the following commands in GitBash: 117 | 118 | git add . 119 | git commit -v -a -m "" 120 | 121 | The `add` command adds your changes to a staging area in preparation for committing them to the repository. The period after the `add` command specifies that you want to stage all of the files that you added or modified, checking subfolders recursively. (If you don't want to commit all of the changes, you can add specific files. You can also undo a commit. For help, type `git add -help` or `git status`.) 122 | 123 | The `commit` command applies the staged changes to the repository. The switch `-m` means you are providing the commit comment in the command line. The -v and -a switches can be omitted. The -v switch is for verbose output from the command, and -a does what you already did with the add command. 124 | 125 | You can commit multiple times while you are doing your work, or you can commit once when you're done. 126 | 127 | #### Submit a pull request to the main repository 128 | 129 | When you're finished with your work and are ready to have it merged into the main repository, follow these steps. 130 | 131 | #### To submit a pull request to the main repository 132 | 133 | 1. In the Git Bash command prompt, type `git push origin `. In your local repository, `origin` refers to your GitHub repository that you cloned the local repository from. This command pushes the current state of your new branch, including all commits made in the previous steps, to your GitHub fork. 134 | 2. On the GitHub site, navigate in your fork to the new branch. 135 | 3. Choose the **Pull Request** button at the top of the page. 136 | 4. Verify the Base branch is `microsoftgraph/@master` and the Head branch is `/@`. 137 | 5. Choose the **Update Commit Range** button. 138 | 6. Add a title to your pull request, and describe all the changes you're making. 139 | 7. Submit the pull request. 140 | 141 | One of the site administrators will process your pull request. Your pull request will surface on the microsoftgraph/ site under Issues. When the pull request is accepted, the issue will be resolved. 142 | 143 | #### Create a new branch after merge 144 | 145 | After a branch is successfully merged (that is, your pull request is accepted), don't continue working in that local branch. This can lead to merge conflicts if you submit another pull request. To do another update, create a new local branch from the successfully merged upstream branch, and then delete your initial local branch. 146 | 147 | For example, if your local branch X was successfully merged into the OfficeDev/microsoft-graph-docs master branch and you want to make additional updates to the content that was merged. Create a new local branch, X2, from the OfficeDev/microsoft-graph-docs master branch. To do this, open GitBash and execute the following commands: 148 | 149 | cd microsoft-graph-docs 150 | git pull upstream master:X2 151 | git push origin X2 152 | 153 | You now have local copies (in a new local branch) of the work that you submitted in branch X. The X2 branch also contains all the work other writers have merged, so if your work depends on others' work (for example, shared images), it is available in the new branch. You can verify that your previous work (and others' work) is in the branch by checking out the new branch... 154 | 155 | git checkout X2 156 | 157 | ...and verifying the content. (The `checkout` command updates the files in `C:\Users\\microsoft-graph-docs` to the current state of the X2 branch.) Once you check out the new branch, you can make updates to the content and commit them as usual. However, to avoid working in the merged branch (X) by mistake, it's best to delete it (see the following **Delete a branch** section). 158 | 159 | #### Delete a branch 160 | 161 | Once your changes are successfully merged into the main repository, delete the branch you used because you no longer need it. Any additional work should be done in a new branch. 162 | 163 | #### To delete a branch 164 | 165 | 1. In the Git Bash command prompt, type `git checkout master`. This ensures that you aren't in the branch to be deleted (which isn't allowed). 166 | 2. Next, at the command prompt, type `git branch -d `. This deletes the branch on your computer only if it has been successfully merged to the upstream repository. (You can override this behavior with the `–D` flag, but first be sure you want to do this.) 167 | 3. Finally, type `git push origin :` at the command prompt (a space before the colon and no space after it). This will delete the branch on your github fork. 168 | 169 | Congratulations, you have successfully contributed to the project! 170 | 171 | ## How to use Markdown to format your topic 172 | 173 | ### Article template 174 | 175 | The [markdown template](/articles/0-markdown-template-for-new-articles.md) contains the basic Markdown for a topic that includes a table of contents, sections with subheadings, links to other Office developer topics, links to other sites, bold text, italic text, numbered and bulleted lists, code snippets, and images. 176 | 177 | 178 | ### Standard Markdown 179 | 180 | All of the articles in this repository use Markdown. A complete introduction (and listing of all the syntax) can be found at [Markdown Home] []. 181 | 182 | ## FAQ 183 | 184 | ### How do I get a GitHub account? 185 | 186 | Fill out the form at [Join GitHub](https://github.com/join) to open a free GitHub account. 187 | 188 | ### Where do I get a Contributor's License Agreement? 189 | 190 | You will automatically be sent a notice that you need to sign the Contributor's License Agreement (CLA) if your pull request requires one. 191 | 192 | As a community member, **you must sign the Contribution License Agreement (CLA) before you can contribute large submissions to this project**. You only need complete and submit the documentation once. Carefully review the document. You may be required to have your employer sign the document. 193 | 194 | ### What happens with my contributions? 195 | 196 | When you submit your changes, via a pull request, our team will be notified and will review your pull request. You will receive notifications about your pull request from GitHub; you may also be notified by someone from our team if we need more information. We reserve the right to edit your submission for legal, style, clarity, or other issues. 197 | 198 | ### Can I become an approver for this repository's GitHub pull requests? 199 | 200 | Currently, we are not allowing external contributors to approve pull requests in this repository. 201 | 202 | ### How soon will I get a response about my change request or issue? 203 | 204 | We typically review pull requests and respond to issues within 10 business days. 205 | 206 | ## More resources 207 | 208 | * To learn more about Markdown, go to the Git creator's site [Daring Fireball]. 209 | * To learn more about using Git and GitHub, first check out the [GitHub Help section] [GitHub Help]. 210 | 211 | [GitHub Home]: http://github.com 212 | [GitHub Help]: http://help.github.com/ 213 | [Set Up Git]: http://help.github.com/win-set-up-git/ 214 | [Markdown Home]: http://daringfireball.net/projects/markdown/ 215 | [Daring Fireball]: http://daringfireball.net/ 216 | 217 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Microsoft Graph TypeScript Typings 2 | 3 | Copyright 2015 Microsoft Corporation 4 | 5 | All right reserved. 6 | 7 | MIT License 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /README-Localized/README-es-es.md: -------------------------------------------------------------------------------- 1 | [![identificador de versión npm](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Tipos de TypeScript de Microsoft Graph 4 | Las definiciones de TypeScript de Microsoft Graph permiten a los editores ofrecer IntelliSense en objetos de Microsoft Graph, como usuarios, mensajes y grupos. 5 | 6 | ## Instalación 7 | 8 | Se recomienda incluir el archivo .d.ts al descargar este paquete a través de [npm](https://www.npmjs.com/). 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![GIF que muestra IntelliSense y finalización automática para entidades de Microsoft Graph en Visual Studio Code ](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## Ejemplos 20 | En los ejemplos siguientes se presupone que el usuario tiene un token de acceso válido. Hemos usado [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch) para realizar solicitudes, pero también puede usar [nuestra biblioteca cliente de JavaScript](https://github.com/microsoftgraph/msgraph-sdk-javascript) u otras bibliotecas. 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### Mostrar mis mensajes recientes 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### Enviar un correo electrónico como el usuario conectado 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Soporte de Microsoft Graph beta 98 | Si desea probar los puntos de conexión de la versión beta de Microsoft Graph, puede usar esos tipos simultáneamente con los tipos v1.0. 99 | 100 | Actualice el archivo package.json con lo siguiente: 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | Import the beta types from `@microsoft/microsoft-graph-types-beta` 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## Editores admitidos 123 | Cualquier proyecto TypeScript puede usar estos tipos al usar al menos TypeScript 2.0 Hemos probado a incluir los tipos como dependencia en los siguientes editores. 124 | * Visual Studio Code 125 | * WebStorm 126 | * Atom with the [atom-typescript](https://atom.io/packages/atom-typescript) plugin 127 | 128 | ## Preguntas y comentarios 129 | 130 | Nos encantaría recibir sus comentarios sobre el proyecto de definiciones de TypeScript. Puede enviarnos sus preguntas y sugerencias a través de la sección [Problemas](https://github.com/microsoftgraph/msgraph-typescript-typings/issues) de este repositorio. 131 | 132 | 133 | ## Colaboradores 134 | Vea la [directrices de contribución](CONTRIBUTING.md). 135 | 136 | ## Recursos adicionales 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Centro para desarrolladores de Office](http://dev.office.com/) 140 | * [Biblioteca cliente de JavaScript de Microsoft Graph](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## Informes de seguridad 143 | 144 | Si encuentra un problema de seguridad con nuestras bibliotecas o servicios, informe a [secure@microsoft.com](mailto:secure@microsoft.com) con todos los detalles posibles. Es posible que el envío pueda optar a una recompensa a través del programa [Microsoft Bounty](http://aka.ms/bugbounty). No publique problemas de seguridad en problemas de GitHub ni ningún otro sitio público. Nos pondremos en contacto con usted rápidamente tras recibir la información. Le animamos a que obtenga notificaciones de los incidentes de seguridad que se produzcan; para ello, visite [esta página](https://technet.microsoft.com/en-us/security/dd252948) y suscríbase a las alertas de avisos de seguridad. 145 | 146 | ## Licencia 147 | 148 | Copyright (c) Microsoft Corporation. Todos los derechos reservados. Publicado bajo la licencia MIT (la "Licencia"). 149 | 150 | ## Valoramos y nos adherimos al Código de conducta de código abierto de Microsoft 151 | 152 | Este proyecto ha adoptado el [Código de conducta de código abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/). Para obtener más información, vea [Preguntas frecuentes sobre el código de conducta](https://opensource.microsoft.com/codeofconduct/faq/) o póngase en contacto con [opencode@microsoft.com](mailto:opencode@microsoft.com) si tiene otras preguntas o comentarios. 153 | -------------------------------------------------------------------------------- /README-Localized/README-fr-fr.md: -------------------------------------------------------------------------------- 1 | [![Badge de version npm](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Types TypeScript Microsoft Graph 4 | Les définitions TypeScript Microsoft Graph permettent aux éditeurs de fournir des fonctionnalités IntelliSense sur les objets Microsoft Graph, notamment les utilisateurs, les messages et les groupes. 5 | 6 | ## Installation 7 | 8 | Nous vous recommandons d’inclure le fichier .d.ts en téléchargeant ce package via [npm](https://www.npmjs.com/). 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![Image GIF montrant IntelliSense et la saisie semi-automatique des entités Microsoft Graph dans Visual Studio Code](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## Exemples 20 | Les exemples suivants partent du principe que vous possédez un jeton d’accès valide. Nous avons utilisé [isomorphic-FETCH](https://www.npmjs.com/package/isomorphic-fetch) pour effectuer des requêtes, mais vous pouvez utiliser [notre bibliothèque cliente JavaScript](https://github.com/microsoftgraph/msgraph-sdk-javascript) ou d’autres bibliothèques également. 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### Répertorier mes messages récents 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### Envoyer un e-mail en tant qu’utilisateur connecté 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Prise en charge de Microsoft Graph bêta 98 | Si vous voulez tester les points de terminaison Microsoft Graph bêta, vous pouvez utiliser ces types simultanément avec les types v 1.0. 99 | 100 | Mettez à jour votre fichier package.json avec ce qui suit : 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | Importez des types bêta de `@microsoft/microsoft-graph-types-beta` 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## Éditeurs pris en charge 123 | Tout projet TypeScript peut utiliser ces types avec au moins TypeScript 2.0. Nous avons testé l’inclusion des types en tant que dépendances dans les éditeurs suivants. 124 | * Visual Studio Code 125 | * WebStorm 126 | * Atom avec le plug-in [atom-typescript](https://atom.io/packages/atom-typescript) 127 | 128 | ## Questions et commentaires 129 | 130 | Nous serions ravis de connaître votre opinion sur le projet de définitions TypeScript. Vous pouvez nous faire part de vos questions et suggestions dans la rubrique [Problèmes](https://github.com/microsoftgraph/msgraph-typescript-typings/issues) de ce référentiel. 131 | 132 | 133 | ## Contribution 134 | Reportez-vous aux [instructions sur la contribution](CONTRIBUTING.md). 135 | 136 | ## Ressources supplémentaires 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Centre des développeurs Office](http://dev.office.com/) 140 | * [Bibliothèque cliente JavaScript Microsoft Graph](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## Génération de rapports de sécurité 143 | 144 | Si vous rencontrez un problème de sécurité avec nos bibliothèques ou services, signalez-le à l’adresse [secure@microsoft.com](mailto:secure@microsoft.com) avec autant de détails que possible. Votre envoi vous donnera sans doute droit à une prime via le programme [Bounty de Microsoft](http://aka.ms/bugbounty). Merci de ne pas publier de problèmes de sécurité sur le site des problèmes GitHub ou sur un autre site public. Nous vous contacterons rapidement dès réception des informations. Nous vous encourageons à activer les notifications d’incidents de sécurité en vous rendant sur [cette page](https://technet.microsoft.com/en-us/security/dd252948) et en vous abonnant aux alertes d’avis de sécurité. 145 | 146 | ## Licence 147 | 148 | Copyright (c) Microsoft Corporation. Tous droits réservés. Soumis à la licence MIT (la "Licence") ; 149 | 150 | ## Nous respectons le code de conduite Open Source de Microsoft. 151 | 152 | Ce projet a adopté le [code de conduite Open Source de Microsoft](https://opensource.microsoft.com/codeofconduct/). Pour en savoir plus, reportez-vous à la [FAQ relative au code de conduite](https://opensource.microsoft.com/codeofconduct/faq/) ou contactez [opencode@microsoft.com](mailto:opencode@microsoft.com) pour toute question ou tout commentaire. 153 | -------------------------------------------------------------------------------- /README-Localized/README-ja-jp.md: -------------------------------------------------------------------------------- 1 | [![npm バージョン バッジ](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Microsoft Graph TypeScript 型 4 | Microsoft Graph TypeScript 定義により、編集者は、ユーザー、メッセージ、グループを含む Microsoft Graph オブジェクトに Intellisense を提供できます。 5 | 6 | ## インストール 7 | 8 | このパッケージを [npm](https://www.npmjs.com/)からダウンロードして、.d.ts ファイルを含めることをお勧めします。 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![Visual Studio Code の Intellisense を表示する GIF と Microsoft Graph エンティティのオートコンプリーション](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## 例 20 | 次の例では、有効なアクセス トークンがあることを前提としています。要求を実行するために [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch) を使用していましたが、[当社の JavaScript クライアント ライブラリ](https://github.com/microsoftgraph/msgraph-sdk-javascript)または他のライブラリを使用することもできます。 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### 最近使用したメッセージを一覧表示する 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### ログインしているユーザーとしてメールを送信する 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Microsoft Graph ベータ版をサポート 98 | Microsoft Graph ベータ版のエンドポイントをテストする場合は、これらの型を v1.0 の型と同時に使用できます。 99 | 100 | package.json ファイルを次のように更新します。 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | `@microsoft/microsoft-graph-types-beta` からベータ タイプをインポートする 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## サポートされるエディター 123 | 少なくとも TypeScript 2.0 を使用している場合、TypeScript プロジェクトはこれらの型を使用できます。次のエディターで依存関係として型を含めることをテストしました。 124 | * Visual Studio Code 125 | * WebStorm 126 | * [atom-typescript](https://atom.io/packages/atom-typescript) プラグインを使用する Atom 127 | 128 | ## 質問とコメント 129 | 130 | TypeScript 定義プロジェクトに関するフィードバックをお寄せください。質問や提案につきましては、このリポジトリの「[問題](https://github.com/microsoftgraph/msgraph-typescript-typings/issues)」セクションで送信できます。 131 | 132 | 133 | ## 投稿 134 | [投稿ガイドライン](CONTRIBUTING.md)を参照してください。 135 | 136 | ## その他のリソース 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Office デベロッパー センター](http://dev.office.com/) 140 | * [Microsoft Graph JavaScript クライアント ライブラリ](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## セキュリティ レポート 143 | 144 | ライブラリまたはサービスでセキュリティに関する問題を発見した場合は、できるだけ詳細に [secure@microsoft.com](mailto:secure@microsoft.com) に報告してください。提出物は、[Microsoft Bounty](http://aka.ms/bugbounty) プログラムを通じて報酬を受ける対象となる場合があります。セキュリティの問題を GitHub の問題や他のパブリック サイトに投稿しないでください。情報を受け取り次第、ご連絡させていただきます。セキュリティの問題が発生したときに通知を受け取ることをお勧めします。そのためには、[このページ](https://technet.microsoft.com/en-us/security/dd252948)にアクセスし、セキュリティ アドバイザリ通知を受信登録してください。 145 | 146 | ## ライセンス 147 | 148 | Copyright (c) Microsoft Corporation。All rights reserved.MIT ライセンス ("ライセンス") に基づいてライセンスされています。 149 | 150 | ## Microsoft Open Source Code of Conduct (Microsoft オープン ソース倫理規定) を尊重し、遵守します 151 | 152 | このプロジェクトでは、[Microsoft Open Source Code of Conduct (Microsoft オープン ソース倫理規定)](https://opensource.microsoft.com/codeofconduct/) が採用されています。詳細については、「[Code of Conduct の FAQ (倫理規定の FAQ)](https://opensource.microsoft.com/codeofconduct/faq/)」を参照してください。また、その他の質問やコメントがあれば、[opencode@microsoft.com](mailto:opencode@microsoft.com) までお問い合わせください。 153 | -------------------------------------------------------------------------------- /README-Localized/README-pt-br.md: -------------------------------------------------------------------------------- 1 | [![selo de versão do npm](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Tipos de TypeScript do Microsoft Graph 4 | As definições de TypeScript do Microsoft Graph permitem que os editores forneçam o IntelliSense em objetos do Microsoft Graph, incluindo usuários, mensagens e grupos. 5 | 6 | ## Instalação 7 | 8 | Recomendamos incluir o arquivo .d.ts baixando esse pacote pelo [npm](https://www.npmjs.com/). 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![GIF que mostra o IntelliSense e o preenchimento automático para entidades do Microsoft Graph no Visual Studio Code](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## Exemplos 20 | Os exemplos a seguir supõem que você tenha um token de acesso válido. Usamos [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch) para executar solicitações, mas você também pode usar [nossa biblioteca de cliente de JavaScript](https://github.com/microsoftgraph/msgraph-sdk-javascript) ou outras bibliotecas. 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### Lista minhas mensagens recentes 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### Envia um email como o usuário conectado 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Suporte ao Microsoft Graph beta 98 | Se você quer testar os pontos de extremidade do Microsoft Graph beta, é possível usá-los simultaneamente com os tipos v 1.0. 99 | 100 | Atualize o arquivo package.json com o seguinte: 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | Importe os tipos beta de `@microsoft/microsoft-graph-types-beta` 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## Editores compatíveis 123 | Todos os projetos TypeScript podem consumir esses tipos ao usar pelo menos o TypeScript 2.0. Testamos e incluímos os tipos como uma dependência nos editores a seguir. 124 | * Visual Studio Code 125 | * WebStorm 126 | * Atom with the [atom-typescript](https://atom.io/packages/atom-typescript) plugin 127 | 128 | ## Perguntas e comentários 129 | 130 | Gostaríamos de saber sua opinião sobre o projeto de definições de TypeScript. Você pode enviar perguntas e sugestões na seção [Problemas](https://github.com/microsoftgraph/msgraph-typescript-typings/issues) deste repositório. 131 | 132 | 133 | ## Colaboração 134 | Confira as [diretrizes de colaboração](CONTRIBUTING.md). 135 | 136 | ## Recursos adicionais 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Centro de Desenvolvimento do Office](http://dev.office.com/) 140 | * [Biblioteca de cliente de JavaScript do Microsoft Graph](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## Relatórios de segurança 143 | 144 | Se você encontrar um problema de segurança com nossas bibliotecas ou serviços, informe-o em [secure@microsoft.com](mailto:secure@microsoft.com) com o máximo de detalhes possível. O seu envio pode estar qualificado para uma recompensa por meio do programa [Microsoft Bounty](http://aka.ms/bugbounty). Não poste problemas de segurança nos Problemas do GitHub ou qualquer outro site público. Entraremos em contato com você em breve após receber as informações. Recomendamos que você obtenha notificações sobre a ocorrência de incidentes de segurança visitando [esta página](https://technet.microsoft.com/en-us/security/dd252948) e assinando os alertas do Security Advisory. 145 | 146 | ## Licença 147 | 148 | Copyright (c) Microsoft Corporation. Todos os direitos reservados. Licenciada sob a Licença do MIT (a "Licença"); 149 | 150 | ## Valorizamos e cumprimos o Código de Conduta de Código Aberto da Microsoft 151 | 152 | Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para saber mais, confira as [Perguntas frequentes sobre o Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato pelo [opencode@microsoft.com](mailto:opencode@microsoft.com) se tiver outras dúvidas ou comentários. 153 | -------------------------------------------------------------------------------- /README-Localized/README-ru-ru.md: -------------------------------------------------------------------------------- 1 | [![эмблема версии npm](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Типы TypeScript для Microsoft Graph 4 | С помощью определений TypeScript для Microsoft Graph, редакторы могут использовать функции intellisense для объектов Microsoft Graph, включая пользователей, сообщения и группы. 5 | 6 | ## Установка 7 | 8 | Рекомендуем включить файл .d.ts, загрузив его в [npm](https://www.npmjs.com/). 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![GIF функции intellisense и автоматическое заполнение сущностей Microsoft Graph в Visual Studio Code ](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## Примеры 20 | В следующих примерах предполагается, что у вас есть действительный маркер доступа. Для выполнения запросов мы использовали [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch), но вы можете использоватькак нашу [клиентскую библиотеку JavaScript](https://github.com/microsoftgraph/msgraph-sdk-javascript), так и другую. 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### Список недавних сообщений 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### Отправка сообщения пользователя, выполнившего вход 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Поддержка бета-версии Microsoft Graph 98 | Если вы хотите протестировать конечные точки бета-версии Microsoft Graph, используйте эти типы одновременно с типами версии 1.0. 99 | 100 | Обновите файл package.json, выполнив следующее: 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | Импортируйте бета типы из `@microsoft/microsoft-graph-types-beta` 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## Поддерживаемые редакторы 123 | Любой проект TypeScript может использовать эти типы с помощью TypeScript 2.0 или более поздней версии. Мы протестированы типы как зависимость в следующих редакторах. 124 | * Visual Studio Code 125 | * WebStorm 126 | * Atom с плагином [atom-typescript](https://atom.io/packages/atom-typescript) 127 | 128 | ## Вопросы и комментарии 129 | 130 | Мы будем рады получить от вас отзывы о проекте "Определения TypeScript". Вы можете отправлять нам вопросы и предложения в разделе [Проблемы](https://github.com/microsoftgraph/msgraph-typescript-typings/issues) этого репозитория. 131 | 132 | 133 | ## Помощь 134 | См. [добавление рекомендаций](CONTRIBUTING.md). 135 | 136 | ## Дополнительные ресурсы 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Центр разработчиков Office](http://dev.office.com/) 140 | * [Клиентская библиотека JavaScript для Microsoft Graph](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## Отчеты о безопасности 143 | 144 | Если вы столкнулись с проблемами безопасности наших библиотек или служб, сообщите о проблеме по адресу [secure@microsoft.com](mailto:secure@microsoft.com), добавив как можно больше деталей. Возможно, вы получите вознаграждение, в рамках программы [Microsoft Bounty](http://aka.ms/bugbounty). Не публикуйте ошибки безопасности в ошибках GitHub или на любом общедоступном сайте. Вскоре после получения информации, мы свяжемся с вами. Рекомендуем вам настроить уведомления о нарушениях безопасности. Это можно сделать, подписавшись на уведомления безопасности консультационных служб на [этой странице](https://technet.microsoft.com/en-us/security/dd252948). 145 | 146 | ## Лицензия 147 | 148 | © Корпорация Майкрософт. Все права защищены. Предоставляется по лицензии MIT ("Лицензия"); 149 | 150 | ## В соответствии с "Правилами поведения разработчиков открытого кода Майкрософт". 151 | 152 | Этот проект соответствует [Правилам поведения разработчиков открытого кода Майкрософт](https://opensource.microsoft.com/codeofconduct/). Дополнительные сведения см. в разделе [часто задаваемых вопросов о правилах поведения](https://opensource.microsoft.com/codeofconduct/faq/). Если у вас возникли вопросы или замечания, напишите нам по адресу [opencode@microsoft.com](mailto:opencode@microsoft.com). 153 | -------------------------------------------------------------------------------- /README-Localized/README-zh-cn.md: -------------------------------------------------------------------------------- 1 | [![npm 版本徽章](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Microsoft Graph TypeScript 类型 4 | Microsoft Graph TypeScript 定义使编辑器可以提供有关 Microsoft Graph 对象(包括用户、邮件和组)的智能感知。 5 | 6 | ## 安装 7 | 8 | 建议通过 [npm](https://www.npmjs.com/) 下载此包以便包含 .d.ts 文件。 9 | 10 | ```bash 11 | 12 | # Install types and save in package.json as a development dependency 13 | npm install @microsoft/microsoft-graph-types --save-dev 14 | 15 | ``` 16 | 17 | 18 | ![此 GIF 显示了 Visual Studio Code 中的 Microsoft Graph 实体的智能感知和自动完成](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 19 | ## 示例 20 | 以下示例假定你拥有有效的访问令牌。我们使用了 [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch) 执行请求,但你也可以使用[我们的 JavaScript 客户端库](https://github.com/microsoftgraph/msgraph-sdk-javascript)或其他库。 21 | ```typescript 22 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 23 | 24 | import * from 'isomorphic-fetch'; 25 | const accessToken:string = ""; 26 | ``` 27 | ### 列出最近的邮件 28 | ```typescript 29 | let url = "https://graph.microsoft.com/v1.0/me/messages"; 30 | let request = new Request(url, { 31 | method: "GET", 32 | headers: new Headers({ 33 | "Authorization": "Bearer " + accessToken 34 | }) 35 | }); 36 | 37 | fetch(request) 38 | .then((response) => { 39 | response.json().then((res) => { 40 | let messages:[MicrosoftGraph.Message] = res.value; 41 | for (let msg of messages) { //iterate through the recent messages 42 | console.log(msg.subject); 43 | console.log(msg.toRecipients[0].emailAddress.address); 44 | } 45 | }); 46 | 47 | }) 48 | .catch((error) => { 49 | console.error(error); 50 | }); 51 | ``` 52 | ### 使用已登录用户的身份发送电子邮件 53 | ```typescript 54 | // Create the message object 55 | 56 | // Note that all the properties must follow the interface definitions. 57 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 58 | 59 | let mail:MicrosoftGraph.Message = { 60 | subject: "Microsoft Graph TypeScript Sample", 61 | toRecipients: [{ 62 | emailAddress: { 63 | address: "microsoftgraph@example.com" 64 | } 65 | }], 66 | body: { 67 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 68 | contentType: "html" 69 | } 70 | } 71 | // send the email by sending a POST request to the Microsoft Graph 72 | let url = "https://graph.microsoft.com/v1.0/users/me/sendMail"; 73 | let request = new Request( 74 | url, { 75 | method: "POST", 76 | body: JSON.stringify({ 77 | message: mail 78 | }), 79 | headers: new Headers({ 80 | "Authorization": "Bearer " + accessToken, 81 | 'Content-Type': 'application/json' 82 | }) 83 | } 84 | ); 85 | 86 | fetch(request) 87 | .then((response) => { 88 | if(response.ok === true) { 89 | console.log("Mail sent successfully..!!"); 90 | } 91 | }) 92 | .catch((err) => { 93 | console.error(err); 94 | }); 95 | 96 | ``` 97 | ## Microsoft Graph 测试版支持 98 | 如果要测试 Microsoft Graph 测试版终结点,可将这些类型与 v1.0 类型同时使用。 99 | 100 | 使用以下内容更新你的 package.json 文件: 101 | 102 | ```javascript 103 | "devDependencies": { 104 | // import published v1.0 types with a version from NPM 105 | "@microsoft/microsoft-graph-types": "^0.4.0", 106 | 107 | // import beta types from the beta branch on the GitHub repo 108 | "@microsoft/microsoft-graph-types-beta": "microsoftgraph/msgraph-typescript-typings#beta" 109 | } 110 | } 111 | ``` 112 | 113 | 从 `@microsoft/microsoft-graph-types-beta` 导入测试版类型 114 | ```typescript 115 | // import individual entities 116 | import {User as BetaUser} from "@microsoft/microsoft-graph-types-beta" 117 | 118 | // or import everything under MicrosoftGraphBeta 119 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 120 | ``` 121 | 122 | ## 支持的编辑器 123 | 当至少使用 TypeScript 2.0 时,任何 TypeScript 项目都可以使用这些类型。我们已测试在以下编辑器中包含这些类型作为依赖项。 124 | * Visual Studio Code 125 | * WebStorm 126 | * 带有 [atom-typescript](https://atom.io/packages/atom-typescript) 插件的 Atom 127 | 128 | ## 问题和意见 129 | 130 | 我们非常乐意倾听你对于 TypeScript 定义项目的反馈。你可通过该存储库中的[问题](https://github.com/microsoftgraph/msgraph-typescript-typings/issues)部分向我们发送问题和建议。 131 | 132 | 133 | ## 参与 134 | 请参阅[参与指南](CONTRIBUTING.md)。 135 | 136 | ## 其他资源 137 | 138 | * [Microsoft Graph](https://graph.microsoft.io) 139 | * [Office 开发人员中心](http://dev.office.com/) 140 | * [Microsoft Graph JavaScript 客户端库](https://github.com/microsoftgraph/msgraph-sdk-javascript) 141 | 142 | ## 安全报告 143 | 144 | 如果发现库或服务存在安全问题,请尽可能详细地报告至 [secure@microsoft.com](mailto:secure@microsoft.com)。提交可能有资格通过 [Microsoft 报告奖励](http://aka.ms/bugbounty)计划获得奖励。请勿发布安全问题至 GitHub 问题或其他任何公共网站。我们将在收到信息后立即与你联系。建议发生安全事件时获取相关通知,方法是访问[此页](https://technet.microsoft.com/en-us/security/dd252948)并订阅“安全公告通知”。 145 | 146 | ## 许可证 147 | 148 | 版权所有 (c) Microsoft Corporation。保留所有权利。根据 MIT 许可证(简称“许可证”)获得许可。 149 | 150 | ## 我们重视并遵守“Microsoft 开放源代码行为准则” 151 | 152 | 此项目已采用 [Microsoft 开放源代码行为准则](https://opensource.microsoft.com/codeofconduct/)。有关详细信息,请参阅[行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/)。如有其他任何问题或意见,也可联系 [opencode@microsoft.com](mailto:opencode@microsoft.com)。 153 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![npm version badge](https://img.shields.io/npm/v/@microsoft/microsoft-graph-types.svg)](https://www.npmjs.com/package/@microsoft/microsoft-graph-types) 2 | 3 | # Microsoft Graph TypeScript Types 4 | The Microsoft Graph TypeScript definitions enable editors to provide intellisense on Microsoft Graph objects including users, messages, and groups. 5 | 6 | > **_NOTE:_** The **Microsoft Graph TypeScript Types Beta** [npm package](https://www.npmjs.com/package/@microsoft/microsoft-graph-types-beta) and [GitHub repo](https://github.com/microsoftgraph/msgraph-beta-typescript-typings) is now available. Imports from the `microsoftgraph/msgraph-typescript-typings#beta` branch will no longer be supported. 7 | 8 | ## Installation 9 | 10 | We recommend including the .d.ts file by downloading this package through [npm](https://www.npmjs.com/). 11 | 12 | ```bash 13 | 14 | # Install types and save in package.json as a development dependency 15 | npm install @microsoft/microsoft-graph-types --save-dev 16 | 17 | ``` 18 | 19 | ![GIF showing intellisense and autocompletion for Microsoft Graph entities in Visual Studio Code ](https://github.com/microsoftgraph/msgraph-typescript-typings/raw/master/typings-demo.gif) 20 | 21 | ## Examples 22 | The following examples assume that you have a valid access token. The following example uses [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch) and [Microsoft Graph JavaScript client library](https://github.com/microsoftgraph/msgraph-sdk-javascript) - 23 | 24 | ```typescript 25 | import { User } from "@microsoft/microsoft-graph-types-beta"; 26 | 27 | import { Client } from "@microsoft/microsoft-graph-client"; 28 | 29 | import 'isomorphic-fetch'; 30 | 31 | const client = Client.initWithMiddleware({ 32 | defaultVersion: 'beta', 33 | ... 34 | }); 35 | 36 | const response = await client.api("/me").get(); 37 | const user = response as User; 38 | ``` 39 | 40 | ### Example of creating an object 41 | ```typescript 42 | // Create the message object 43 | 44 | // Note that all the properties must follow the interface definitions. 45 | // For example, this will not compile if you try to type "xml" instead of "html" for contentType. 46 | 47 | let mail:MicrosoftGraphBeta.Message = { 48 | subject: "Microsoft Graph TypeScript Sample", 49 | toRecipients: [{ 50 | emailAddress: { 51 | address: "microsoftgraph@example.com" 52 | } 53 | }], 54 | body: { 55 | content: "

Microsoft Graph TypeScript Sample

Try modifying the sample", 56 | contentType: "html" 57 | } 58 | } 59 | ``` 60 | 61 | ## Example of using v1 types and beta types together 62 | ```json 63 | "devDependencies": { 64 | // import published v1.0 types with a version from NPM 65 | "@microsoft/microsoft-graph-types": "^0.4.0", 66 | // import beta types with a version from NPM 67 | "@microsoft/microsoft-graph-types-beta": "^0.1.0-preview" 68 | } 69 | } 70 | ``` 71 | 72 | ```typescript 73 | import * as MicrosoftGraph from "@microsoft/microsoft-graph-types" 74 | 75 | import * as MicrosoftGraphBeta from "@microsoft/microsoft-graph-types-beta" 76 | 77 | const v1User: MicrosoftGraph.User = { 78 | givenName: "V1 User" 79 | } 80 | 81 | const betaUser: MicrosoftGraphBeta.User = { 82 | givenName: "Beta User" 83 | } 84 | 85 | ``` 86 | 87 | ## Supported editors 88 | Any TypeScript project can consume these types when using at least TypeScript 2.0. We've tested including the types as a dependency in the following editors. 89 | * Visual Studio Code 90 | * WebStorm 91 | * Atom with the [atom-typescript](https://atom.io/packages/atom-typescript) plugin 92 | 93 | ## Questions and comments 94 | 95 | We'd love to get your feedback about the TypeScript definitions project. You can send your questions and suggestions to us in the [Issues](https://github.com/microsoftgraph/msgraph-typescript-typings/issues) section of this repository. 96 | 97 | 98 | ## Contributing 99 | Please see the [contributing guidelines](CONTRIBUTING.md). 100 | 101 | ## Additional resources 102 | 103 | * [Microsoft Graph](https://graph.microsoft.io) 104 | * [Office Dev Center](http://dev.office.com/) 105 | * [Microsoft Graph JavaScript Client Library](https://github.com/microsoftgraph/msgraph-sdk-javascript) 106 | 107 | ## Security Reporting 108 | 109 | If you find a security issue with our libraries or services please report it to [secure@microsoft.com](mailto:secure@microsoft.com) with as much detail as possible. Your submission may be eligible for a bounty through the [Microsoft Bounty](http://aka.ms/bugbounty) program. Please do not post security issues to GitHub Issues or any other public site. We will contact you shortly upon receiving the information. We encourage you to get notifications of when security incidents occur by visiting [this page](https://technet.microsoft.com/en-us/security/dd252948) and subscribing to Security Advisory Alerts. 110 | 111 | ## License 112 | 113 | Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License (the "License"); 114 | 115 | ## We Value and Adhere to the Microsoft Open Source Code of Conduct 116 | 117 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. 118 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). 40 | 41 | 42 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@microsoft/microsoft-graph-types", 3 | "version": "2.43.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@microsoft/microsoft-graph-types", 9 | "version": "2.43.0", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "@microsoft/microsoft-graph-client": "^3.0.5", 13 | "@types/chai": "^5.0.0", 14 | "@types/node": "^22.0.0", 15 | "chai": "^5.0.0", 16 | "mocha": "^11.0.1", 17 | "typescript": "^5.0.3" 18 | } 19 | }, 20 | "node_modules/@babel/runtime": { 21 | "version": "7.21.0", 22 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", 23 | "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", 24 | "dev": true, 25 | "dependencies": { 26 | "regenerator-runtime": "^0.13.11" 27 | }, 28 | "engines": { 29 | "node": ">=6.9.0" 30 | } 31 | }, 32 | "node_modules/@isaacs/cliui": { 33 | "version": "8.0.2", 34 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 35 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 36 | "dev": true, 37 | "dependencies": { 38 | "string-width": "^5.1.2", 39 | "string-width-cjs": "npm:string-width@^4.2.0", 40 | "strip-ansi": "^7.0.1", 41 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 42 | "wrap-ansi": "^8.1.0", 43 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 44 | }, 45 | "engines": { 46 | "node": ">=12" 47 | } 48 | }, 49 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 50 | "version": "6.1.0", 51 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 52 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 53 | "dev": true, 54 | "engines": { 55 | "node": ">=12" 56 | }, 57 | "funding": { 58 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 59 | } 60 | }, 61 | "node_modules/@isaacs/cliui/node_modules/ansi-styles": { 62 | "version": "6.2.1", 63 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 64 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 65 | "dev": true, 66 | "engines": { 67 | "node": ">=12" 68 | }, 69 | "funding": { 70 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 71 | } 72 | }, 73 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 74 | "version": "9.2.2", 75 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 76 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 77 | "dev": true 78 | }, 79 | "node_modules/@isaacs/cliui/node_modules/string-width": { 80 | "version": "5.1.2", 81 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 82 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 83 | "dev": true, 84 | "dependencies": { 85 | "eastasianwidth": "^0.2.0", 86 | "emoji-regex": "^9.2.2", 87 | "strip-ansi": "^7.0.1" 88 | }, 89 | "engines": { 90 | "node": ">=12" 91 | }, 92 | "funding": { 93 | "url": "https://github.com/sponsors/sindresorhus" 94 | } 95 | }, 96 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 97 | "version": "7.1.0", 98 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 99 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 100 | "dev": true, 101 | "dependencies": { 102 | "ansi-regex": "^6.0.1" 103 | }, 104 | "engines": { 105 | "node": ">=12" 106 | }, 107 | "funding": { 108 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 109 | } 110 | }, 111 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 112 | "version": "8.1.0", 113 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 114 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 115 | "dev": true, 116 | "dependencies": { 117 | "ansi-styles": "^6.1.0", 118 | "string-width": "^5.0.1", 119 | "strip-ansi": "^7.0.1" 120 | }, 121 | "engines": { 122 | "node": ">=12" 123 | }, 124 | "funding": { 125 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 126 | } 127 | }, 128 | "node_modules/@microsoft/microsoft-graph-client": { 129 | "version": "3.0.7", 130 | "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.7.tgz", 131 | "integrity": "sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==", 132 | "dev": true, 133 | "dependencies": { 134 | "@babel/runtime": "^7.12.5", 135 | "tslib": "^2.2.0" 136 | }, 137 | "engines": { 138 | "node": ">=12.0.0" 139 | }, 140 | "peerDependenciesMeta": { 141 | "@azure/identity": { 142 | "optional": true 143 | }, 144 | "@azure/msal-browser": { 145 | "optional": true 146 | }, 147 | "buffer": { 148 | "optional": true 149 | }, 150 | "stream-browserify": { 151 | "optional": true 152 | } 153 | } 154 | }, 155 | "node_modules/@pkgjs/parseargs": { 156 | "version": "0.11.0", 157 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 158 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 159 | "dev": true, 160 | "optional": true, 161 | "engines": { 162 | "node": ">=14" 163 | } 164 | }, 165 | "node_modules/@types/chai": { 166 | "version": "5.2.2", 167 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", 168 | "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", 169 | "dev": true, 170 | "license": "MIT", 171 | "dependencies": { 172 | "@types/deep-eql": "*" 173 | } 174 | }, 175 | "node_modules/@types/deep-eql": { 176 | "version": "4.0.2", 177 | "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", 178 | "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", 179 | "dev": true 180 | }, 181 | "node_modules/@types/node": { 182 | "version": "22.15.17", 183 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", 184 | "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", 185 | "dev": true, 186 | "license": "MIT", 187 | "dependencies": { 188 | "undici-types": "~6.21.0" 189 | } 190 | }, 191 | "node_modules/ansi-regex": { 192 | "version": "5.0.1", 193 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 194 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 195 | "dev": true, 196 | "engines": { 197 | "node": ">=8" 198 | } 199 | }, 200 | "node_modules/ansi-styles": { 201 | "version": "4.3.0", 202 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 203 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 204 | "dev": true, 205 | "dependencies": { 206 | "color-convert": "^2.0.1" 207 | }, 208 | "engines": { 209 | "node": ">=8" 210 | }, 211 | "funding": { 212 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 213 | } 214 | }, 215 | "node_modules/argparse": { 216 | "version": "2.0.1", 217 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 218 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 219 | "dev": true 220 | }, 221 | "node_modules/assertion-error": { 222 | "version": "2.0.1", 223 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 224 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 225 | "dev": true, 226 | "engines": { 227 | "node": ">=12" 228 | } 229 | }, 230 | "node_modules/balanced-match": { 231 | "version": "1.0.2", 232 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 233 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 234 | "dev": true 235 | }, 236 | "node_modules/brace-expansion": { 237 | "version": "2.0.1", 238 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 239 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 240 | "dev": true, 241 | "dependencies": { 242 | "balanced-match": "^1.0.0" 243 | } 244 | }, 245 | "node_modules/browser-stdout": { 246 | "version": "1.3.1", 247 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 248 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 249 | "dev": true 250 | }, 251 | "node_modules/camelcase": { 252 | "version": "6.3.0", 253 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 254 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 255 | "dev": true, 256 | "engines": { 257 | "node": ">=10" 258 | }, 259 | "funding": { 260 | "url": "https://github.com/sponsors/sindresorhus" 261 | } 262 | }, 263 | "node_modules/chai": { 264 | "version": "5.2.0", 265 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", 266 | "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", 267 | "dev": true, 268 | "license": "MIT", 269 | "dependencies": { 270 | "assertion-error": "^2.0.1", 271 | "check-error": "^2.1.1", 272 | "deep-eql": "^5.0.1", 273 | "loupe": "^3.1.0", 274 | "pathval": "^2.0.0" 275 | }, 276 | "engines": { 277 | "node": ">=12" 278 | } 279 | }, 280 | "node_modules/chalk": { 281 | "version": "4.1.2", 282 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 283 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 284 | "dev": true, 285 | "dependencies": { 286 | "ansi-styles": "^4.1.0", 287 | "supports-color": "^7.1.0" 288 | }, 289 | "engines": { 290 | "node": ">=10" 291 | }, 292 | "funding": { 293 | "url": "https://github.com/chalk/chalk?sponsor=1" 294 | } 295 | }, 296 | "node_modules/chalk/node_modules/supports-color": { 297 | "version": "7.2.0", 298 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 299 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 300 | "dev": true, 301 | "dependencies": { 302 | "has-flag": "^4.0.0" 303 | }, 304 | "engines": { 305 | "node": ">=8" 306 | } 307 | }, 308 | "node_modules/check-error": { 309 | "version": "2.1.1", 310 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 311 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 312 | "dev": true, 313 | "engines": { 314 | "node": ">= 16" 315 | } 316 | }, 317 | "node_modules/chokidar": { 318 | "version": "4.0.3", 319 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 320 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 321 | "dev": true, 322 | "license": "MIT", 323 | "dependencies": { 324 | "readdirp": "^4.0.1" 325 | }, 326 | "engines": { 327 | "node": ">= 14.16.0" 328 | }, 329 | "funding": { 330 | "url": "https://paulmillr.com/funding/" 331 | } 332 | }, 333 | "node_modules/cliui": { 334 | "version": "8.0.1", 335 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 336 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 337 | "dev": true, 338 | "license": "ISC", 339 | "dependencies": { 340 | "string-width": "^4.2.0", 341 | "strip-ansi": "^6.0.1", 342 | "wrap-ansi": "^7.0.0" 343 | }, 344 | "engines": { 345 | "node": ">=12" 346 | } 347 | }, 348 | "node_modules/color-convert": { 349 | "version": "2.0.1", 350 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 351 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 352 | "dev": true, 353 | "dependencies": { 354 | "color-name": "~1.1.4" 355 | }, 356 | "engines": { 357 | "node": ">=7.0.0" 358 | } 359 | }, 360 | "node_modules/color-name": { 361 | "version": "1.1.4", 362 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 363 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 364 | "dev": true 365 | }, 366 | "node_modules/cross-spawn": { 367 | "version": "7.0.6", 368 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 369 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 370 | "dev": true, 371 | "dependencies": { 372 | "path-key": "^3.1.0", 373 | "shebang-command": "^2.0.0", 374 | "which": "^2.0.1" 375 | }, 376 | "engines": { 377 | "node": ">= 8" 378 | } 379 | }, 380 | "node_modules/debug": { 381 | "version": "4.3.5", 382 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 383 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 384 | "dev": true, 385 | "dependencies": { 386 | "ms": "2.1.2" 387 | }, 388 | "engines": { 389 | "node": ">=6.0" 390 | }, 391 | "peerDependenciesMeta": { 392 | "supports-color": { 393 | "optional": true 394 | } 395 | } 396 | }, 397 | "node_modules/debug/node_modules/ms": { 398 | "version": "2.1.2", 399 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 400 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 401 | "dev": true 402 | }, 403 | "node_modules/decamelize": { 404 | "version": "4.0.0", 405 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 406 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 407 | "dev": true, 408 | "engines": { 409 | "node": ">=10" 410 | }, 411 | "funding": { 412 | "url": "https://github.com/sponsors/sindresorhus" 413 | } 414 | }, 415 | "node_modules/deep-eql": { 416 | "version": "5.0.1", 417 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", 418 | "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", 419 | "dev": true, 420 | "engines": { 421 | "node": ">=6" 422 | } 423 | }, 424 | "node_modules/diff": { 425 | "version": "5.2.0", 426 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 427 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 428 | "dev": true, 429 | "engines": { 430 | "node": ">=0.3.1" 431 | } 432 | }, 433 | "node_modules/eastasianwidth": { 434 | "version": "0.2.0", 435 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 436 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 437 | "dev": true 438 | }, 439 | "node_modules/emoji-regex": { 440 | "version": "8.0.0", 441 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 442 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 443 | "dev": true 444 | }, 445 | "node_modules/escalade": { 446 | "version": "3.2.0", 447 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 448 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 449 | "dev": true, 450 | "license": "MIT", 451 | "engines": { 452 | "node": ">=6" 453 | } 454 | }, 455 | "node_modules/escape-string-regexp": { 456 | "version": "4.0.0", 457 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 458 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 459 | "dev": true, 460 | "engines": { 461 | "node": ">=10" 462 | }, 463 | "funding": { 464 | "url": "https://github.com/sponsors/sindresorhus" 465 | } 466 | }, 467 | "node_modules/find-up": { 468 | "version": "5.0.0", 469 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 470 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 471 | "dev": true, 472 | "dependencies": { 473 | "locate-path": "^6.0.0", 474 | "path-exists": "^4.0.0" 475 | }, 476 | "engines": { 477 | "node": ">=10" 478 | }, 479 | "funding": { 480 | "url": "https://github.com/sponsors/sindresorhus" 481 | } 482 | }, 483 | "node_modules/flat": { 484 | "version": "5.0.2", 485 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 486 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 487 | "dev": true, 488 | "bin": { 489 | "flat": "cli.js" 490 | } 491 | }, 492 | "node_modules/foreground-child": { 493 | "version": "3.3.0", 494 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 495 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 496 | "dev": true, 497 | "dependencies": { 498 | "cross-spawn": "^7.0.0", 499 | "signal-exit": "^4.0.1" 500 | }, 501 | "engines": { 502 | "node": ">=14" 503 | }, 504 | "funding": { 505 | "url": "https://github.com/sponsors/isaacs" 506 | } 507 | }, 508 | "node_modules/get-caller-file": { 509 | "version": "2.0.5", 510 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 511 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 512 | "dev": true, 513 | "license": "ISC", 514 | "engines": { 515 | "node": "6.* || 8.* || >= 10.*" 516 | } 517 | }, 518 | "node_modules/get-func-name": { 519 | "version": "2.0.2", 520 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", 521 | "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", 522 | "dev": true, 523 | "engines": { 524 | "node": "*" 525 | } 526 | }, 527 | "node_modules/glob": { 528 | "version": "10.4.5", 529 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 530 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 531 | "dev": true, 532 | "dependencies": { 533 | "foreground-child": "^3.1.0", 534 | "jackspeak": "^3.1.2", 535 | "minimatch": "^9.0.4", 536 | "minipass": "^7.1.2", 537 | "package-json-from-dist": "^1.0.0", 538 | "path-scurry": "^1.11.1" 539 | }, 540 | "bin": { 541 | "glob": "dist/esm/bin.mjs" 542 | }, 543 | "funding": { 544 | "url": "https://github.com/sponsors/isaacs" 545 | } 546 | }, 547 | "node_modules/glob/node_modules/minimatch": { 548 | "version": "9.0.5", 549 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 550 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 551 | "dev": true, 552 | "dependencies": { 553 | "brace-expansion": "^2.0.1" 554 | }, 555 | "engines": { 556 | "node": ">=16 || 14 >=14.17" 557 | }, 558 | "funding": { 559 | "url": "https://github.com/sponsors/isaacs" 560 | } 561 | }, 562 | "node_modules/has-flag": { 563 | "version": "4.0.0", 564 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 565 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 566 | "dev": true, 567 | "engines": { 568 | "node": ">=8" 569 | } 570 | }, 571 | "node_modules/he": { 572 | "version": "1.2.0", 573 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 574 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 575 | "dev": true, 576 | "bin": { 577 | "he": "bin/he" 578 | } 579 | }, 580 | "node_modules/is-fullwidth-code-point": { 581 | "version": "3.0.0", 582 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 583 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 584 | "dev": true, 585 | "engines": { 586 | "node": ">=8" 587 | } 588 | }, 589 | "node_modules/is-plain-obj": { 590 | "version": "2.1.0", 591 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 592 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 593 | "dev": true, 594 | "engines": { 595 | "node": ">=8" 596 | } 597 | }, 598 | "node_modules/is-unicode-supported": { 599 | "version": "0.1.0", 600 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 601 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 602 | "dev": true, 603 | "engines": { 604 | "node": ">=10" 605 | }, 606 | "funding": { 607 | "url": "https://github.com/sponsors/sindresorhus" 608 | } 609 | }, 610 | "node_modules/isexe": { 611 | "version": "2.0.0", 612 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 613 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 614 | "dev": true 615 | }, 616 | "node_modules/jackspeak": { 617 | "version": "3.4.3", 618 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 619 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 620 | "dev": true, 621 | "dependencies": { 622 | "@isaacs/cliui": "^8.0.2" 623 | }, 624 | "funding": { 625 | "url": "https://github.com/sponsors/isaacs" 626 | }, 627 | "optionalDependencies": { 628 | "@pkgjs/parseargs": "^0.11.0" 629 | } 630 | }, 631 | "node_modules/js-yaml": { 632 | "version": "4.1.0", 633 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 634 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 635 | "dev": true, 636 | "dependencies": { 637 | "argparse": "^2.0.1" 638 | }, 639 | "bin": { 640 | "js-yaml": "bin/js-yaml.js" 641 | } 642 | }, 643 | "node_modules/locate-path": { 644 | "version": "6.0.0", 645 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 646 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 647 | "dev": true, 648 | "dependencies": { 649 | "p-locate": "^5.0.0" 650 | }, 651 | "engines": { 652 | "node": ">=10" 653 | }, 654 | "funding": { 655 | "url": "https://github.com/sponsors/sindresorhus" 656 | } 657 | }, 658 | "node_modules/log-symbols": { 659 | "version": "4.1.0", 660 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 661 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 662 | "dev": true, 663 | "dependencies": { 664 | "chalk": "^4.1.0", 665 | "is-unicode-supported": "^0.1.0" 666 | }, 667 | "engines": { 668 | "node": ">=10" 669 | }, 670 | "funding": { 671 | "url": "https://github.com/sponsors/sindresorhus" 672 | } 673 | }, 674 | "node_modules/loupe": { 675 | "version": "3.1.0", 676 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz", 677 | "integrity": "sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==", 678 | "dev": true, 679 | "dependencies": { 680 | "get-func-name": "^2.0.1" 681 | } 682 | }, 683 | "node_modules/lru-cache": { 684 | "version": "10.4.3", 685 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 686 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 687 | "dev": true 688 | }, 689 | "node_modules/minimatch": { 690 | "version": "5.1.6", 691 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 692 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 693 | "dev": true, 694 | "dependencies": { 695 | "brace-expansion": "^2.0.1" 696 | }, 697 | "engines": { 698 | "node": ">=10" 699 | } 700 | }, 701 | "node_modules/minipass": { 702 | "version": "7.1.2", 703 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 704 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 705 | "dev": true, 706 | "engines": { 707 | "node": ">=16 || 14 >=14.17" 708 | } 709 | }, 710 | "node_modules/mocha": { 711 | "version": "11.2.2", 712 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.2.2.tgz", 713 | "integrity": "sha512-VlSBxrPYHK4YNOEbFdkCxHQbZMoNzBkoPprqtZRW6311EUF/DlSxoycE2e/2NtRk4WKkIXzyrXDTrlikJMWgbw==", 714 | "dev": true, 715 | "license": "MIT", 716 | "dependencies": { 717 | "browser-stdout": "^1.3.1", 718 | "chokidar": "^4.0.1", 719 | "debug": "^4.3.5", 720 | "diff": "^5.2.0", 721 | "escape-string-regexp": "^4.0.0", 722 | "find-up": "^5.0.0", 723 | "glob": "^10.4.5", 724 | "he": "^1.2.0", 725 | "js-yaml": "^4.1.0", 726 | "log-symbols": "^4.1.0", 727 | "minimatch": "^5.1.6", 728 | "ms": "^2.1.3", 729 | "picocolors": "^1.1.1", 730 | "serialize-javascript": "^6.0.2", 731 | "strip-json-comments": "^3.1.1", 732 | "supports-color": "^8.1.1", 733 | "workerpool": "^6.5.1", 734 | "yargs": "^17.7.2", 735 | "yargs-parser": "^21.1.1", 736 | "yargs-unparser": "^2.0.0" 737 | }, 738 | "bin": { 739 | "_mocha": "bin/_mocha", 740 | "mocha": "bin/mocha.js" 741 | }, 742 | "engines": { 743 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 744 | } 745 | }, 746 | "node_modules/ms": { 747 | "version": "2.1.3", 748 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 749 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 750 | "dev": true 751 | }, 752 | "node_modules/p-limit": { 753 | "version": "3.1.0", 754 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 755 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 756 | "dev": true, 757 | "dependencies": { 758 | "yocto-queue": "^0.1.0" 759 | }, 760 | "engines": { 761 | "node": ">=10" 762 | }, 763 | "funding": { 764 | "url": "https://github.com/sponsors/sindresorhus" 765 | } 766 | }, 767 | "node_modules/p-locate": { 768 | "version": "5.0.0", 769 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 770 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 771 | "dev": true, 772 | "dependencies": { 773 | "p-limit": "^3.0.2" 774 | }, 775 | "engines": { 776 | "node": ">=10" 777 | }, 778 | "funding": { 779 | "url": "https://github.com/sponsors/sindresorhus" 780 | } 781 | }, 782 | "node_modules/package-json-from-dist": { 783 | "version": "1.0.1", 784 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 785 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 786 | "dev": true 787 | }, 788 | "node_modules/path-exists": { 789 | "version": "4.0.0", 790 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 791 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 792 | "dev": true, 793 | "engines": { 794 | "node": ">=8" 795 | } 796 | }, 797 | "node_modules/path-key": { 798 | "version": "3.1.1", 799 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 800 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 801 | "dev": true, 802 | "engines": { 803 | "node": ">=8" 804 | } 805 | }, 806 | "node_modules/path-scurry": { 807 | "version": "1.11.1", 808 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 809 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 810 | "dev": true, 811 | "dependencies": { 812 | "lru-cache": "^10.2.0", 813 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 814 | }, 815 | "engines": { 816 | "node": ">=16 || 14 >=14.18" 817 | }, 818 | "funding": { 819 | "url": "https://github.com/sponsors/isaacs" 820 | } 821 | }, 822 | "node_modules/pathval": { 823 | "version": "2.0.0", 824 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 825 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 826 | "dev": true, 827 | "engines": { 828 | "node": ">= 14.16" 829 | } 830 | }, 831 | "node_modules/picocolors": { 832 | "version": "1.1.1", 833 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 834 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 835 | "dev": true, 836 | "license": "ISC" 837 | }, 838 | "node_modules/randombytes": { 839 | "version": "2.1.0", 840 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 841 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 842 | "dev": true, 843 | "dependencies": { 844 | "safe-buffer": "^5.1.0" 845 | } 846 | }, 847 | "node_modules/readdirp": { 848 | "version": "4.1.2", 849 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 850 | "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 851 | "dev": true, 852 | "license": "MIT", 853 | "engines": { 854 | "node": ">= 14.18.0" 855 | }, 856 | "funding": { 857 | "type": "individual", 858 | "url": "https://paulmillr.com/funding/" 859 | } 860 | }, 861 | "node_modules/regenerator-runtime": { 862 | "version": "0.13.11", 863 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 864 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", 865 | "dev": true 866 | }, 867 | "node_modules/require-directory": { 868 | "version": "2.1.1", 869 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 870 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 871 | "dev": true, 872 | "license": "MIT", 873 | "engines": { 874 | "node": ">=0.10.0" 875 | } 876 | }, 877 | "node_modules/safe-buffer": { 878 | "version": "5.2.1", 879 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 880 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 881 | "dev": true, 882 | "funding": [ 883 | { 884 | "type": "github", 885 | "url": "https://github.com/sponsors/feross" 886 | }, 887 | { 888 | "type": "patreon", 889 | "url": "https://www.patreon.com/feross" 890 | }, 891 | { 892 | "type": "consulting", 893 | "url": "https://feross.org/support" 894 | } 895 | ] 896 | }, 897 | "node_modules/serialize-javascript": { 898 | "version": "6.0.2", 899 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 900 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 901 | "dev": true, 902 | "dependencies": { 903 | "randombytes": "^2.1.0" 904 | } 905 | }, 906 | "node_modules/shebang-command": { 907 | "version": "2.0.0", 908 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 909 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 910 | "dev": true, 911 | "dependencies": { 912 | "shebang-regex": "^3.0.0" 913 | }, 914 | "engines": { 915 | "node": ">=8" 916 | } 917 | }, 918 | "node_modules/shebang-regex": { 919 | "version": "3.0.0", 920 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 921 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 922 | "dev": true, 923 | "engines": { 924 | "node": ">=8" 925 | } 926 | }, 927 | "node_modules/signal-exit": { 928 | "version": "4.1.0", 929 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 930 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 931 | "dev": true, 932 | "engines": { 933 | "node": ">=14" 934 | }, 935 | "funding": { 936 | "url": "https://github.com/sponsors/isaacs" 937 | } 938 | }, 939 | "node_modules/string-width": { 940 | "version": "4.2.3", 941 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 942 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 943 | "dev": true, 944 | "dependencies": { 945 | "emoji-regex": "^8.0.0", 946 | "is-fullwidth-code-point": "^3.0.0", 947 | "strip-ansi": "^6.0.1" 948 | }, 949 | "engines": { 950 | "node": ">=8" 951 | } 952 | }, 953 | "node_modules/string-width-cjs": { 954 | "name": "string-width", 955 | "version": "4.2.3", 956 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 957 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 958 | "dev": true, 959 | "dependencies": { 960 | "emoji-regex": "^8.0.0", 961 | "is-fullwidth-code-point": "^3.0.0", 962 | "strip-ansi": "^6.0.1" 963 | }, 964 | "engines": { 965 | "node": ">=8" 966 | } 967 | }, 968 | "node_modules/strip-ansi": { 969 | "version": "6.0.1", 970 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 971 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 972 | "dev": true, 973 | "dependencies": { 974 | "ansi-regex": "^5.0.1" 975 | }, 976 | "engines": { 977 | "node": ">=8" 978 | } 979 | }, 980 | "node_modules/strip-ansi-cjs": { 981 | "name": "strip-ansi", 982 | "version": "6.0.1", 983 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 984 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 985 | "dev": true, 986 | "dependencies": { 987 | "ansi-regex": "^5.0.1" 988 | }, 989 | "engines": { 990 | "node": ">=8" 991 | } 992 | }, 993 | "node_modules/strip-json-comments": { 994 | "version": "3.1.1", 995 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 996 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 997 | "dev": true, 998 | "engines": { 999 | "node": ">=8" 1000 | }, 1001 | "funding": { 1002 | "url": "https://github.com/sponsors/sindresorhus" 1003 | } 1004 | }, 1005 | "node_modules/supports-color": { 1006 | "version": "8.1.1", 1007 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1008 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1009 | "dev": true, 1010 | "dependencies": { 1011 | "has-flag": "^4.0.0" 1012 | }, 1013 | "engines": { 1014 | "node": ">=10" 1015 | }, 1016 | "funding": { 1017 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1018 | } 1019 | }, 1020 | "node_modules/tslib": { 1021 | "version": "2.5.0", 1022 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1023 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 1024 | "dev": true 1025 | }, 1026 | "node_modules/typescript": { 1027 | "version": "5.8.3", 1028 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", 1029 | "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", 1030 | "dev": true, 1031 | "license": "Apache-2.0", 1032 | "bin": { 1033 | "tsc": "bin/tsc", 1034 | "tsserver": "bin/tsserver" 1035 | }, 1036 | "engines": { 1037 | "node": ">=14.17" 1038 | } 1039 | }, 1040 | "node_modules/undici-types": { 1041 | "version": "6.21.0", 1042 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 1043 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 1044 | "dev": true, 1045 | "license": "MIT" 1046 | }, 1047 | "node_modules/which": { 1048 | "version": "2.0.2", 1049 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1050 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1051 | "dev": true, 1052 | "dependencies": { 1053 | "isexe": "^2.0.0" 1054 | }, 1055 | "bin": { 1056 | "node-which": "bin/node-which" 1057 | }, 1058 | "engines": { 1059 | "node": ">= 8" 1060 | } 1061 | }, 1062 | "node_modules/workerpool": { 1063 | "version": "6.5.1", 1064 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 1065 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 1066 | "dev": true 1067 | }, 1068 | "node_modules/wrap-ansi": { 1069 | "version": "7.0.0", 1070 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1071 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1072 | "dev": true, 1073 | "license": "MIT", 1074 | "dependencies": { 1075 | "ansi-styles": "^4.0.0", 1076 | "string-width": "^4.1.0", 1077 | "strip-ansi": "^6.0.0" 1078 | }, 1079 | "engines": { 1080 | "node": ">=10" 1081 | }, 1082 | "funding": { 1083 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1084 | } 1085 | }, 1086 | "node_modules/wrap-ansi-cjs": { 1087 | "name": "wrap-ansi", 1088 | "version": "7.0.0", 1089 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1090 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1091 | "dev": true, 1092 | "dependencies": { 1093 | "ansi-styles": "^4.0.0", 1094 | "string-width": "^4.1.0", 1095 | "strip-ansi": "^6.0.0" 1096 | }, 1097 | "engines": { 1098 | "node": ">=10" 1099 | }, 1100 | "funding": { 1101 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1102 | } 1103 | }, 1104 | "node_modules/y18n": { 1105 | "version": "5.0.8", 1106 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1107 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1108 | "dev": true, 1109 | "license": "ISC", 1110 | "engines": { 1111 | "node": ">=10" 1112 | } 1113 | }, 1114 | "node_modules/yargs": { 1115 | "version": "17.7.2", 1116 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 1117 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 1118 | "dev": true, 1119 | "license": "MIT", 1120 | "dependencies": { 1121 | "cliui": "^8.0.1", 1122 | "escalade": "^3.1.1", 1123 | "get-caller-file": "^2.0.5", 1124 | "require-directory": "^2.1.1", 1125 | "string-width": "^4.2.3", 1126 | "y18n": "^5.0.5", 1127 | "yargs-parser": "^21.1.1" 1128 | }, 1129 | "engines": { 1130 | "node": ">=12" 1131 | } 1132 | }, 1133 | "node_modules/yargs-parser": { 1134 | "version": "21.1.1", 1135 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1136 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1137 | "dev": true, 1138 | "license": "ISC", 1139 | "engines": { 1140 | "node": ">=12" 1141 | } 1142 | }, 1143 | "node_modules/yargs-unparser": { 1144 | "version": "2.0.0", 1145 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1146 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1147 | "dev": true, 1148 | "dependencies": { 1149 | "camelcase": "^6.0.0", 1150 | "decamelize": "^4.0.0", 1151 | "flat": "^5.0.2", 1152 | "is-plain-obj": "^2.1.0" 1153 | }, 1154 | "engines": { 1155 | "node": ">=10" 1156 | } 1157 | }, 1158 | "node_modules/yocto-queue": { 1159 | "version": "0.1.0", 1160 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1161 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1162 | "dev": true, 1163 | "engines": { 1164 | "node": ">=10" 1165 | }, 1166 | "funding": { 1167 | "url": "https://github.com/sponsors/sindresorhus" 1168 | } 1169 | } 1170 | }, 1171 | "dependencies": { 1172 | "@babel/runtime": { 1173 | "version": "7.21.0", 1174 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", 1175 | "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", 1176 | "dev": true, 1177 | "requires": { 1178 | "regenerator-runtime": "^0.13.11" 1179 | } 1180 | }, 1181 | "@isaacs/cliui": { 1182 | "version": "8.0.2", 1183 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 1184 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 1185 | "dev": true, 1186 | "requires": { 1187 | "string-width": "^5.1.2", 1188 | "string-width-cjs": "npm:string-width@^4.2.0", 1189 | "strip-ansi": "^7.0.1", 1190 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 1191 | "wrap-ansi": "^8.1.0", 1192 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 1193 | }, 1194 | "dependencies": { 1195 | "ansi-regex": { 1196 | "version": "6.1.0", 1197 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 1198 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 1199 | "dev": true 1200 | }, 1201 | "ansi-styles": { 1202 | "version": "6.2.1", 1203 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 1204 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 1205 | "dev": true 1206 | }, 1207 | "emoji-regex": { 1208 | "version": "9.2.2", 1209 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1210 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1211 | "dev": true 1212 | }, 1213 | "string-width": { 1214 | "version": "5.1.2", 1215 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 1216 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1217 | "dev": true, 1218 | "requires": { 1219 | "eastasianwidth": "^0.2.0", 1220 | "emoji-regex": "^9.2.2", 1221 | "strip-ansi": "^7.0.1" 1222 | } 1223 | }, 1224 | "strip-ansi": { 1225 | "version": "7.1.0", 1226 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 1227 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 1228 | "dev": true, 1229 | "requires": { 1230 | "ansi-regex": "^6.0.1" 1231 | } 1232 | }, 1233 | "wrap-ansi": { 1234 | "version": "8.1.0", 1235 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 1236 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 1237 | "dev": true, 1238 | "requires": { 1239 | "ansi-styles": "^6.1.0", 1240 | "string-width": "^5.0.1", 1241 | "strip-ansi": "^7.0.1" 1242 | } 1243 | } 1244 | } 1245 | }, 1246 | "@microsoft/microsoft-graph-client": { 1247 | "version": "3.0.7", 1248 | "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.7.tgz", 1249 | "integrity": "sha512-/AazAV/F+HK4LIywF9C+NYHcJo038zEnWkteilcxC1FM/uK/4NVGDKGrxx7nNq1ybspAroRKT4I1FHfxQzxkUw==", 1250 | "dev": true, 1251 | "requires": { 1252 | "@babel/runtime": "^7.12.5", 1253 | "tslib": "^2.2.0" 1254 | } 1255 | }, 1256 | "@pkgjs/parseargs": { 1257 | "version": "0.11.0", 1258 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 1259 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 1260 | "dev": true, 1261 | "optional": true 1262 | }, 1263 | "@types/chai": { 1264 | "version": "5.2.2", 1265 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", 1266 | "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", 1267 | "dev": true, 1268 | "requires": { 1269 | "@types/deep-eql": "*" 1270 | } 1271 | }, 1272 | "@types/deep-eql": { 1273 | "version": "4.0.2", 1274 | "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", 1275 | "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", 1276 | "dev": true 1277 | }, 1278 | "@types/node": { 1279 | "version": "22.15.17", 1280 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", 1281 | "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", 1282 | "dev": true, 1283 | "requires": { 1284 | "undici-types": "~6.21.0" 1285 | } 1286 | }, 1287 | "ansi-regex": { 1288 | "version": "5.0.1", 1289 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1290 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1291 | "dev": true 1292 | }, 1293 | "ansi-styles": { 1294 | "version": "4.3.0", 1295 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1296 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1297 | "dev": true, 1298 | "requires": { 1299 | "color-convert": "^2.0.1" 1300 | } 1301 | }, 1302 | "argparse": { 1303 | "version": "2.0.1", 1304 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1305 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1306 | "dev": true 1307 | }, 1308 | "assertion-error": { 1309 | "version": "2.0.1", 1310 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", 1311 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", 1312 | "dev": true 1313 | }, 1314 | "balanced-match": { 1315 | "version": "1.0.2", 1316 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1317 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1318 | "dev": true 1319 | }, 1320 | "brace-expansion": { 1321 | "version": "2.0.1", 1322 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1323 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1324 | "dev": true, 1325 | "requires": { 1326 | "balanced-match": "^1.0.0" 1327 | } 1328 | }, 1329 | "browser-stdout": { 1330 | "version": "1.3.1", 1331 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 1332 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 1333 | "dev": true 1334 | }, 1335 | "camelcase": { 1336 | "version": "6.3.0", 1337 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1338 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1339 | "dev": true 1340 | }, 1341 | "chai": { 1342 | "version": "5.2.0", 1343 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", 1344 | "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", 1345 | "dev": true, 1346 | "requires": { 1347 | "assertion-error": "^2.0.1", 1348 | "check-error": "^2.1.1", 1349 | "deep-eql": "^5.0.1", 1350 | "loupe": "^3.1.0", 1351 | "pathval": "^2.0.0" 1352 | } 1353 | }, 1354 | "chalk": { 1355 | "version": "4.1.2", 1356 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1357 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1358 | "dev": true, 1359 | "requires": { 1360 | "ansi-styles": "^4.1.0", 1361 | "supports-color": "^7.1.0" 1362 | }, 1363 | "dependencies": { 1364 | "supports-color": { 1365 | "version": "7.2.0", 1366 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1367 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1368 | "dev": true, 1369 | "requires": { 1370 | "has-flag": "^4.0.0" 1371 | } 1372 | } 1373 | } 1374 | }, 1375 | "check-error": { 1376 | "version": "2.1.1", 1377 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", 1378 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", 1379 | "dev": true 1380 | }, 1381 | "chokidar": { 1382 | "version": "4.0.3", 1383 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1384 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1385 | "dev": true, 1386 | "requires": { 1387 | "readdirp": "^4.0.1" 1388 | } 1389 | }, 1390 | "cliui": { 1391 | "version": "8.0.1", 1392 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1393 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1394 | "dev": true, 1395 | "requires": { 1396 | "string-width": "^4.2.0", 1397 | "strip-ansi": "^6.0.1", 1398 | "wrap-ansi": "^7.0.0" 1399 | } 1400 | }, 1401 | "color-convert": { 1402 | "version": "2.0.1", 1403 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1404 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1405 | "dev": true, 1406 | "requires": { 1407 | "color-name": "~1.1.4" 1408 | } 1409 | }, 1410 | "color-name": { 1411 | "version": "1.1.4", 1412 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1413 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1414 | "dev": true 1415 | }, 1416 | "cross-spawn": { 1417 | "version": "7.0.6", 1418 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1419 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1420 | "dev": true, 1421 | "requires": { 1422 | "path-key": "^3.1.0", 1423 | "shebang-command": "^2.0.0", 1424 | "which": "^2.0.1" 1425 | } 1426 | }, 1427 | "debug": { 1428 | "version": "4.3.5", 1429 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", 1430 | "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", 1431 | "dev": true, 1432 | "requires": { 1433 | "ms": "2.1.2" 1434 | }, 1435 | "dependencies": { 1436 | "ms": { 1437 | "version": "2.1.2", 1438 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1439 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1440 | "dev": true 1441 | } 1442 | } 1443 | }, 1444 | "decamelize": { 1445 | "version": "4.0.0", 1446 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 1447 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 1448 | "dev": true 1449 | }, 1450 | "deep-eql": { 1451 | "version": "5.0.1", 1452 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", 1453 | "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", 1454 | "dev": true 1455 | }, 1456 | "diff": { 1457 | "version": "5.2.0", 1458 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1459 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1460 | "dev": true 1461 | }, 1462 | "eastasianwidth": { 1463 | "version": "0.2.0", 1464 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1465 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1466 | "dev": true 1467 | }, 1468 | "emoji-regex": { 1469 | "version": "8.0.0", 1470 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1471 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1472 | "dev": true 1473 | }, 1474 | "escalade": { 1475 | "version": "3.2.0", 1476 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1477 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1478 | "dev": true 1479 | }, 1480 | "escape-string-regexp": { 1481 | "version": "4.0.0", 1482 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1483 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1484 | "dev": true 1485 | }, 1486 | "find-up": { 1487 | "version": "5.0.0", 1488 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1489 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1490 | "dev": true, 1491 | "requires": { 1492 | "locate-path": "^6.0.0", 1493 | "path-exists": "^4.0.0" 1494 | } 1495 | }, 1496 | "flat": { 1497 | "version": "5.0.2", 1498 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1499 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1500 | "dev": true 1501 | }, 1502 | "foreground-child": { 1503 | "version": "3.3.0", 1504 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 1505 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 1506 | "dev": true, 1507 | "requires": { 1508 | "cross-spawn": "^7.0.0", 1509 | "signal-exit": "^4.0.1" 1510 | } 1511 | }, 1512 | "get-caller-file": { 1513 | "version": "2.0.5", 1514 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1515 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1516 | "dev": true 1517 | }, 1518 | "get-func-name": { 1519 | "version": "2.0.2", 1520 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", 1521 | "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", 1522 | "dev": true 1523 | }, 1524 | "glob": { 1525 | "version": "10.4.5", 1526 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1527 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1528 | "dev": true, 1529 | "requires": { 1530 | "foreground-child": "^3.1.0", 1531 | "jackspeak": "^3.1.2", 1532 | "minimatch": "^9.0.4", 1533 | "minipass": "^7.1.2", 1534 | "package-json-from-dist": "^1.0.0", 1535 | "path-scurry": "^1.11.1" 1536 | }, 1537 | "dependencies": { 1538 | "minimatch": { 1539 | "version": "9.0.5", 1540 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1541 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1542 | "dev": true, 1543 | "requires": { 1544 | "brace-expansion": "^2.0.1" 1545 | } 1546 | } 1547 | } 1548 | }, 1549 | "has-flag": { 1550 | "version": "4.0.0", 1551 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1552 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1553 | "dev": true 1554 | }, 1555 | "he": { 1556 | "version": "1.2.0", 1557 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1558 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1559 | "dev": true 1560 | }, 1561 | "is-fullwidth-code-point": { 1562 | "version": "3.0.0", 1563 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1564 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1565 | "dev": true 1566 | }, 1567 | "is-plain-obj": { 1568 | "version": "2.1.0", 1569 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1570 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1571 | "dev": true 1572 | }, 1573 | "is-unicode-supported": { 1574 | "version": "0.1.0", 1575 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1576 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1577 | "dev": true 1578 | }, 1579 | "isexe": { 1580 | "version": "2.0.0", 1581 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1582 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1583 | "dev": true 1584 | }, 1585 | "jackspeak": { 1586 | "version": "3.4.3", 1587 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1588 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1589 | "dev": true, 1590 | "requires": { 1591 | "@isaacs/cliui": "^8.0.2", 1592 | "@pkgjs/parseargs": "^0.11.0" 1593 | } 1594 | }, 1595 | "js-yaml": { 1596 | "version": "4.1.0", 1597 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1598 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1599 | "dev": true, 1600 | "requires": { 1601 | "argparse": "^2.0.1" 1602 | } 1603 | }, 1604 | "locate-path": { 1605 | "version": "6.0.0", 1606 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1607 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1608 | "dev": true, 1609 | "requires": { 1610 | "p-locate": "^5.0.0" 1611 | } 1612 | }, 1613 | "log-symbols": { 1614 | "version": "4.1.0", 1615 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1616 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1617 | "dev": true, 1618 | "requires": { 1619 | "chalk": "^4.1.0", 1620 | "is-unicode-supported": "^0.1.0" 1621 | } 1622 | }, 1623 | "loupe": { 1624 | "version": "3.1.0", 1625 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz", 1626 | "integrity": "sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==", 1627 | "dev": true, 1628 | "requires": { 1629 | "get-func-name": "^2.0.1" 1630 | } 1631 | }, 1632 | "lru-cache": { 1633 | "version": "10.4.3", 1634 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1635 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1636 | "dev": true 1637 | }, 1638 | "minimatch": { 1639 | "version": "5.1.6", 1640 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1641 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1642 | "dev": true, 1643 | "requires": { 1644 | "brace-expansion": "^2.0.1" 1645 | } 1646 | }, 1647 | "minipass": { 1648 | "version": "7.1.2", 1649 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1650 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1651 | "dev": true 1652 | }, 1653 | "mocha": { 1654 | "version": "11.2.2", 1655 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.2.2.tgz", 1656 | "integrity": "sha512-VlSBxrPYHK4YNOEbFdkCxHQbZMoNzBkoPprqtZRW6311EUF/DlSxoycE2e/2NtRk4WKkIXzyrXDTrlikJMWgbw==", 1657 | "dev": true, 1658 | "requires": { 1659 | "browser-stdout": "^1.3.1", 1660 | "chokidar": "^4.0.1", 1661 | "debug": "^4.3.5", 1662 | "diff": "^5.2.0", 1663 | "escape-string-regexp": "^4.0.0", 1664 | "find-up": "^5.0.0", 1665 | "glob": "^10.4.5", 1666 | "he": "^1.2.0", 1667 | "js-yaml": "^4.1.0", 1668 | "log-symbols": "^4.1.0", 1669 | "minimatch": "^5.1.6", 1670 | "ms": "^2.1.3", 1671 | "picocolors": "^1.1.1", 1672 | "serialize-javascript": "^6.0.2", 1673 | "strip-json-comments": "^3.1.1", 1674 | "supports-color": "^8.1.1", 1675 | "workerpool": "^6.5.1", 1676 | "yargs": "^17.7.2", 1677 | "yargs-parser": "^21.1.1", 1678 | "yargs-unparser": "^2.0.0" 1679 | } 1680 | }, 1681 | "ms": { 1682 | "version": "2.1.3", 1683 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1684 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1685 | "dev": true 1686 | }, 1687 | "p-limit": { 1688 | "version": "3.1.0", 1689 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1690 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1691 | "dev": true, 1692 | "requires": { 1693 | "yocto-queue": "^0.1.0" 1694 | } 1695 | }, 1696 | "p-locate": { 1697 | "version": "5.0.0", 1698 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1699 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1700 | "dev": true, 1701 | "requires": { 1702 | "p-limit": "^3.0.2" 1703 | } 1704 | }, 1705 | "package-json-from-dist": { 1706 | "version": "1.0.1", 1707 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 1708 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 1709 | "dev": true 1710 | }, 1711 | "path-exists": { 1712 | "version": "4.0.0", 1713 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1714 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1715 | "dev": true 1716 | }, 1717 | "path-key": { 1718 | "version": "3.1.1", 1719 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1720 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1721 | "dev": true 1722 | }, 1723 | "path-scurry": { 1724 | "version": "1.11.1", 1725 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1726 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1727 | "dev": true, 1728 | "requires": { 1729 | "lru-cache": "^10.2.0", 1730 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1731 | } 1732 | }, 1733 | "pathval": { 1734 | "version": "2.0.0", 1735 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", 1736 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", 1737 | "dev": true 1738 | }, 1739 | "picocolors": { 1740 | "version": "1.1.1", 1741 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1742 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1743 | "dev": true 1744 | }, 1745 | "randombytes": { 1746 | "version": "2.1.0", 1747 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1748 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1749 | "dev": true, 1750 | "requires": { 1751 | "safe-buffer": "^5.1.0" 1752 | } 1753 | }, 1754 | "readdirp": { 1755 | "version": "4.1.2", 1756 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 1757 | "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 1758 | "dev": true 1759 | }, 1760 | "regenerator-runtime": { 1761 | "version": "0.13.11", 1762 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 1763 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", 1764 | "dev": true 1765 | }, 1766 | "require-directory": { 1767 | "version": "2.1.1", 1768 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1769 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1770 | "dev": true 1771 | }, 1772 | "safe-buffer": { 1773 | "version": "5.2.1", 1774 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1775 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1776 | "dev": true 1777 | }, 1778 | "serialize-javascript": { 1779 | "version": "6.0.2", 1780 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 1781 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 1782 | "dev": true, 1783 | "requires": { 1784 | "randombytes": "^2.1.0" 1785 | } 1786 | }, 1787 | "shebang-command": { 1788 | "version": "2.0.0", 1789 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1790 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1791 | "dev": true, 1792 | "requires": { 1793 | "shebang-regex": "^3.0.0" 1794 | } 1795 | }, 1796 | "shebang-regex": { 1797 | "version": "3.0.0", 1798 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1799 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1800 | "dev": true 1801 | }, 1802 | "signal-exit": { 1803 | "version": "4.1.0", 1804 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 1805 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 1806 | "dev": true 1807 | }, 1808 | "string-width": { 1809 | "version": "4.2.3", 1810 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1811 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1812 | "dev": true, 1813 | "requires": { 1814 | "emoji-regex": "^8.0.0", 1815 | "is-fullwidth-code-point": "^3.0.0", 1816 | "strip-ansi": "^6.0.1" 1817 | } 1818 | }, 1819 | "string-width-cjs": { 1820 | "version": "npm:string-width@4.2.3", 1821 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1822 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1823 | "dev": true, 1824 | "requires": { 1825 | "emoji-regex": "^8.0.0", 1826 | "is-fullwidth-code-point": "^3.0.0", 1827 | "strip-ansi": "^6.0.1" 1828 | } 1829 | }, 1830 | "strip-ansi": { 1831 | "version": "6.0.1", 1832 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1833 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1834 | "dev": true, 1835 | "requires": { 1836 | "ansi-regex": "^5.0.1" 1837 | } 1838 | }, 1839 | "strip-ansi-cjs": { 1840 | "version": "npm:strip-ansi@6.0.1", 1841 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1842 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1843 | "dev": true, 1844 | "requires": { 1845 | "ansi-regex": "^5.0.1" 1846 | } 1847 | }, 1848 | "strip-json-comments": { 1849 | "version": "3.1.1", 1850 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1851 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1852 | "dev": true 1853 | }, 1854 | "supports-color": { 1855 | "version": "8.1.1", 1856 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1857 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1858 | "dev": true, 1859 | "requires": { 1860 | "has-flag": "^4.0.0" 1861 | } 1862 | }, 1863 | "tslib": { 1864 | "version": "2.5.0", 1865 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1866 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 1867 | "dev": true 1868 | }, 1869 | "typescript": { 1870 | "version": "5.8.3", 1871 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", 1872 | "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", 1873 | "dev": true 1874 | }, 1875 | "undici-types": { 1876 | "version": "6.21.0", 1877 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 1878 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 1879 | "dev": true 1880 | }, 1881 | "which": { 1882 | "version": "2.0.2", 1883 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1884 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1885 | "dev": true, 1886 | "requires": { 1887 | "isexe": "^2.0.0" 1888 | } 1889 | }, 1890 | "workerpool": { 1891 | "version": "6.5.1", 1892 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 1893 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 1894 | "dev": true 1895 | }, 1896 | "wrap-ansi": { 1897 | "version": "7.0.0", 1898 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1899 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1900 | "dev": true, 1901 | "requires": { 1902 | "ansi-styles": "^4.0.0", 1903 | "string-width": "^4.1.0", 1904 | "strip-ansi": "^6.0.0" 1905 | } 1906 | }, 1907 | "wrap-ansi-cjs": { 1908 | "version": "npm:wrap-ansi@7.0.0", 1909 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1910 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1911 | "dev": true, 1912 | "requires": { 1913 | "ansi-styles": "^4.0.0", 1914 | "string-width": "^4.1.0", 1915 | "strip-ansi": "^6.0.0" 1916 | } 1917 | }, 1918 | "y18n": { 1919 | "version": "5.0.8", 1920 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1921 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1922 | "dev": true 1923 | }, 1924 | "yargs": { 1925 | "version": "17.7.2", 1926 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 1927 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 1928 | "dev": true, 1929 | "requires": { 1930 | "cliui": "^8.0.1", 1931 | "escalade": "^3.1.1", 1932 | "get-caller-file": "^2.0.5", 1933 | "require-directory": "^2.1.1", 1934 | "string-width": "^4.2.3", 1935 | "y18n": "^5.0.5", 1936 | "yargs-parser": "^21.1.1" 1937 | } 1938 | }, 1939 | "yargs-parser": { 1940 | "version": "21.1.1", 1941 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1942 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1943 | "dev": true 1944 | }, 1945 | "yargs-unparser": { 1946 | "version": "2.0.0", 1947 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1948 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1949 | "dev": true, 1950 | "requires": { 1951 | "camelcase": "^6.0.0", 1952 | "decamelize": "^4.0.0", 1953 | "flat": "^5.0.2", 1954 | "is-plain-obj": "^2.1.0" 1955 | } 1956 | }, 1957 | "yocto-queue": { 1958 | "version": "0.1.0", 1959 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1960 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1961 | "dev": true 1962 | } 1963 | } 1964 | } 1965 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@microsoft/microsoft-graph-types", 3 | "description": "Types for Microsoft Graph objects", 4 | "version": "2.43.0", 5 | "license": "MIT", 6 | "types": "microsoft-graph.d.ts", 7 | "scripts": { 8 | "test": "tsc && mocha spec/**.ts" 9 | }, 10 | "typescript": { 11 | "definition": "microsoft-graph.d.ts" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/microsoftgraph/msgraph-typescript-typings.git" 16 | }, 17 | "devDependencies": { 18 | "@microsoft/microsoft-graph-client": "^3.0.5", 19 | "@types/chai": "^5.0.0", 20 | "@types/node": "^22.0.0", 21 | "chai": "^5.0.0", 22 | "mocha": "^11.0.1", 23 | "typescript": "^5.0.3" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /scripts/src/AddGithubUser.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$gitUserName, 3 | [string]$gitUserEmailId, 4 | [string]$gitRepoRoot 5 | ) 6 | 7 | Write-Host "Configuring Github User:" -ForegroundColor Magenta; 8 | 9 | Set-Location -Path $gitRepoRoot; 10 | Write-Host "Location changed to Git Repo Root '$(Get-Location)'" -ForegroundColor Green; 11 | 12 | git config user.name $gitUserName 13 | git config user.email $gitUserEmailId 14 | Write-Host "Git user.name=$($gitUserName) and user.email=$($gitUserEmailId) is set." -ForegroundColor Green; -------------------------------------------------------------------------------- /scripts/src/CalculateNewProductionVersion.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$owner, 3 | [string]$repo 4 | ) 5 | 6 | Write-Host "Calculating new Production Version:" -ForegroundColor Magenta; 7 | 8 | $newVersionStr; 9 | 10 | $releasesUrl = "https://api.github.com/repos/$($owner)/$($repo)/releases"; 11 | 12 | Write-Host "Getting list of releases with '$($releasesUrl)'" -ForegroundColor Blue; 13 | $releasesJSON = Invoke-RestMethod -Uri $releasesUrl -Method Get; 14 | 15 | if ($releasesJSON.Count -eq 0) { 16 | Write-Host "Unable to get releases list with '$($releasesUrl)'" -ForegroundColor Red; 17 | Write-Host "NOTE: This Script cannot handle the first release" -ForegroundColor Cyan; 18 | EXIT 1; 19 | } 20 | 21 | $latestReleaseJSON = $releasesJSON[0]; 22 | $latestReleaseVersionStr = $latestReleaseJSON.tag_name; 23 | $isPreRelease = $latestReleaseJSON.prerelease; 24 | 25 | if ([string]::IsNullOrEmpty($latestReleaseVersionStr)) { 26 | Write-Host "Unable read the latest release tag name" -ForegroundColor Red; 27 | Write-Host "Latest Release Data:" -ForegroundColor Cyan; 28 | Write-Host -Object $latestReleaseJSON -ForegroundColor Cyan; 29 | EXIT 1; 30 | } 31 | 32 | if ([string]::IsNullOrEmpty($isPreRelease)) { 33 | Write-Host "Unable read the latest release is pre-release or not" -ForegroundColor Red; 34 | Write-Host "Latest Release Data:" -ForegroundColor Cyan; 35 | Write-Host -Object $latestReleaseJSON -ForegroundColor Cyan; 36 | EXIT 1; 37 | } 38 | 39 | $isPreRelease = $isPreRelease -as [bool]; 40 | $versionArr = $latestReleaseVersionStr.split("."); 41 | 42 | if ($isPreRelease) { 43 | Write-Host "Preview release is not expected in this repository" -ForegroundColor Red; 44 | Write-Host "Latest Release Data:" -ForegroundColor Cyan; 45 | Write-Host -Object $latestReleaseJSON -ForegroundColor Cyan; 46 | EXIT 1; 47 | } 48 | 49 | if ($versionArr[2].Contains("-")) { 50 | Write-Host "Lastest release '$($latestReleaseVersionStr)' is mentioned as production release but version string has Preview string" -ForegroundColor Red; 51 | Write-Host "Last Release Data:" -ForegroundColor Cyan; 52 | Write-Host -Object $lastReleaseJSON -ForegroundColor Cyan; 53 | EXIT 1; 54 | } 55 | 56 | $minorVersion = $versionArr[1] -as [int]; 57 | $newMinorVersion = $minorVersion + 1; 58 | $newPatchVersion = 0; 59 | 60 | $versionArr[1] = $newMinorVersion; 61 | $versionArr[2] = $newPatchVersion; 62 | 63 | $newVersionStr = $versionArr -join "."; 64 | 65 | Write-Host "Current version is '$($latestReleaseVersionStr)'" -ForegroundColor Blue; 66 | Write-Host "New calculated version is '$($newVersionStr)'" -ForegroundColor Green; 67 | 68 | Write-Host "##vso[task.setvariable variable=NEW_VERSION_STRING]$($newVersionStr)"; 69 | 70 | Write-Host "Updated new version in global variable" -ForegroundColor Green; -------------------------------------------------------------------------------- /scripts/src/CommitAndPushChangesToGithub.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$owner, 3 | [string]$repo, 4 | [string]$branchName, 5 | [string]$newVersion, 6 | [string]$gitPat 7 | ) 8 | 9 | Write-Host "Pushing Version bump change to Github:" -ForegroundColor Magenta; 10 | 11 | Write-Host "Adding Changes." -ForegroundColor Blue; 12 | git add . | Write-Host; 13 | Write-Host "Changes added to the '$($branchName)' branch." -ForegroundColor Green; 14 | 15 | Write-Host "Committing Changes." -ForegroundColor Blue; 16 | git commit -m "Bumped version to '$($newVersion)'" | Write-Host; 17 | Write-Host "Committed the changes to the '$($branchName)' branch." -ForegroundColor Green; 18 | 19 | Write-Host "Pushing changes." -ForegroundColor Blue; 20 | git push "https://$($gitPat)@github.com/$($owner)/$($repo).git" HEAD:$branchName | Write-Host; 21 | Write-Host "Pushed the changes to the '$($branchName)' branch." -ForegroundColor Green; -------------------------------------------------------------------------------- /scripts/src/GetLatestCommitSHA.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$owner, 3 | [string]$repo, 4 | [string]$branchName 5 | ) 6 | 7 | Write-Host "Getting the latest commit SHA for $($branchName):" -ForegroundColor Magenta; 8 | 9 | $latestCommitUrl = "https://api.github.com/repos/$($owner)/$($repo)/commits/$($branchName)"; 10 | 11 | Write-Host "Getting latest commit with '$($latestCommitUrl)'" -ForegroundColor Blue; 12 | $latestCommitData = Invoke-RestMethod -Uri $latestCommitUrl -Method Get; 13 | 14 | if ($latestCommitData.Count -eq 0) { 15 | Write-Host "Unable to get latest commit with '$($latestCommitUrl)'" -ForegroundColor Red; 16 | EXIT 1; 17 | } 18 | 19 | if ([string]::IsNullOrEmpty($latestCommitData.sha)) { 20 | Write-Host "SHA is not present in the latest commit that is fetched" -ForegroundColor Red; 21 | Write-Host "Latest Commit Data:" -ForegroundColor Cyan; 22 | Write-Host -Object $latestCommitData -ForegroundColor Cyan; 23 | EXIT 1; 24 | } 25 | 26 | Write-Host "Latest Commit SHA is '$($latestCommitData.sha)'" -ForegroundColor Green; 27 | 28 | Write-Host "##vso[task.setvariable variable=LASTEST_COMMIT_SHA]$($latestCommitData.sha)"; 29 | 30 | Write-Host "Updated latest commit sha in global variable" -ForegroundColor Green; -------------------------------------------------------------------------------- /scripts/src/GetPackageVersion.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$gitRepoRoot 3 | ) 4 | 5 | Write-Host "Get package version and update it in the global varaible:" -ForegroundColor Magenta; 6 | 7 | $pathToPackageJson = "$($gitRepoRoot)/package.json"; 8 | $packageJson = Get-Content -Path $pathToPackageJson -Raw | ConvertFrom-Json; 9 | Write-Host "Package version is '$($packageJson.version)'" -ForegroundColor Green; 10 | 11 | Write-Host "##vso[task.setvariable variable=VERSION_STRING]$($packageJson.version)"; 12 | 13 | Write-Host "Updated version in global variable" -ForegroundColor Green; 14 | -------------------------------------------------------------------------------- /scripts/src/HasNewCommitsAfterLastRelease.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$owner, 3 | [string]$repo, 4 | [string]$branchName 5 | ) 6 | 7 | Write-Host "Checking for availability of new commits after last release:" -ForegroundColor Magenta; 8 | $releasesUrl = "https://api.github.com/repos/$($owner)/$($repo)/releases"; 9 | 10 | Write-Host "Getting list of releases with '$($releasesUrl)'" -ForegroundColor Blue; 11 | $releasesJSON = Invoke-RestMethod -Uri $releasesUrl -Method Get; 12 | 13 | if ($releasesJSON.Count -eq 0) { 14 | Write-Host "Unable to get releases list with '$($releasesUrl)'" -ForegroundColor Red; 15 | Write-Host "NOTE: This Script cannot handle the first release!" -ForegroundColor Cyan; 16 | EXIT 1; 17 | } 18 | 19 | $lastReleaseJSON = $releasesJSON[0]; 20 | $publishedTime = $lastReleaseJSON.published_at; 21 | $lastReleaseTag = $lastReleaseJSON.tag_name; 22 | 23 | if ([string]::IsNullOrEmpty($publishedTime)) { 24 | Write-Host "Unable read the last release published time" -ForegroundColor Red; 25 | Write-Host "Last Release Data:" -ForegroundColor Red; 26 | Write-Host -Object $lastReleaseJSON -ForegroundColor Red; 27 | EXIT 1; 28 | } 29 | 30 | if ([string]::IsNullOrEmpty($lastReleaseTag)) { 31 | Write-Host "Unable read the last release tag name" -ForegroundColor Red; 32 | Write-Host "Last Release Data:" -ForegroundColor Red; 33 | Write-Host -Object $lastReleaseJSON -ForegroundColor Red; 34 | EXIT 1; 35 | } 36 | 37 | $newCommitsUrl = "https://api.github.com/repos/$($owner)/$($repo)/commits?sha=$($branchName)&since=$($publishedTime)"; 38 | 39 | Write-Host "Getting commits after last release with '$($newCommitsUrl)'" -ForegroundColor Blue; 40 | $newCommitsJSON = Invoke-RestMethod -Uri $newCommitsUrl -Method Get; 41 | 42 | if ($newCommitsJSON.Count -gt 0) { 43 | Write-Host "There are atleast '$($newCommitsJSON.Length)' Commits in '$($branchName)' branch after last release with tag $'($lastReleaseTag)'" -ForegroundColor Green; 44 | EXIT 0; 45 | } 46 | else { 47 | Write-Host "Unable to get commits after last release with '$($newCommitsUrl)'" -ForegroundColor Red; 48 | Write-Host "NOTE: Possibly, there are no commits in '$($branchName)' branch after last release with tag '$($lastReleaseTag)'" -ForegroundColor Cyan; 49 | Write-Host "To verify there are not commits, make a request by pasting '$($newCommitsUrl)' in your browser" -ForegroundColor Cyan; 50 | EXIT 1; 51 | } -------------------------------------------------------------------------------- /scripts/src/RemoveGithubUser.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | [string]$gitRepoRoot 3 | ) 4 | 5 | Write-Host "Removing Github User:" -ForegroundColor Magenta; 6 | 7 | Set-Location -Path $gitRepoRoot; 8 | Write-Host "Location changed to Git Repo Root $(Get-Location)" -ForegroundColor Green; 9 | 10 | git config --unset user.name 11 | git config --unset user.email 12 | Write-Host "Git user.name and user.email is unset." -ForegroundColor Green; -------------------------------------------------------------------------------- /spec/groups.ts: -------------------------------------------------------------------------------- 1 | import {assert} from 'chai' 2 | 3 | import { getClient, randomString } from "./testHelpers" 4 | import {Group} from '../microsoft-graph' 5 | 6 | declare const describe, it; 7 | 8 | describe('Groups', function() { 9 | this.timeout(10*1000); 10 | it('Fetch a list of groups and access properties on a collection item', function() { 11 | return getClient().api("https://graph.microsoft.com/v1.0/groups/").get().then((json) => { 12 | const group = json.value[0] as Group; 13 | assert.isDefined(group.displayName); 14 | assert.isDefined(group.mail); 15 | assert.isDefined(group.id); 16 | 17 | assert.isUndefined(group['invalidPropertyName']); 18 | return Promise.resolve(); 19 | }); 20 | }); 21 | 22 | it('Create a group and validate properties were set', function() { 23 | const group:Group = { 24 | displayName: "Sample test group", 25 | description: randomString(), 26 | groupTypes: [ 27 | "Unified" 28 | ], 29 | mailEnabled: true, 30 | mailNickname: "Group911e5", 31 | securityEnabled: true 32 | }; 33 | 34 | return getClient().api("https://graph.microsoft.com/v1.0/groups/").post(group).then((groupResponse) => { 35 | let createdGroup = groupResponse as Group; 36 | assert.equal(createdGroup.displayName, group.displayName); 37 | assert.equal(createdGroup.description, group.description); 38 | assert.equal(createdGroup.mailEnabled, group.mailEnabled); 39 | assert.isString(createdGroup.id); 40 | return Promise.resolve(); 41 | }); 42 | }); 43 | }); -------------------------------------------------------------------------------- /spec/testHelpers.ts: -------------------------------------------------------------------------------- 1 | import { AccessToken } from "./secrets" 2 | import { Client } from "@microsoft/microsoft-graph-client" 3 | 4 | export function getClient():Client { 5 | return Client.init({ 6 | authProvider: (done) => { 7 | done(null, AccessToken); 8 | } 9 | }); 10 | } 11 | 12 | 13 | export function randomString () { 14 | return Math.random().toString(36).substring(7); 15 | } -------------------------------------------------------------------------------- /spec/users.ts: -------------------------------------------------------------------------------- 1 | import {assert} from 'chai' 2 | 3 | import { getClient, randomString } from "./testHelpers" 4 | import {User} from '../microsoft-graph' 5 | 6 | declare const describe, it; 7 | 8 | describe('Users', function() { 9 | this.timeout(10*1000); 10 | it('[Promise] Fetch the authenticated user and access entity properties', function() { 11 | return getClient().api("https://graph.microsoft.com/v1.0/me/").get().then((res) => { 12 | const user = res as User; 13 | assert.isDefined(user.displayName); 14 | assert.isDefined(user.mail); 15 | assert.isDefined(user.id); 16 | 17 | assert.isDefined(user.surname); 18 | assert.isDefined(user.userPrincipalName); 19 | 20 | assert.isArray(user.businessPhones); 21 | 22 | assert.isUndefined(user['invalidPropertyName']); 23 | }); 24 | }); 25 | 26 | 27 | it('[Callback] Fetch the authenticated user and access entity properties', function() { 28 | return new Promise((resolve, reject) => { 29 | getClient().api("https://graph.microsoft.com/v1.0/me/").get((err, res) => { 30 | const user = res as User; 31 | assert.isDefined(user.displayName); 32 | assert.isDefined(user.mail); 33 | assert.isDefined(user.id); 34 | 35 | assert.isDefined(user.surname); 36 | assert.isDefined(user.userPrincipalName); 37 | 38 | assert.isArray(user.businessPhones); 39 | 40 | assert.isUndefined(user['invalidPropertyName']); 41 | resolve(); 42 | }); 43 | }); 44 | }); 45 | 46 | 47 | it('Modify and verify officeLocation property', function() { 48 | const officeLocation = randomString(); 49 | 50 | return getClient().api("https://graph.microsoft.com/v1.0/me/").patch({officeLocation}).then(() => { 51 | return getClient().api("https://graph.microsoft.com/v1.0/me/").get().then((res) => { 52 | const user = res as User; 53 | assert.equal(user.officeLocation, officeLocation); 54 | return Promise.resolve(); 55 | }); 56 | }); 57 | }); 58 | 59 | 60 | it('[Promise] Modify and verify givenName property', function() { 61 | const givenName = randomString(); 62 | 63 | return getClient().api("https://graph.microsoft.com/v1.0/me/").patch({givenName}).then(() => { 64 | return getClient().api("https://graph.microsoft.com/v1.0/me/").get().then((res) => { 65 | const user = res as User; 66 | assert.equal(user.givenName, givenName); 67 | return Promise.resolve(); 68 | }); 69 | }); 70 | }); 71 | 72 | 73 | 74 | it('[Callback] Modify and verify givenName property', function() { 75 | const givenName = randomString(); 76 | 77 | return new Promise((resolve, reject) => { 78 | getClient().api("https://graph.microsoft.com/v1.0/me/").patch({givenName}, (err, res) => { 79 | getClient().api("https://graph.microsoft.com/v1.0/me/").get((err, res) => { 80 | const user = res as User; 81 | assert.equal(user.givenName, givenName); 82 | resolve(); 83 | }); 84 | }); 85 | }); 86 | }); 87 | 88 | it('Fetch a list of users and access properties on a collection item', function() { 89 | return getClient().api("https://graph.microsoft.com/v1.0/users/").get().then((collection) => { 90 | const users:User[] = collection.value; 91 | assert.isDefined(users[0].displayName); 92 | assert.isDefined(users[0].id); 93 | assert.isDefined(users[0].mail); 94 | }); 95 | }) 96 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "noImplicitAny": false, 6 | "sourceMap": true, 7 | "declaration": true 8 | } 9 | } -------------------------------------------------------------------------------- /typings-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoftgraph/msgraph-typescript-typings/0b3c304ecfbdfc87a5bbcca241e2ed7e25c614cb/typings-demo.gif -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": {}, 3 | "devDependencies": {}, 4 | "main" : "microsoft-graph.d.ts", 5 | "name":"microsoft-graph", 6 | "version": "0.2.1", 7 | "homepage": "https://github.com/microsoftgraph/msgraph-typescript-typings" 8 | } 9 | --------------------------------------------------------------------------------