scimgateway 6.2.5 → 6.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/bun.lock +95 -91
- package/lib/azure-license-mapping.json +17 -0
- package/lib/helper-rest.ts +102 -51
- package/lib/plugin-entra-id.ts +39 -32
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
### v6.2.6
|
|
4
|
+
- **[Fixed]** `plugin-entra-id` group members retrieval is not paginated, and members may be missing for groups with many members.
|
|
5
|
+
- **[Improved]** `HelperRest` updated OData pagination logic and allowing some more throttle retries.
|
|
6
|
+
|
|
3
7
|
### v6.2.5
|
|
4
8
|
- **[Fixed]** jwt config key `azureTenantId` not detected.
|
|
5
9
|
|
package/bun.lock
CHANGED
|
@@ -5,39 +5,39 @@
|
|
|
5
5
|
"": {
|
|
6
6
|
"name": "scimgateway",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@ldapjs/asn1": "
|
|
9
|
-
"@nats-io/jetstream": "
|
|
10
|
-
"@nats-io/nats-core": "
|
|
11
|
-
"@nats-io/transport-node": "
|
|
12
|
-
"@types/ldapjs": "
|
|
13
|
-
"@types/lokijs": "
|
|
14
|
-
"@types/tedious": "
|
|
15
|
-
"dot-object": "
|
|
16
|
-
"fold-to-ascii": "
|
|
17
|
-
"https-proxy-agent": "
|
|
18
|
-
"hyco-https": "
|
|
19
|
-
"is-in-subnet": "
|
|
20
|
-
"jose": "
|
|
21
|
-
"ldapjs": "
|
|
22
|
-
"lokijs": "
|
|
23
|
-
"mongodb": "
|
|
24
|
-
"node-machine-id": "
|
|
25
|
-
"nodemailer": "
|
|
26
|
-
"saml": "
|
|
27
|
-
"tsx": "
|
|
8
|
+
"@ldapjs/asn1": "^2.0.0",
|
|
9
|
+
"@nats-io/jetstream": "^3.4.0",
|
|
10
|
+
"@nats-io/nats-core": "^3.4.0",
|
|
11
|
+
"@nats-io/transport-node": "^3.4.0",
|
|
12
|
+
"@types/ldapjs": "^3.0.6",
|
|
13
|
+
"@types/lokijs": "^1.5.14",
|
|
14
|
+
"@types/tedious": "^18.0.0",
|
|
15
|
+
"dot-object": "^2.1.5",
|
|
16
|
+
"fold-to-ascii": "^5.0.1",
|
|
17
|
+
"https-proxy-agent": "^9.0.0",
|
|
18
|
+
"hyco-https": "^1.4.5",
|
|
19
|
+
"is-in-subnet": "^4.0.1",
|
|
20
|
+
"jose": "^6.2.3",
|
|
21
|
+
"ldapjs": "^3.0.7",
|
|
22
|
+
"lokijs": "^1.5.12",
|
|
23
|
+
"mongodb": "^7.2.0",
|
|
24
|
+
"node-machine-id": "1.1.12",
|
|
25
|
+
"nodemailer": "^8.0.10",
|
|
26
|
+
"saml": "^4.0.0",
|
|
27
|
+
"tsx": "^4.22.4",
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@stylistic/eslint-plugin": "
|
|
31
|
-
"@types/bun": "
|
|
32
|
-
"@types/dot-object": "
|
|
33
|
-
"@types/node": "
|
|
34
|
-
"@types/nodemailer": "
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "
|
|
36
|
-
"@typescript-eslint/parser": "
|
|
37
|
-
"eslint": "
|
|
30
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
31
|
+
"@types/bun": "^1.3.14",
|
|
32
|
+
"@types/dot-object": "^2.1.6",
|
|
33
|
+
"@types/node": "^25.9.2",
|
|
34
|
+
"@types/nodemailer": "^8.0.0",
|
|
35
|
+
"@typescript-eslint/eslint-plugin": "^8.60.1",
|
|
36
|
+
"@typescript-eslint/parser": "^8.60.1",
|
|
37
|
+
"eslint": "^10.4.1",
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"typescript": "
|
|
40
|
+
"typescript": "^6.0.2",
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
},
|
|
@@ -76,57 +76,57 @@
|
|
|
76
76
|
|
|
77
77
|
"@azure/msal-node": ["@azure/msal-node@3.8.0", "", { "dependencies": { "@azure/msal-common": "15.13.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" } }, "sha512-23BXm82Mp5XnRhrcd4mrHa0xuUNRp96ivu3nRatrfdAqjoeWAGyD0eEAafxAOHAEWWmdlyFK4ELFcdziXyw2sA=="],
|
|
78
78
|
|
|
79
|
-
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.
|
|
79
|
+
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="],
|
|
80
80
|
|
|
81
|
-
"@esbuild/android-arm": ["@esbuild/android-arm@0.
|
|
81
|
+
"@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="],
|
|
82
82
|
|
|
83
|
-
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.
|
|
83
|
+
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="],
|
|
84
84
|
|
|
85
|
-
"@esbuild/android-x64": ["@esbuild/android-x64@0.
|
|
85
|
+
"@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="],
|
|
86
86
|
|
|
87
|
-
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.
|
|
87
|
+
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="],
|
|
88
88
|
|
|
89
|
-
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.
|
|
89
|
+
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="],
|
|
90
90
|
|
|
91
|
-
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.
|
|
91
|
+
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="],
|
|
92
92
|
|
|
93
|
-
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.
|
|
93
|
+
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="],
|
|
94
94
|
|
|
95
|
-
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.
|
|
95
|
+
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="],
|
|
96
96
|
|
|
97
|
-
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.
|
|
97
|
+
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="],
|
|
98
98
|
|
|
99
|
-
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.
|
|
99
|
+
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="],
|
|
100
100
|
|
|
101
|
-
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.
|
|
101
|
+
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="],
|
|
102
102
|
|
|
103
|
-
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.
|
|
103
|
+
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="],
|
|
104
104
|
|
|
105
|
-
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.
|
|
105
|
+
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="],
|
|
106
106
|
|
|
107
|
-
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.
|
|
107
|
+
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="],
|
|
108
108
|
|
|
109
|
-
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.
|
|
109
|
+
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="],
|
|
110
110
|
|
|
111
|
-
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.
|
|
111
|
+
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="],
|
|
112
112
|
|
|
113
|
-
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.
|
|
113
|
+
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="],
|
|
114
114
|
|
|
115
|
-
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.
|
|
115
|
+
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="],
|
|
116
116
|
|
|
117
|
-
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.
|
|
117
|
+
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="],
|
|
118
118
|
|
|
119
|
-
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.
|
|
119
|
+
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="],
|
|
120
120
|
|
|
121
|
-
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.
|
|
121
|
+
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="],
|
|
122
122
|
|
|
123
|
-
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.
|
|
123
|
+
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="],
|
|
124
124
|
|
|
125
|
-
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.
|
|
125
|
+
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="],
|
|
126
126
|
|
|
127
|
-
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.
|
|
127
|
+
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="],
|
|
128
128
|
|
|
129
|
-
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.
|
|
129
|
+
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="],
|
|
130
130
|
|
|
131
131
|
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="],
|
|
132
132
|
|
|
@@ -134,13 +134,13 @@
|
|
|
134
134
|
|
|
135
135
|
"@eslint/config-array": ["@eslint/config-array@0.23.5", "", { "dependencies": { "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" } }, "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA=="],
|
|
136
136
|
|
|
137
|
-
"@eslint/config-helpers": ["@eslint/config-helpers@0.
|
|
137
|
+
"@eslint/config-helpers": ["@eslint/config-helpers@0.6.0", "", { "dependencies": { "@eslint/core": "^1.2.1" } }, "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA=="],
|
|
138
138
|
|
|
139
139
|
"@eslint/core": ["@eslint/core@1.2.1", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ=="],
|
|
140
140
|
|
|
141
141
|
"@eslint/object-schema": ["@eslint/object-schema@3.0.5", "", {}, "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw=="],
|
|
142
142
|
|
|
143
|
-
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.7.
|
|
143
|
+
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.7.2", "", { "dependencies": { "@eslint/core": "^1.2.1", "levn": "^0.4.1" } }, "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A=="],
|
|
144
144
|
|
|
145
145
|
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
|
|
146
146
|
|
|
@@ -170,19 +170,19 @@
|
|
|
170
170
|
|
|
171
171
|
"@mongodb-js/saslprep": ["@mongodb-js/saslprep@1.3.2", "", { "dependencies": { "sparse-bitfield": "^3.0.3" } }, "sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg=="],
|
|
172
172
|
|
|
173
|
-
"@nats-io/jetstream": ["@nats-io/jetstream@3.
|
|
173
|
+
"@nats-io/jetstream": ["@nats-io/jetstream@3.4.0", "", { "dependencies": { "@nats-io/nats-core": "3.4.0" } }, "sha512-GzHQodNJ942+R5LRb8PuZ5ugVWVWMRiufxUYLLVWkXKfwDXYN+Owo0d7L/b9O7BPyrbYD7jQWAC6+ZVuXa9Gyw=="],
|
|
174
174
|
|
|
175
|
-
"@nats-io/nats-core": ["@nats-io/nats-core@3.
|
|
175
|
+
"@nats-io/nats-core": ["@nats-io/nats-core@3.4.0", "", { "dependencies": { "@nats-io/nkeys": "2.0.3", "@nats-io/nuid": "3.0.0" } }, "sha512-QMDM86EUNm+wudlKC67HLar/KHHQUvJGLfb4jbahje3pUk3K9afeck9fwsxBZF0eUFox6T/TA6m/t+lQqf+QsQ=="],
|
|
176
176
|
|
|
177
177
|
"@nats-io/nkeys": ["@nats-io/nkeys@2.0.3", "", { "dependencies": { "tweetnacl": "^1.0.3" } }, "sha512-JVt56GuE6Z89KUkI4TXUbSI9fmIfAmk6PMPknijmuL72GcD+UgIomTcRWiNvvJKxA01sBbmIPStqJs5cMRBC3A=="],
|
|
178
178
|
|
|
179
|
-
"@nats-io/nuid": ["@nats-io/nuid@
|
|
179
|
+
"@nats-io/nuid": ["@nats-io/nuid@3.0.0", "", {}, "sha512-QbXZDrxmYlrn5AD06gYcUTmEHwxn96HBQMIk7XTjDlEcx6FPzVBBPjp4AMRh1lEv6B4iJ6Xb/Uz61JugPXFRQg=="],
|
|
180
180
|
|
|
181
|
-
"@nats-io/transport-node": ["@nats-io/transport-node@3.
|
|
181
|
+
"@nats-io/transport-node": ["@nats-io/transport-node@3.4.0", "", { "dependencies": { "@nats-io/nats-core": "3.4.0", "@nats-io/nkeys": "2.0.3", "@nats-io/nuid": "3.0.0" } }, "sha512-hH7u7ejIBTFEJIZ8rIcMrHJI6wl+HhpO5sVFs1+ppmXa8RuB2+Lh1+UwTzZ5xTNNm1TKcRkYy+2qCV56qp8RxA=="],
|
|
182
182
|
|
|
183
183
|
"@stylistic/eslint-plugin": ["@stylistic/eslint-plugin@5.10.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/types": "^8.56.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "estraverse": "^5.3.0", "picomatch": "^4.0.3" }, "peerDependencies": { "eslint": "^9.0.0 || ^10.0.0" } }, "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ=="],
|
|
184
184
|
|
|
185
|
-
"@types/bun": ["@types/bun@1.3.
|
|
185
|
+
"@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="],
|
|
186
186
|
|
|
187
187
|
"@types/dot-object": ["@types/dot-object@2.1.6", "", {}, "sha512-G1e4SNPOuO72ZXv7wz/W2x29CzQtpxko3G9hBiHqGg/AvFIKoArCs2nbc/WPXnnUkO+1dmvX9WQCyj5gIlAzZg=="],
|
|
188
188
|
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
|
|
197
197
|
"@types/lokijs": ["@types/lokijs@1.5.14", "", {}, "sha512-4Fic47BX3Qxr8pd12KT6/T1XWU8dOlJBIp1jGoMbaDbiEvdv50rAii+B3z1b/J2pvMywcVP+DBPGP5/lgLOKGA=="],
|
|
198
198
|
|
|
199
|
-
"@types/node": ["@types/node@25.
|
|
199
|
+
"@types/node": ["@types/node@25.9.2", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw=="],
|
|
200
200
|
|
|
201
201
|
"@types/nodemailer": ["@types/nodemailer@8.0.0", "", { "dependencies": { "@types/node": "*" } }, "sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA=="],
|
|
202
202
|
|
|
@@ -208,25 +208,25 @@
|
|
|
208
208
|
|
|
209
209
|
"@types/whatwg-url": ["@types/whatwg-url@13.0.0", "", { "dependencies": { "@types/webidl-conversions": "*" } }, "sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q=="],
|
|
210
210
|
|
|
211
|
-
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.
|
|
211
|
+
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.60.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/type-utils": "8.60.1", "@typescript-eslint/utils": "8.60.1", "@typescript-eslint/visitor-keys": "8.60.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.60.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg=="],
|
|
212
212
|
|
|
213
|
-
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.
|
|
213
|
+
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.60.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/types": "8.60.1", "@typescript-eslint/typescript-estree": "8.60.1", "@typescript-eslint/visitor-keys": "8.60.1", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA=="],
|
|
214
214
|
|
|
215
|
-
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.
|
|
215
|
+
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.60.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.60.1", "@typescript-eslint/types": "^8.60.1", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw=="],
|
|
216
216
|
|
|
217
|
-
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.
|
|
217
|
+
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.60.1", "", { "dependencies": { "@typescript-eslint/types": "8.60.1", "@typescript-eslint/visitor-keys": "8.60.1" } }, "sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w=="],
|
|
218
218
|
|
|
219
|
-
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.
|
|
219
|
+
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.60.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA=="],
|
|
220
220
|
|
|
221
|
-
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.
|
|
221
|
+
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.60.1", "", { "dependencies": { "@typescript-eslint/types": "8.60.1", "@typescript-eslint/typescript-estree": "8.60.1", "@typescript-eslint/utils": "8.60.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A=="],
|
|
222
222
|
|
|
223
223
|
"@typescript-eslint/types": ["@typescript-eslint/types@8.56.0", "", {}, "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ=="],
|
|
224
224
|
|
|
225
|
-
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.
|
|
225
|
+
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.60.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.60.1", "@typescript-eslint/tsconfig-utils": "8.60.1", "@typescript-eslint/types": "8.60.1", "@typescript-eslint/visitor-keys": "8.60.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew=="],
|
|
226
226
|
|
|
227
|
-
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.
|
|
227
|
+
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.60.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.60.1", "@typescript-eslint/types": "8.60.1", "@typescript-eslint/typescript-estree": "8.60.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg=="],
|
|
228
228
|
|
|
229
|
-
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.
|
|
229
|
+
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.60.1", "", { "dependencies": { "@typescript-eslint/types": "8.60.1", "eslint-visitor-keys": "^5.0.0" } }, "sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag=="],
|
|
230
230
|
|
|
231
231
|
"@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.1", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww=="],
|
|
232
232
|
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
|
|
269
269
|
"buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="],
|
|
270
270
|
|
|
271
|
-
"bun-types": ["bun-types@1.3.
|
|
271
|
+
"bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="],
|
|
272
272
|
|
|
273
273
|
"bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="],
|
|
274
274
|
|
|
@@ -312,13 +312,13 @@
|
|
|
312
312
|
|
|
313
313
|
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
|
|
314
314
|
|
|
315
|
-
"esbuild": ["esbuild@0.
|
|
315
|
+
"esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="],
|
|
316
316
|
|
|
317
317
|
"escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="],
|
|
318
318
|
|
|
319
319
|
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
|
320
320
|
|
|
321
|
-
"eslint": ["eslint@10.
|
|
321
|
+
"eslint": ["eslint@10.4.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.6.0", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.2.4", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw=="],
|
|
322
322
|
|
|
323
323
|
"eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="],
|
|
324
324
|
|
|
@@ -372,8 +372,6 @@
|
|
|
372
372
|
|
|
373
373
|
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
|
374
374
|
|
|
375
|
-
"get-tsconfig": ["get-tsconfig@4.11.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-sNsqf7XKQ38IawiVGPOoAlqZo1DMrO7TU+ZcZwi7yLl7/7S0JwmoBMKz/IkUPhSoXM0Ng3vT0yB1iCe5XavDeQ=="],
|
|
376
|
-
|
|
377
375
|
"glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="],
|
|
378
376
|
|
|
379
377
|
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
|
|
@@ -432,7 +430,7 @@
|
|
|
432
430
|
|
|
433
431
|
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
|
434
432
|
|
|
435
|
-
"jose": ["jose@6.2.
|
|
433
|
+
"jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="],
|
|
436
434
|
|
|
437
435
|
"js-md4": ["js-md4@0.3.2", "", {}, "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA=="],
|
|
438
436
|
|
|
@@ -480,7 +478,7 @@
|
|
|
480
478
|
|
|
481
479
|
"moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="],
|
|
482
480
|
|
|
483
|
-
"mongodb": ["mongodb@7.
|
|
481
|
+
"mongodb": ["mongodb@7.2.0", "", { "dependencies": { "@mongodb-js/saslprep": "^1.3.0", "bson": "^7.2.0", "mongodb-connection-string-url": "^7.0.0" }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.806.0", "@mongodb-js/zstd": "^7.0.0", "gcp-metadata": "^7.0.1", "kerberos": "^7.0.0", "mongodb-client-encryption": ">=7.0.0 <7.1.0", "snappy": "^7.3.2", "socks": "^2.8.6" }, "optionalPeers": ["@aws-sdk/credential-providers", "@mongodb-js/zstd", "gcp-metadata", "kerberos", "mongodb-client-encryption", "snappy", "socks"] }, "sha512-F/2+BMZtLVhY30ioZp0dAmZ+IRZMBqI+nrv6t5+9/1AIwCa8sMRC3jBf81lpxMhnZgqq8CoUD503Z1oZWq1/sw=="],
|
|
484
482
|
|
|
485
483
|
"mongodb-connection-string-url": ["mongodb-connection-string-url@7.0.0", "", { "dependencies": { "@types/whatwg-url": "^13.0.0", "whatwg-url": "^14.1.0" } }, "sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og=="],
|
|
486
484
|
|
|
@@ -492,7 +490,7 @@
|
|
|
492
490
|
|
|
493
491
|
"node-machine-id": ["node-machine-id@1.1.12", "", {}, "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ=="],
|
|
494
492
|
|
|
495
|
-
"nodemailer": ["nodemailer@8.0.
|
|
493
|
+
"nodemailer": ["nodemailer@8.0.10", "", {}, "sha512-BLFuSth7QtHOkBzyqTehWWyub0NTRDuK2Q2SQfnGLsrJnzyU+Yeh4WpV1eZGuARFj1xQJHIdnTuJZLP+b9R1GQ=="],
|
|
496
494
|
|
|
497
495
|
"once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
|
498
496
|
|
|
@@ -526,8 +524,6 @@
|
|
|
526
524
|
|
|
527
525
|
"readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="],
|
|
528
526
|
|
|
529
|
-
"resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="],
|
|
530
|
-
|
|
531
527
|
"run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="],
|
|
532
528
|
|
|
533
529
|
"safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
|
@@ -562,7 +558,7 @@
|
|
|
562
558
|
|
|
563
559
|
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
564
560
|
|
|
565
|
-
"tsx": ["tsx@4.
|
|
561
|
+
"tsx": ["tsx@4.22.4", "", { "dependencies": { "esbuild": "~0.28.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg=="],
|
|
566
562
|
|
|
567
563
|
"tweetnacl": ["tweetnacl@1.0.3", "", {}, "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="],
|
|
568
564
|
|
|
@@ -570,7 +566,7 @@
|
|
|
570
566
|
|
|
571
567
|
"typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="],
|
|
572
568
|
|
|
573
|
-
"undici-types": ["undici-types@7.
|
|
569
|
+
"undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
|
|
574
570
|
|
|
575
571
|
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
|
|
576
572
|
|
|
@@ -616,26 +612,30 @@
|
|
|
616
612
|
|
|
617
613
|
"@types/ldapjs/@types/node": ["@types/node@24.7.0", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw=="],
|
|
618
614
|
|
|
615
|
+
"@types/nodemailer/@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="],
|
|
616
|
+
|
|
619
617
|
"@types/readable-stream/@types/node": ["@types/node@24.7.0", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw=="],
|
|
620
618
|
|
|
621
|
-
"@typescript-eslint/parser/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
619
|
+
"@typescript-eslint/parser/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
622
620
|
|
|
623
|
-
"@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
621
|
+
"@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
624
622
|
|
|
625
|
-
"@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
623
|
+
"@typescript-eslint/scope-manager/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
626
624
|
|
|
627
|
-
"@typescript-eslint/type-utils/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
625
|
+
"@typescript-eslint/type-utils/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
628
626
|
|
|
629
|
-
"@typescript-eslint/typescript-estree/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
627
|
+
"@typescript-eslint/typescript-estree/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
630
628
|
|
|
631
|
-
"@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
629
|
+
"@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
632
630
|
|
|
633
|
-
"@typescript-eslint/visitor-keys/@typescript-eslint/types": ["@typescript-eslint/types@8.
|
|
631
|
+
"@typescript-eslint/visitor-keys/@typescript-eslint/types": ["@typescript-eslint/types@8.60.1", "", {}, "sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w=="],
|
|
634
632
|
|
|
635
633
|
"@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
|
636
634
|
|
|
637
635
|
"@typespec/ts-http-runtime/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="],
|
|
638
636
|
|
|
637
|
+
"bun-types/@types/node": ["@types/node@25.6.0", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ=="],
|
|
638
|
+
|
|
639
639
|
"eslint/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
|
|
640
640
|
|
|
641
641
|
"eslint/espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="],
|
|
@@ -658,10 +658,14 @@
|
|
|
658
658
|
|
|
659
659
|
"@types/ldapjs/@types/node/undici-types": ["undici-types@7.14.0", "", {}, "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="],
|
|
660
660
|
|
|
661
|
+
"@types/nodemailer/@types/node/undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
|
|
662
|
+
|
|
661
663
|
"@types/readable-stream/@types/node/undici-types": ["undici-types@7.14.0", "", {}, "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA=="],
|
|
662
664
|
|
|
663
665
|
"@typespec/ts-http-runtime/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="],
|
|
664
666
|
|
|
667
|
+
"bun-types/@types/node/undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
|
|
668
|
+
|
|
665
669
|
"eslint/espree/acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="],
|
|
666
670
|
|
|
667
671
|
"glob/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
|
|
@@ -27,16 +27,24 @@
|
|
|
27
27
|
"Microsoft_365_F1":{"displayName":"Microsoft 365 F1","category":"Microsoft 365","licenseCategory":"Paid","isBillable":true,"priceUSD":2.25,"includes":["EXCHANGESTANDARD","SHAREPOINTSTANDARD","MCOSTANDARD","ONEDRIVESTANDARD"],"derivedIncludes":["EXCHANGESTANDARD","SHAREPOINTSTANDARD","MCOSTANDARD","ONEDRIVESTANDARD"]},
|
|
28
28
|
"ENTRA_IDENTITY_PROTECTION":{"displayName":"Microsoft Entra ID Protection","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":["AAD_PREMIUM_P2"],"derivedIncludes":["AAD_PREMIUM_P2","AAD_PREMIUM"]},
|
|
29
29
|
"ENTRA_IDENTITY_GOVERNANCE_STEPUP":{"displayName":"Microsoft Entra ID Governance Step-Up","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":4,"includes":["AAD_PREMIUM_P1"],"derivedIncludes":["AAD_PREMIUM_P1"]},
|
|
30
|
+
"M365_E5_SECURITY":{"displayName":"Microsoft 365 E5 Security","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":12,"includes":["MDE_ADVANCED","DEFENDER_OFFICE_365","IDENTITY_THREAT_PROTECTION","DEFENDER_CLOUD_APPS"],"derivedIncludes":["MDE_ADVANCED","DEFENDER_OFFICE_365","IDENTITY_THREAT_PROTECTION","DEFENDER_CLOUD_APPS"]},
|
|
31
|
+
"M365_E5_COMPLIANCE":{"displayName":"Microsoft 365 E5 Compliance","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":10,"includes":[]},
|
|
30
32
|
"ENTRA_PERMISSIONS_MANAGEMENT":{"displayName":"Microsoft Entra Permissions Management","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":10,"includes":[]},
|
|
33
|
+
"ENTRA_WORKLOAD_ID":{"displayName":"Microsoft Entra Workload ID","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":3,"includes":[]},
|
|
34
|
+
"ENTRA_VERIFIED_ID":{"displayName":"Microsoft Entra Verified ID","category":"Entra","licenseCategory":"Consumption","isBillable":true,"priceUSD":0,"includes":[]},
|
|
31
35
|
"AAD_PREMIUM_P1":{"displayName":"Microsoft Entra ID P1","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":[]},
|
|
32
36
|
"AAD_B2C":{"displayName":"Azure AD B2C","category":"Entra","licenseCategory":"Consumption","isBillable":true,"priceUSD":0,"includes":[]},
|
|
33
37
|
"AAD_BASIC_EDU":{"displayName":"Azure Active Directory Basic (Education)","category":"Entra","licenseCategory":"Free","isBillable":false,"priceUSD":0,"includes":[]},
|
|
34
38
|
"M365_DEFENDER_IDENTITY":{"displayName":"Microsoft 365 Defender for Identity","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":[]},
|
|
39
|
+
"TEAMS_PREMIUM":{"displayName":"Microsoft Teams Premium","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":10,"includes":[]},
|
|
35
40
|
"Microsoft_Teams_EEA_New": { "displayName": "Microsoft Teams EEA New", "category": "Collaboration", "licenseCategory": "Paid", "isBillable": true, "priceUSD": 4.00, "includes": [] },
|
|
41
|
+
"MCOEV_VIRTUALUSER":{"displayName":"Teams Phone Resource Account License","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":0,"includes":[]},
|
|
42
|
+
"TEAMS_AUDIO_CONF":{"displayName":"Microsoft Teams Audio Conferencing","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":4,"includes":[]},
|
|
36
43
|
"POWERAPPS_DEV": { "displayName": "Power Apps Developer Plan", "category": "Power Platform", "licenseCategory": "Free", "isBillable": false, "priceUSD": 0.00, "includes": [] },
|
|
37
44
|
"EXCHANGESTANDARD":{"displayName":"Exchange Online Plan 1","category":"Exchange","licenseCategory":"Paid","isBillable":true,"priceUSD":4,"includes":[]},
|
|
38
45
|
"EXCHANGEENTERPRISE":{"displayName":"Exchange Online Plan 2","category":"Exchange","licenseCategory":"Paid","isBillable":true,"priceUSD":8,"includes":[]},
|
|
39
46
|
"EXCHANGEARCHIVE_ADDON":{"displayName":"Exchange Online Archiving","category":"Exchange","licenseCategory":"Paid","isBillable":true,"priceUSD":3,"includes":[]},
|
|
47
|
+
"EXCHANGE_KIOSK":{"displayName":"Exchange Online Kiosk","category":"Exchange","licenseCategory":"Paid","isBillable":true,"priceUSD":2,"includes":[]},
|
|
40
48
|
"SHAREPOINTSTANDARD":{"displayName":"SharePoint Online Plan 1","category":"SharePoint","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
41
49
|
"SHAREPOINTENTERPRISE":{"displayName":"SharePoint Online Plan 2","category":"SharePoint","licenseCategory":"Paid","isBillable":true,"priceUSD":10,"includes":[]},
|
|
42
50
|
"MCOSTANDARD":{"displayName":"Microsoft Teams","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
@@ -44,6 +52,8 @@
|
|
|
44
52
|
"PHONESYSTEM_VIRTUALUSER":{"displayName":"Microsoft Teams Phone Resource Account","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":0,"includes":[]},
|
|
45
53
|
"MCOPSTN1":{"displayName":"Microsoft Teams Domestic Calling Plan","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":8,"includes":[]},
|
|
46
54
|
"MCOPSTN2":{"displayName":"Microsoft Teams International Calling Plan","category":"Collaboration","licenseCategory":"Paid","isBillable":true,"priceUSD":12,"includes":[]},
|
|
55
|
+
"POWER_AUTOMATE_PER_FLOW":{"displayName":"Power Automate Per Flow","category":"Power Platform","licenseCategory":"Paid","isBillable":true,"priceUSD":100,"includes":[]},
|
|
56
|
+
"POWER_PAGES":{"displayName":"Power Pages","category":"Power Platform","licenseCategory":"Consumption","isBillable":true,"priceUSD":0,"includes":[]},
|
|
47
57
|
"POWER_BI_STANDARD":{"displayName":"Microsoft Fabric (Free)","category":"Power Platform","licenseCategory":"Free","isBillable":false,"priceUSD":0,"includes":[]},
|
|
48
58
|
"POWER_BI_PRO":{"displayName":"Power BI Pro","category":"Power Platform","licenseCategory":"Paid","isBillable":true,"priceUSD":13,"includes":[]},
|
|
49
59
|
"POWERAPPS_PER_USER":{"displayName":"Power Apps Per User","category":"Power Platform","licenseCategory":"Paid","isBillable":true,"priceUSD":10,"includes":[]},
|
|
@@ -58,10 +68,15 @@
|
|
|
58
68
|
"VISIO_P2":{"displayName":"Visio Plan 2","category":"Visio","licenseCategory":"Paid","isBillable":true,"priceUSD":12,"includes":[]},
|
|
59
69
|
"MDE_ADVANCED":{"displayName":"Microsoft Defender for Endpoint","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":8,"includes":[]},
|
|
60
70
|
"DEFENDER_OFFICE_365":{"displayName":"Microsoft Defender for Office 365","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
71
|
+
"DEFENDER_ENDPOINT_P1":{"displayName":"Microsoft Defender for Endpoint Plan 1","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":3,"includes":[]},
|
|
72
|
+
"DEFENDER_ENDPOINT_P2":{"displayName":"Microsoft Defender for Endpoint Plan 2","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
73
|
+
"DEFENDER_IDENTITY_STANDALONE":{"displayName":"Microsoft Defender for Identity (Standalone)","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":[]},
|
|
61
74
|
"IDENTITY_THREAT_PROTECTION":{"displayName":"Microsoft Defender for Identity","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":[]},
|
|
62
75
|
"DEFENDER_CLOUD_APPS":{"displayName":"Microsoft Defender for Cloud Apps","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":7,"includes":[]},
|
|
63
76
|
"M365_COPILOT":{"displayName":"Microsoft 365 Copilot","category":"AI","licenseCategory":"Paid","isBillable":true,"priceUSD":30,"includes":[]},
|
|
64
77
|
"COPILOT_STUDIO":{"displayName":"Copilot Studio","category":"AI","licenseCategory":"Paid","isBillable":true,"priceUSD":20,"includes":[]},
|
|
78
|
+
"GITHUB_COPILOT":{"displayName":"GitHub Copilot Business","category":"AI","licenseCategory":"Paid","isBillable":true,"priceUSD":19,"includes":[]},
|
|
79
|
+
"DYNAMICS_COPILOT":{"displayName":"Dynamics 365 Copilot","category":"AI","licenseCategory":"Paid","isBillable":true,"priceUSD":0,"includes":[]},
|
|
65
80
|
"VIVA_CONNECTIONS":{"displayName":"Microsoft Viva Connections","category":"Viva","licenseCategory":"Paid","isBillable":true,"priceUSD":3,"includes":[]},
|
|
66
81
|
"VIVA_INSIGHTS":{"displayName":"Microsoft Viva Insights","category":"Viva","licenseCategory":"Paid","isBillable":true,"priceUSD":3,"includes":[]},
|
|
67
82
|
"VIVA_LEARNING":{"displayName":"Microsoft Viva Learning","category":"Viva","licenseCategory":"Paid","isBillable":true,"priceUSD":4,"includes":[]},
|
|
@@ -76,6 +91,8 @@
|
|
|
76
91
|
"ENTRA_PRIVATE_ACCESS":{"displayName":"Microsoft Entra Private Access","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":8,"includes":[]},
|
|
77
92
|
"ENTRA_INTERNET_ACCESS":{"displayName":"Microsoft Entra Internet Access","category":"Entra","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
78
93
|
"WINDOWS_STORE":{"displayName":"Microsoft Store for Business","category":"Windows","licenseCategory":"Free","isBillable":false,"priceUSD":0,"includes":[]},
|
|
94
|
+
"WINDOWS_E3":{"displayName":"Windows Enterprise E3","category":"Windows","licenseCategory":"Paid","isBillable":true,"priceUSD":7,"includes":[]},
|
|
95
|
+
"WINDOWS_E5":{"displayName":"Windows Enterprise E5","category":"Windows","licenseCategory":"Paid","isBillable":true,"priceUSD":11,"includes":[]},
|
|
79
96
|
"WIN_DEF_ATP":{"displayName":"Windows Defender ATP","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":5,"includes":[]},
|
|
80
97
|
"RMS_S_ENTERPRISE":{"displayName":"Azure Information Protection Premium P1","category":"Security","licenseCategory":"Paid","isBillable":true,"priceUSD":6,"includes":[]},
|
|
81
98
|
"INTUNE_A":{"displayName":"Microsoft Intune","category":"Device Management","licenseCategory":"Paid","isBillable":true,"priceUSD":8,"includes":[]},
|
package/lib/helper-rest.ts
CHANGED
|
@@ -59,6 +59,35 @@ export class HelperRest {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
+
|
|
63
|
+
;(async () => {
|
|
64
|
+
// housekeeping - odata pagination
|
|
65
|
+
while (true) {
|
|
66
|
+
await new Promise(resolve => setTimeout(resolve, 5 * 60 * 1000)) // 5 minutes
|
|
67
|
+
for (const baseEntity in this.config_entity) {
|
|
68
|
+
if (!this._serviceClient[baseEntity]?.index) continue
|
|
69
|
+
for (const index in this._serviceClient[baseEntity].index) {
|
|
70
|
+
const parsed = parseInt(index, 10)
|
|
71
|
+
if (Number.isNaN(parsed)) continue
|
|
72
|
+
if (Object.keys(this._serviceClient[baseEntity].index[parsed]).length === 0) {
|
|
73
|
+
delete this._serviceClient[baseEntity].index[parsed]
|
|
74
|
+
continue
|
|
75
|
+
}
|
|
76
|
+
for (const optionsUrl in this._serviceClient[baseEntity].index[parsed]) {
|
|
77
|
+
const validTo = this._serviceClient[baseEntity].index[parsed][optionsUrl].validTo
|
|
78
|
+
if (Number.isNaN(validTo)) {
|
|
79
|
+
delete this._serviceClient[baseEntity].index[parsed][optionsUrl]
|
|
80
|
+
continue
|
|
81
|
+
}
|
|
82
|
+
const now = Math.floor(Date.now() / 1000)
|
|
83
|
+
if (now > validTo) {
|
|
84
|
+
delete this._serviceClient[baseEntity].index[parsed][optionsUrl]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})()
|
|
62
91
|
}
|
|
63
92
|
|
|
64
93
|
/**
|
|
@@ -659,28 +688,25 @@ export class HelperRest {
|
|
|
659
688
|
options.body = dataString
|
|
660
689
|
} else if (options.headers) delete options.headers['Content-Type']
|
|
661
690
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
ctx.paging.startIndex = 1 // caller should check and return this new startIndex in final response
|
|
676
|
-
delete this._serviceClient[baseEntity].nextLink[options.url]
|
|
677
|
-
}
|
|
691
|
+
const optionsUrl = options.url
|
|
692
|
+
const startIndex: number = ctx?.paging?.startIndex || 0
|
|
693
|
+
if (startIndex > 1) {
|
|
694
|
+
if (this._serviceClient[baseEntity].index && this._serviceClient[baseEntity].index[startIndex]
|
|
695
|
+
&& this._serviceClient[baseEntity].index[startIndex][optionsUrl] && this._serviceClient[baseEntity].index[startIndex][optionsUrl].nextLink) {
|
|
696
|
+
options.url = this._serviceClient[baseEntity].index[startIndex][optionsUrl].nextLink
|
|
697
|
+
} else {
|
|
698
|
+
let max = 0
|
|
699
|
+
for (const key in this._serviceClient[baseEntity].index) {
|
|
700
|
+
const parsed = parseInt(key, 10)
|
|
701
|
+
if (Number.isNaN(parsed)) continue
|
|
702
|
+
if (!this._serviceClient[baseEntity].index[parsed][optionsUrl]?.totalResults) continue
|
|
703
|
+
if (parsed > max) max = parsed
|
|
678
704
|
}
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
705
|
+
if (max > 0) {
|
|
706
|
+
ctx.paging.totalResults = this._serviceClient[baseEntity].index[max][optionsUrl].totalResults
|
|
707
|
+
if (startIndex > ctx.paging.totalResults) return { body: { value: [] } }
|
|
708
|
+
}
|
|
709
|
+
throw new Error(`Strict sequencing is required; startIndex=${ctx.paging.startIndex} is not the expected value.`)
|
|
684
710
|
}
|
|
685
711
|
}
|
|
686
712
|
|
|
@@ -721,38 +747,56 @@ export class HelperRest {
|
|
|
721
747
|
// if (!ctx) ctx = { paging }
|
|
722
748
|
// else ctx.paging = paging
|
|
723
749
|
if (result.body && typeof result.body === 'object') {
|
|
724
|
-
if (result.body['@odata.nextLink']) { // {"@odata.nextLink": "https://graph.microsoft.com/
|
|
750
|
+
if (result.body['@odata.nextLink']) { // {"@odata.nextLink": "https://graph.microsoft.com/beta/users?$top=100&$skiptoken=xxx"}
|
|
725
751
|
if (!ctx) ctx = {}
|
|
726
752
|
if (!ctx.paging) ctx.paging = {}
|
|
727
|
-
const nextLinkBase = decodeURIComponent(result.body['@odata.nextLink'].substring(0, result.body['@odata.nextLink'].indexOf('$skiptoken') - 1))
|
|
728
753
|
const count = result.body['@odata.count']
|
|
729
754
|
if (count !== undefined) {
|
|
730
755
|
ctx.paging.totalResults = count
|
|
731
756
|
}
|
|
732
|
-
let totalResults = ctx.paging.totalResults
|
|
733
|
-
if (!totalResults) totalResults = (this._serviceClient[baseEntity].nextLink[nextLinkBase]?.totalResults)
|
|
734
|
-
let isCount = this._serviceClient[baseEntity].nextLink[nextLinkBase]?.isCount || count !== undefined
|
|
735
757
|
const itemsPerPage = result.body.value.length
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
this._serviceClient[baseEntity].
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
758
|
+
const nextStartIndex = ctx.paging.startIndex ? ctx.paging.startIndex + itemsPerPage : itemsPerPage + 1
|
|
759
|
+
let totalResults = ctx.paging.totalResults
|
|
760
|
+
if (ctx.paging.startIndex && this._serviceClient[baseEntity].index && this._serviceClient[baseEntity].index[ctx.paging.startIndex]) {
|
|
761
|
+
if (this._serviceClient[baseEntity].index[ctx.paging.startIndex][optionsUrl]) {
|
|
762
|
+
if (!totalResults) totalResults = this._serviceClient[baseEntity].index[ctx.paging.startIndex][optionsUrl].totalResults
|
|
763
|
+
}
|
|
764
|
+
delete this._serviceClient[baseEntity].index[ctx.paging.startIndex] // could consider not to delte prior and let houskeeping do the cleanup
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
if (!this._serviceClient[baseEntity].index) this._serviceClient[baseEntity].index = {}
|
|
768
|
+
if (!this._serviceClient[baseEntity].index[nextStartIndex]) this._serviceClient[baseEntity].index[nextStartIndex] = {}
|
|
769
|
+
if (!this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl]) this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl] = {}
|
|
770
|
+
this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl].nextLink = result.body['@odata.nextLink']
|
|
771
|
+
ctx.paging.nextLink = result.body['@odata.nextLink'] // gives client option to auto-paginate without using startIndex
|
|
772
|
+
if (ctx.paging.nextLink.startsWith(this._serviceClient[baseEntity].baseUrl)) {
|
|
773
|
+
ctx.paging.nextLink = ctx.paging.nextLink.slice(this._serviceClient[baseEntity].baseUrl.length)
|
|
774
|
+
if (!ctx.paging.nextLink.startsWith('/')) ctx.paging.nextLink = '/' + ctx.paging.nextLink
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
if (count) {
|
|
778
|
+
this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl].totalResults = totalResults // count=true ignored when using nextLink
|
|
742
779
|
ctx.paging.totalResults = totalResults
|
|
743
780
|
} else {
|
|
744
781
|
const totalResults = ctx.paging.startIndex - 1 + (itemsPerPage * 2) // ensure new client paging
|
|
745
|
-
this._serviceClient[baseEntity].
|
|
782
|
+
this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl].totalResults = totalResults
|
|
746
783
|
ctx.paging.totalResults = totalResults
|
|
747
784
|
}
|
|
785
|
+
const d = Math.floor((Date.now() + 5 * 60 * 1000) / 1000)// now + 5 minutes
|
|
786
|
+
this._serviceClient[baseEntity].index[nextStartIndex][optionsUrl].validTo = d
|
|
748
787
|
} else { // no more paging
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
if (
|
|
788
|
+
if (ctx?.paging) {
|
|
789
|
+
if (ctx.paging.nextLink) delete ctx.paging.nextLink
|
|
790
|
+
if (ctx.paging.startIndex) {
|
|
752
791
|
const itemsPerPage = result.body.value.length
|
|
753
792
|
const totalResults = ctx.paging.startIndex - 1 + itemsPerPage
|
|
754
|
-
this._serviceClient[baseEntity].
|
|
755
|
-
|
|
793
|
+
if (this._serviceClient[baseEntity].index && this._serviceClient[baseEntity].index[ctx.paging.startIndex] && this._serviceClient[baseEntity].index[ctx.paging.startIndex][optionsUrl]) {
|
|
794
|
+
// keeping the last one with updated totalResults to catch startIndex > totalResults, houskeeping will clean up after 5 minutes
|
|
795
|
+
this._serviceClient[baseEntity].index[ctx.paging.startIndex][optionsUrl].totalResults = totalResults // update the last one with correct totalResults
|
|
796
|
+
ctx.paging.totalResults = totalResults
|
|
797
|
+
const d = Math.floor((Date.now() + 5 * 60 * 1000) / 1000)
|
|
798
|
+
this._serviceClient[baseEntity].index[ctx.paging.startIndex][optionsUrl].validTo = d
|
|
799
|
+
}
|
|
756
800
|
}
|
|
757
801
|
}
|
|
758
802
|
}
|
|
@@ -769,12 +813,6 @@ export class HelperRest {
|
|
|
769
813
|
if (!retryAfter) retryAfter = 60
|
|
770
814
|
}
|
|
771
815
|
|
|
772
|
-
if (retryAfter) {
|
|
773
|
-
this.scimgateway.logDebug(baseEntity, `doRequest ${method} ${path} throttle/ratelimit error - awaiting ${retryAfter} seconds before automatic retry`)
|
|
774
|
-
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000))
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
if (!retryCount) retryCount = 0
|
|
778
816
|
let urlObj
|
|
779
817
|
try { urlObj = new URL(path) } catch (err) { void 0 }
|
|
780
818
|
let isServiceClient = !urlObj && this._serviceClient[baseEntity] && !this.lock.isLocked() // !isLocked to avoid retry ongoing doRequest with failing getAccessToken()
|
|
@@ -782,12 +820,25 @@ export class HelperRest {
|
|
|
782
820
|
|
|
783
821
|
if (isServiceClient && (err.code === 'ECONNREFUSED' || err.code === 'ENOTFOUND' || err.code === 'ABORT_ERR' || err.code === 'ETIMEDOUT' || statusCode === 504 || oAuthTokeErr || retryAfter)) {
|
|
784
822
|
this.scimgateway.logDebug(baseEntity, `doRequest ${method} ${path} Body = ${JSON.stringify(body)} Error Response = ${err.message}`)
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
823
|
+
|
|
824
|
+
let maxRetry = connectionObj.baseUrls.length
|
|
825
|
+
if (!retryCount) retryCount = 0
|
|
826
|
+
if (retryAfter) {
|
|
827
|
+
const delta = retryCount - maxRetry
|
|
828
|
+
if (delta >= 0 && delta < 2) maxRetry += delta + 1 // allow 3 retry for the same initial throttle
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
if (retryCount < maxRetry) {
|
|
832
|
+
if (retryAfter) {
|
|
833
|
+
this.scimgateway.logDebug(baseEntity, `doRequest ${method} ${path} throttle/ratelimit error - awaiting ${retryAfter} seconds before automatic retry`)
|
|
834
|
+
await new Promise(resolve => setTimeout(resolve, retryAfter * 1000))
|
|
790
835
|
}
|
|
836
|
+
const index = retryCount < connectionObj.baseUrls.length ? retryCount : connectionObj.baseUrls.length - 1
|
|
837
|
+
retryCount++
|
|
838
|
+
|
|
839
|
+
this.updateServiceClient(baseEntity, { baseUrl: connectionObj.baseUrls[index] })
|
|
840
|
+
this.scimgateway.logDebug(baseEntity, `${(connectionObj.baseUrls.length > 1) ? 'failover ' : ''}retry[${retryCount}] using baseUrl = ${this._serviceClient[baseEntity].baseUrl}`)
|
|
841
|
+
|
|
791
842
|
if (oAuthTokeErr) {
|
|
792
843
|
delete this._serviceClient[baseEntity] // ensure new getAccessToken request - token used should not have been expired, but rejected for other reason e.g. token server restart and no persistent token store?
|
|
793
844
|
}
|
|
@@ -868,7 +919,7 @@ export class HelperRest {
|
|
|
868
919
|
* {
|
|
869
920
|
* "type": "oauth",
|
|
870
921
|
* "options": {
|
|
871
|
-
* "azureTenantId": "<Entra ID azureTenantId", // Entra ID authentication - if baseUrls not defined, baseUrls automatically set to [https://graph.microsoft.com/
|
|
922
|
+
* "azureTenantId": "<Entra ID azureTenantId", // Entra ID authentication - if baseUrls not defined, baseUrls automatically set to [https://graph.microsoft.com/beta]
|
|
872
923
|
* "tokenUrl": "<tokenUrl>", // must be set if not using azureTenantId
|
|
873
924
|
* "clientId": "<clientId>",
|
|
874
925
|
* "clientSecret": "<clientSecret>"
|
|
@@ -927,7 +978,7 @@ export class HelperRest {
|
|
|
927
978
|
* {
|
|
928
979
|
* "type": "oauthJwtBearer",
|
|
929
980
|
* "options": {
|
|
930
|
-
* "azureTenantId": "<Entra ID azureTenantId", // Entra ID authentication, if baseUrls not defined, baseUrls automatically set to [https://graph.microsoft.com/
|
|
981
|
+
* "azureTenantId": "<Entra ID azureTenantId", // Entra ID authentication, if baseUrls not defined, baseUrls automatically set to [https://graph.microsoft.com/beta]
|
|
931
982
|
* "clientId": "<clientId>",
|
|
932
983
|
* "tls": { // files located in ./config/certs
|
|
933
984
|
* "key": "key.pem",
|
package/lib/plugin-entra-id.ts
CHANGED
|
@@ -84,7 +84,6 @@ scimgateway.authPassThroughAllowed = false
|
|
|
84
84
|
scimgateway.pluginAndOrFilterEnabled = true
|
|
85
85
|
// end - mandatory plugin initialization
|
|
86
86
|
|
|
87
|
-
const newHelper = new HelperRest(scimgateway)
|
|
88
87
|
const entitlementsByValues: Record<string, any> = {}
|
|
89
88
|
const rolesByValues: Record<string, any> = {}
|
|
90
89
|
const rolesAssignments: Record<string, any> = {}
|
|
@@ -941,15 +940,14 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
941
940
|
if (getObj.operator === 'eq' && ['id', 'displayName', 'externalId'].includes(getObj.attribute)) {
|
|
942
941
|
// mandatory - unique filtering - single unique user to be returned - correspond to getUser() in versions < 4.x.x
|
|
943
942
|
if (getObj.attribute === 'id') {
|
|
944
|
-
|
|
945
|
-
else path = `/groups/${getObj.value}?$select=${attrs.join()}`
|
|
943
|
+
path = `/groups/${getObj.value}?$select=${attrs.join()}`
|
|
946
944
|
} else {
|
|
947
|
-
|
|
948
|
-
else path = `/groups?$filter=${getObj.attribute} eq '${getObj.value}'&$select=${attrs.join()}`
|
|
945
|
+
path = `/groups?$filter=${getObj.attribute} eq '${getObj.value}'&$select=${attrs.join()}`
|
|
949
946
|
}
|
|
950
947
|
} else if (isUserMemberOf) {
|
|
951
948
|
// mandatory - return all groups the user 'id' (getObj.value) is member of - correspond to getGroupMembers() in versions < 4.x.x
|
|
952
949
|
// Resources = [{ id: <id-group>> , displayName: <displayName-group>, members [{value: <id-user>}] }]
|
|
950
|
+
includeMembers = false
|
|
953
951
|
path = `/users/${getObj.value}/transitiveMemberOf/microsoft.graph.group?$top=${getObj.count}&$count=true&$select=id,displayName`
|
|
954
952
|
} else {
|
|
955
953
|
// optional - simpel filtering
|
|
@@ -961,8 +959,7 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
961
959
|
throw new Error(`${action} error: not supporting advanced filtering: ${getObj.rawFilter}`)
|
|
962
960
|
} else {
|
|
963
961
|
// mandatory - no filtering (!getObj.operator && !getObj.rawFilter) - all groups to be returned - correspond to exploreGroups() in versions < 4.x.x
|
|
964
|
-
|
|
965
|
-
else path = `/groups?$top=${getObj.count}&$count=true&$select=${attrs.join()}`
|
|
962
|
+
path = `/groups?$top=${getObj.count}&$count=true&$select=${attrs.join()}`
|
|
966
963
|
}
|
|
967
964
|
if (getObj.and || getObj.or) {
|
|
968
965
|
// plugin have enabled 'scimgateway.pluginAndOrFilterEnabled' and the query includes an additonal and/or getObj that must to be handled and combined with the initial getObj
|
|
@@ -984,7 +981,7 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
984
981
|
if (!ctx) ctx = { paging }
|
|
985
982
|
else ctx.paging = paging
|
|
986
983
|
|
|
987
|
-
const newCtx = {
|
|
984
|
+
const newCtx: Record<string, any> = ctx?.headers ? { headers: ctx?.headers } : {}
|
|
988
985
|
newCtx.paging = { startIndex: 1 }
|
|
989
986
|
|
|
990
987
|
try {
|
|
@@ -993,11 +990,11 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
993
990
|
if (!isUserMemberOf) response = await helper.doRequest(baseEntity, method, path, body, ctx, options)
|
|
994
991
|
else {
|
|
995
992
|
// request both the default transitiveMemberOf (includes nested groups) and memberOf because we want to distinguish SCIM type=direct/indirect
|
|
996
|
-
|
|
993
|
+
let pathMemberOf = `/users/${getObj.value}/memberOf/microsoft.graph.group?$count=true&$select=id,displayName`
|
|
997
994
|
const allErrors: string[] = []
|
|
998
995
|
const results = await Promise.allSettled([
|
|
999
996
|
helper.doRequest(baseEntity, method, path, body, ctx, options),
|
|
1000
|
-
|
|
997
|
+
helper.doRequest(baseEntity, method, pathMemberOf, body, newCtx, options),
|
|
1001
998
|
])
|
|
1002
999
|
const errors = results
|
|
1003
1000
|
.filter(r => r.status === 'rejected')
|
|
@@ -1010,30 +1007,23 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
1010
1007
|
}
|
|
1011
1008
|
|
|
1012
1009
|
response = (results[0] as PromiseFulfilledResult<any>).value // includes all groups (also nested)
|
|
1013
|
-
responseMemberOf = (results[1] as PromiseFulfilledResult<any>).value //
|
|
1014
|
-
|
|
1015
|
-
let nextStartIndex = scimgateway.getNextStartIndex(responseMemberOf.body.value.length * 2, newCtx.paging.startIndex, responseMemberOf.body.value.length)
|
|
1016
|
-
if (nextStartIndex > newCtx.paging.startIndex && responseMemberOf && responseMemberOf.body.value && Array.isArray(responseMemberOf.body.value)) {
|
|
1017
|
-
// use paging to ensure responseMemberOf is complete
|
|
1018
|
-
let totalResults = responseMemberOf.body.value.length
|
|
1019
|
-
let startIndex = 1
|
|
1010
|
+
responseMemberOf = (results[1] as PromiseFulfilledResult<any>).value // does not include nested groups
|
|
1011
|
+
while (newCtx.paging.nextLink) {
|
|
1020
1012
|
let res: any
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
responseMemberOf.body.value.push(res.body.value[i])
|
|
1034
|
-
}
|
|
1013
|
+
pathMemberOf = newCtx.paging.nextLink
|
|
1014
|
+
delete newCtx.paging.nextLink
|
|
1015
|
+
try {
|
|
1016
|
+
res = await helper.doRequest(baseEntity, method, pathMemberOf, body, newCtx, options)
|
|
1017
|
+
} catch (err: any) {
|
|
1018
|
+
delete newCtx.paging.nextLink
|
|
1019
|
+
break
|
|
1020
|
+
}
|
|
1021
|
+
if (res?.body && res.body.value && Array.isArray(res.body.value) && res.body.value.length > 0) {
|
|
1022
|
+
for (let i = 0; i < res.body.value.length; i++) {
|
|
1023
|
+
if (!res.body.value[i].id) continue
|
|
1024
|
+
responseMemberOf.body.value.push(res.body.value[i])
|
|
1035
1025
|
}
|
|
1036
|
-
}
|
|
1026
|
+
}
|
|
1037
1027
|
}
|
|
1038
1028
|
|
|
1039
1029
|
if (response.body && response.body.value && Array.isArray(response.body.value)) {
|
|
@@ -1047,6 +1037,7 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
1047
1037
|
})
|
|
1048
1038
|
}
|
|
1049
1039
|
}
|
|
1040
|
+
|
|
1050
1041
|
if (!response.body) {
|
|
1051
1042
|
throw new Error(`invalid response: ${JSON.stringify(response)}`)
|
|
1052
1043
|
}
|
|
@@ -1056,6 +1047,22 @@ scimgateway.getGroups = async (baseEntity, getObj, attributes, ctx) => {
|
|
|
1056
1047
|
}
|
|
1057
1048
|
|
|
1058
1049
|
for (let i = 0; i < response.body.value.length; ++i) {
|
|
1050
|
+
if (includeMembers) {
|
|
1051
|
+
const id = response.body.value[i].id
|
|
1052
|
+
if (!id) break
|
|
1053
|
+
let path = `/groups/${id}/members?$select=id,displayName`
|
|
1054
|
+
const newCtx: Record<string, any> = ctx?.headers ? { headers: ctx?.headers } : {}
|
|
1055
|
+
newCtx.paging = { startIndex: 1 }
|
|
1056
|
+
const r = await helper.doRequest(baseEntity, 'GET', path, null, newCtx, options)
|
|
1057
|
+
response.body.value[i].members = r.body?.value || []
|
|
1058
|
+
while (newCtx.paging.nextLink) {
|
|
1059
|
+
const path = newCtx.paging.nextLink
|
|
1060
|
+
delete newCtx.paging.nextLink
|
|
1061
|
+
const r = await helper.doRequest(baseEntity, 'GET', path, null, newCtx, options)
|
|
1062
|
+
response.body.value[i].members.push(...r.body?.value || [])
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1059
1066
|
let members: any
|
|
1060
1067
|
if (response.body.value[i].members) {
|
|
1061
1068
|
members = response.body.value[i].members.reduce((acc: any[], el: Record<string, any>) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scimgateway",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Using SCIM protocol as a gateway for user provisioning to other endpoints",
|
|
6
6
|
"author": "Jarle Elshaug <jarle.elshaug@gmail.com> (https://elshaug.xyz)",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@ldapjs/asn1": "^2.0.0",
|
|
39
|
-
"@nats-io/jetstream": "^3.
|
|
40
|
-
"@nats-io/nats-core": "^3.
|
|
41
|
-
"@nats-io/transport-node": "^3.
|
|
39
|
+
"@nats-io/jetstream": "^3.4.0",
|
|
40
|
+
"@nats-io/nats-core": "^3.4.0",
|
|
41
|
+
"@nats-io/transport-node": "^3.4.0",
|
|
42
42
|
"@types/ldapjs": "^3.0.6",
|
|
43
43
|
"@types/lokijs": "^1.5.14",
|
|
44
44
|
"@types/tedious": "^18.0.0",
|
|
@@ -47,26 +47,26 @@
|
|
|
47
47
|
"https-proxy-agent": "^9.0.0",
|
|
48
48
|
"hyco-https": "^1.4.5",
|
|
49
49
|
"is-in-subnet": "^4.0.1",
|
|
50
|
-
"jose": "^6.2.
|
|
50
|
+
"jose": "^6.2.3",
|
|
51
51
|
"ldapjs": "^3.0.7",
|
|
52
52
|
"lokijs": "^1.5.12",
|
|
53
|
-
"mongodb": "^7.
|
|
53
|
+
"mongodb": "^7.2.0",
|
|
54
54
|
"node-machine-id": "1.1.12",
|
|
55
|
-
"nodemailer": "^8.0.
|
|
55
|
+
"nodemailer": "^8.0.10",
|
|
56
56
|
"saml": "^4.0.0",
|
|
57
|
-
"tsx": "^4.
|
|
57
|
+
"tsx": "^4.22.4"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"typescript": "^6.0.2"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
64
|
-
"@types/bun": "^1.3.
|
|
64
|
+
"@types/bun": "^1.3.14",
|
|
65
65
|
"@types/dot-object": "^2.1.6",
|
|
66
|
-
"@types/node": "^25.
|
|
66
|
+
"@types/node": "^25.9.2",
|
|
67
67
|
"@types/nodemailer": "^8.0.0",
|
|
68
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
69
|
-
"@typescript-eslint/parser": "^8.
|
|
70
|
-
"eslint": "^10.
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.60.1",
|
|
69
|
+
"@typescript-eslint/parser": "^8.60.1",
|
|
70
|
+
"eslint": "^10.4.1"
|
|
71
71
|
}
|
|
72
72
|
}
|