@webiny/api-core 6.5.0-beta.1 → 6.5.0-beta.11
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/ApiCoreFeature.js +4 -0
- package/ApiCoreFeature.js.map +1 -1
- package/createApiCore.d.ts +1 -1
- package/createApiCore.js +3 -1
- package/createApiCore.js.map +1 -1
- package/features/ai/Ai.js +16 -6
- package/features/ai/Ai.js.map +1 -1
- package/features/ai/AiModelRegistry.d.ts +3 -1
- package/features/ai/AiModelRegistry.js +16 -7
- package/features/ai/AiModelRegistry.js.map +1 -1
- package/features/ai/DEVELOPERS.md +69 -12
- package/features/ai/OpenRouterSdkFactory.d.ts +10 -0
- package/features/ai/OpenRouterSdkFactory.js +112 -0
- package/features/ai/OpenRouterSdkFactory.js.map +1 -0
- package/features/ai/RemoteAiModelCatalog.d.ts +13 -0
- package/features/ai/RemoteAiModelCatalog.js +74 -0
- package/features/ai/RemoteAiModelCatalog.js.map +1 -0
- package/features/ai/abstractions.d.ts +25 -0
- package/features/ai/abstractions.js +2 -1
- package/features/ai/abstractions.js.map +1 -1
- package/features/ai/feature.js +4 -0
- package/features/ai/feature.js.map +1 -1
- package/features/ai/index.d.ts +2 -2
- package/features/ai/index.js +1 -1
- package/features/debugger/Debugger.d.ts +23 -0
- package/features/debugger/Debugger.js +134 -0
- package/features/debugger/Debugger.js.map +1 -0
- package/features/debugger/GraphQLDebuggerTransport.d.ts +26 -0
- package/features/debugger/GraphQLDebuggerTransport.js +45 -0
- package/features/debugger/GraphQLDebuggerTransport.js.map +1 -0
- package/features/debugger/__tests__/matchNamespace.test.d.ts +1 -0
- package/features/debugger/__tests__/matchNamespace.test.js +67 -0
- package/features/debugger/__tests__/matchNamespace.test.js.map +1 -0
- package/features/debugger/__tests__/serialize.test.d.ts +1 -0
- package/features/debugger/__tests__/serialize.test.js +220 -0
- package/features/debugger/__tests__/serialize.test.js.map +1 -0
- package/features/debugger/abstractions.d.ts +100 -0
- package/features/debugger/abstractions.js +6 -0
- package/features/debugger/abstractions.js.map +1 -0
- package/features/debugger/feature.d.ts +5 -0
- package/features/debugger/feature.js +15 -0
- package/features/debugger/feature.js.map +1 -0
- package/features/debugger/index.d.ts +7 -0
- package/features/debugger/index.js +7 -0
- package/features/debugger/limits.d.ts +18 -0
- package/features/debugger/limits.js +11 -0
- package/features/debugger/limits.js.map +1 -0
- package/features/debugger/matchNamespace.d.ts +21 -0
- package/features/debugger/matchNamespace.js +48 -0
- package/features/debugger/matchNamespace.js.map +1 -0
- package/features/debugger/permissions.d.ts +33 -0
- package/features/debugger/permissions.js +12 -0
- package/features/debugger/permissions.js.map +1 -0
- package/features/debugger/permissionsSchema.d.ts +17 -0
- package/features/debugger/permissionsSchema.js +18 -0
- package/features/debugger/permissionsSchema.js.map +1 -0
- package/features/debugger/plugins.d.ts +4 -0
- package/features/debugger/plugins.js +82 -0
- package/features/debugger/plugins.js.map +1 -0
- package/features/debugger/serialize.d.ts +11 -0
- package/features/debugger/serialize.js +121 -0
- package/features/debugger/serialize.js.map +1 -0
- package/features/httpClient/HttpClient.d.ts +7 -0
- package/features/httpClient/HttpClient.js +72 -0
- package/features/httpClient/HttpClient.js.map +1 -0
- package/features/httpClient/HttpRequestError.d.ts +10 -0
- package/features/httpClient/HttpRequestError.js +13 -0
- package/features/httpClient/HttpRequestError.js.map +1 -0
- package/features/httpClient/HttpStatusError.d.ts +12 -0
- package/features/httpClient/HttpStatusError.js +12 -0
- package/features/httpClient/HttpStatusError.js.map +1 -0
- package/features/httpClient/abstractions.d.ts +32 -0
- package/features/httpClient/abstractions.js +5 -0
- package/features/httpClient/abstractions.js.map +1 -0
- package/features/httpClient/feature.d.ts +4 -0
- package/features/httpClient/feature.js +11 -0
- package/features/httpClient/feature.js.map +1 -0
- package/features/httpClient/index.d.ts +3 -0
- package/features/httpClient/index.js +3 -0
- package/features/users/shared/loaders.js.map +1 -1
- package/graphql/wcp/graphql.js +2 -0
- package/graphql/wcp/graphql.js.map +1 -1
- package/idp/JwksCache.d.ts +7 -2
- package/idp/JwksCache.js +43 -16
- package/idp/JwksCache.js.map +1 -1
- package/idp/feature.js +1 -2
- package/idp/feature.js.map +1 -1
- package/legacy/security/plugins/secureHeaders.js +1 -0
- package/legacy/security/plugins/secureHeaders.js.map +1 -1
- package/package.json +25 -24
package/idp/JwksCache.js
CHANGED
|
@@ -1,26 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { HttpClient } from "../features/httpClient/index.js";
|
|
4
|
+
import { JwkCache } from "./abstractions.js";
|
|
5
|
+
const oidcConfigurationSchema = z.object({
|
|
6
|
+
jwks_uri: z.string()
|
|
7
|
+
});
|
|
8
|
+
const jwksSchema = z.object({
|
|
9
|
+
keys: z.array(z.looseObject({
|
|
10
|
+
kid: z.string().optional()
|
|
11
|
+
}))
|
|
12
|
+
});
|
|
13
|
+
function getOpenidConfigurationUrl(issuer) {
|
|
14
|
+
const openidUrl = new URL(issuer);
|
|
15
|
+
const pathname = openidUrl.pathname + "/.well-known/openid-configuration";
|
|
16
|
+
openidUrl.pathname = pathname.replace(/\/+/g, "/");
|
|
17
|
+
return openidUrl.toString();
|
|
18
|
+
}
|
|
19
|
+
class JwksCacheImpl {
|
|
20
|
+
constructor(httpClient){
|
|
21
|
+
this.httpClient = httpClient;
|
|
22
|
+
this.cache = new Map();
|
|
23
|
+
}
|
|
2
24
|
async getKeys(issuer) {
|
|
3
25
|
const cached = this.cache.get(issuer);
|
|
4
|
-
if (cached) return cached
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const oidcConfig = await fetch(openidUrl.toString()).then((res)=>res.json());
|
|
9
|
-
const jwksResponse = await fetch(oidcConfig.jwks_uri).then((res)=>res.json());
|
|
26
|
+
if (cached) return cached;
|
|
27
|
+
const openidConfigurationUrl = getOpenidConfigurationUrl(issuer);
|
|
28
|
+
const oidcConfig = await this.fetchJson(openidConfigurationUrl, oidcConfigurationSchema);
|
|
29
|
+
const jwksResponse = await this.fetchJson(oidcConfig.jwks_uri, jwksSchema);
|
|
10
30
|
const jwks = jwksResponse.keys;
|
|
11
|
-
this.cache.set(issuer,
|
|
12
|
-
oidcConfig,
|
|
13
|
-
jwks
|
|
14
|
-
});
|
|
31
|
+
this.cache.set(issuer, jwks);
|
|
15
32
|
return jwks;
|
|
16
33
|
}
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
async fetchJson(url, schema) {
|
|
35
|
+
const response = await this.httpClient.requestJson({
|
|
36
|
+
url
|
|
37
|
+
});
|
|
38
|
+
if (response.isFail()) throw response.error;
|
|
39
|
+
const result = schema.safeParse(response.value);
|
|
40
|
+
if (!result.success) throw new Error(`Invalid response from "${url}": ${result.error.message}`);
|
|
41
|
+
return result.data;
|
|
22
42
|
}
|
|
23
43
|
}
|
|
44
|
+
const JwksCache = createImplementation({
|
|
45
|
+
abstraction: JwkCache,
|
|
46
|
+
implementation: JwksCacheImpl,
|
|
47
|
+
dependencies: [
|
|
48
|
+
HttpClient
|
|
49
|
+
]
|
|
50
|
+
});
|
|
24
51
|
export { JwksCache };
|
|
25
52
|
|
|
26
53
|
//# sourceMappingURL=JwksCache.js.map
|
package/idp/JwksCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idp/JwksCache.js","sources":["../../src/idp/JwksCache.ts"],"sourcesContent":["import type { Jwk } from \"~/features/security/utils/verifyJwtUsingJwk.js\";\nimport { JwkCache } from \"./abstractions.js\";\n\
|
|
1
|
+
{"version":3,"file":"idp/JwksCache.js","sources":["../../src/idp/JwksCache.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { z } from \"zod\";\nimport type { Jwk } from \"~/features/security/utils/verifyJwtUsingJwk.js\";\nimport { HttpClient } from \"~/features/httpClient/index.js\";\nimport { JwkCache } from \"./abstractions.js\";\n\nconst oidcConfigurationSchema = z.object({\n jwks_uri: z.string()\n});\n\nconst jwksSchema = z.object({\n keys: z.array(z.looseObject({ kid: z.string().optional() }))\n});\n\nfunction getOpenidConfigurationUrl(issuer: string): string {\n const openidUrl = new URL(issuer);\n const pathname = openidUrl.pathname + \"/.well-known/openid-configuration\";\n openidUrl.pathname = pathname.replace(/\\/+/g, \"/\");\n return openidUrl.toString();\n}\n\nclass JwksCacheImpl implements JwkCache.Interface {\n private cache = new Map<string, Jwk[]>();\n\n constructor(private readonly httpClient: HttpClient.Interface) {}\n\n async getKeys(issuer: string): Promise<Jwk[]> {\n const cached = this.cache.get(issuer);\n if (cached) {\n return cached;\n }\n\n const openidConfigurationUrl = getOpenidConfigurationUrl(issuer);\n const oidcConfig = await this.fetchJson(openidConfigurationUrl, oidcConfigurationSchema);\n const jwksResponse = await this.fetchJson(oidcConfig.jwks_uri, jwksSchema);\n const jwks: Jwk[] = jwksResponse.keys;\n\n this.cache.set(issuer, jwks);\n\n return jwks;\n }\n\n // Throws, so a failed fetch fails the token verification instead of caching a bad answer.\n private async fetchJson<T>(url: string, schema: z.ZodType<T>): Promise<T> {\n const response = await this.httpClient.requestJson({ url });\n if (response.isFail()) {\n throw response.error;\n }\n\n const result = schema.safeParse(response.value);\n if (!result.success) {\n throw new Error(`Invalid response from \"${url}\": ${result.error.message}`);\n }\n\n return result.data;\n }\n}\n\nexport const JwksCache = createImplementation({\n abstraction: JwkCache,\n implementation: JwksCacheImpl,\n dependencies: [HttpClient]\n});\n"],"names":["oidcConfigurationSchema","z","jwksSchema","getOpenidConfigurationUrl","issuer","openidUrl","URL","pathname","JwksCacheImpl","httpClient","Map","cached","openidConfigurationUrl","oidcConfig","jwksResponse","jwks","url","schema","response","result","Error","JwksCache","createImplementation","JwkCache","HttpClient"],"mappings":";;;;AAMA,MAAMA,0BAA0BC,EAAE,MAAM,CAAC;IACrC,UAAUA,EAAE,MAAM;AACtB;AAEA,MAAMC,aAAaD,EAAE,MAAM,CAAC;IACxB,MAAMA,EAAE,KAAK,CAACA,EAAE,WAAW,CAAC;QAAE,KAAKA,EAAE,MAAM,GAAG,QAAQ;IAAG;AAC7D;AAEA,SAASE,0BAA0BC,MAAc;IAC7C,MAAMC,YAAY,IAAIC,IAAIF;IAC1B,MAAMG,WAAWF,UAAU,QAAQ,GAAG;IACtCA,UAAU,QAAQ,GAAGE,SAAS,OAAO,CAAC,QAAQ;IAC9C,OAAOF,UAAU,QAAQ;AAC7B;AAEA,MAAMG;IAGF,YAA6BC,UAAgC,CAAE;aAAlCA,UAAU,GAAVA;aAFrB,KAAK,GAAG,IAAIC;IAE4C;IAEhE,MAAM,QAAQN,MAAc,EAAkB;QAC1C,MAAMO,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAACP;QAC9B,IAAIO,QACA,OAAOA;QAGX,MAAMC,yBAAyBT,0BAA0BC;QACzD,MAAMS,aAAa,MAAM,IAAI,CAAC,SAAS,CAACD,wBAAwBZ;QAChE,MAAMc,eAAe,MAAM,IAAI,CAAC,SAAS,CAACD,WAAW,QAAQ,EAAEX;QAC/D,MAAMa,OAAcD,aAAa,IAAI;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,CAACV,QAAQW;QAEvB,OAAOA;IACX;IAGA,MAAc,UAAaC,GAAW,EAAEC,MAAoB,EAAc;QACtE,MAAMC,WAAW,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAEF;QAAI;QACzD,IAAIE,SAAS,MAAM,IACf,MAAMA,SAAS,KAAK;QAGxB,MAAMC,SAASF,OAAO,SAAS,CAACC,SAAS,KAAK;QAC9C,IAAI,CAACC,OAAO,OAAO,EACf,MAAM,IAAIC,MAAM,CAAC,uBAAuB,EAAEJ,IAAI,GAAG,EAAEG,OAAO,KAAK,CAAC,OAAO,EAAE;QAG7E,OAAOA,OAAO,IAAI;IACtB;AACJ;AAEO,MAAME,YAAYC,qBAAqB;IAC1C,aAAaC;IACb,gBAAgBf;IAChB,cAAc;QAACgB;KAAW;AAC9B"}
|
package/idp/feature.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import { JwtAuthenticator } from "./JwtAuthenticator.js";
|
|
3
|
-
import { JwkCache } from "./abstractions.js";
|
|
4
3
|
import { JwksCache } from "./JwksCache.js";
|
|
5
4
|
import { OidcJwtIdentityProvider } from "./OidcJwtIdentityProvider.js";
|
|
6
5
|
const IdpAuthenticatorFeature = createFeature({
|
|
@@ -8,7 +7,7 @@ const IdpAuthenticatorFeature = createFeature({
|
|
|
8
7
|
register (container) {
|
|
9
8
|
container.register(JwtAuthenticator);
|
|
10
9
|
container.register(OidcJwtIdentityProvider);
|
|
11
|
-
container.
|
|
10
|
+
container.register(JwksCache).inSingletonScope();
|
|
12
11
|
}
|
|
13
12
|
});
|
|
14
13
|
export { IdpAuthenticatorFeature };
|
package/idp/feature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idp/feature.js","sources":["../../src/idp/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { JwtAuthenticator } from \"./JwtAuthenticator.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"idp/feature.js","sources":["../../src/idp/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { JwtAuthenticator } from \"./JwtAuthenticator.js\";\nimport { JwksCache } from \"./JwksCache.js\";\nimport { OidcJwtIdentityProvider } from \"~/idp/OidcJwtIdentityProvider.js\";\n\nexport const IdpAuthenticatorFeature = createFeature({\n name: \"IdpAuthenticator\",\n register(container) {\n container.register(JwtAuthenticator);\n container.register(OidcJwtIdentityProvider);\n // Singleton, so the keys stay cached for the life of the process.\n container.register(JwksCache).inSingletonScope();\n }\n});\n"],"names":["IdpAuthenticatorFeature","createFeature","container","JwtAuthenticator","OidcJwtIdentityProvider","JwksCache"],"mappings":";;;;AAKO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QAEnBF,UAAU,QAAQ,CAACG,WAAW,gBAAgB;IAClD;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy/security/plugins/secureHeaders.js","sources":["../../../../src/legacy/security/plugins/secureHeaders.ts"],"sourcesContent":["import { createHandlerOnRequest, ResponseHeaders } from \"@webiny/handler\";\n\nconst whitelistedHeaders = [\n \"accept\",\n \"authorization\",\n \"cache-control\",\n \"content-type\",\n \"x-tenant\",\n \"x-apollo-tracing\",\n \"apollo-query-plan-experimental\"\n];\n\nexport const setupSecureHeaders = () => {\n return createHandlerOnRequest(async (request, reply) => {\n const isOptions = request.method === \"OPTIONS\";\n\n const headers = ResponseHeaders.create();\n headers.set(\"access-control-allow-origin\", request.headers[\"origin\"]);\n headers.set(\"access-control-allow-credentials\", \"true\");\n\n if (isOptions) {\n headers.set(\"cache-control\", \"public, max-age=86400\");\n headers.set(\"content-type\", \"application/json; charset=utf-8\");\n headers.set(\"access-control-max-age\", \"86400\");\n headers.set(\"access-control-allow-methods\", \"OPTIONS,POST,GET,DELETE,PUT,PATCH\");\n headers.set(\"access-control-allow-headers\", whitelistedHeaders.join(\", \"));\n } else {\n headers.set(\"x-tenant\", request.headers[\"x-tenant\"] || \"root\");\n headers.set(\"vary\", \"origin\");\n }\n\n reply.headers(headers.getHeaders());\n });\n};\n"],"names":["whitelistedHeaders","setupSecureHeaders","createHandlerOnRequest","request","reply","isOptions","headers","ResponseHeaders"],"mappings":";AAEA,MAAMA,qBAAqB;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAEM,MAAMC,qBAAqB,IACvBC,uBAAuB,OAAOC,SAASC;QAC1C,MAAMC,YAAYF,AAAmB,cAAnBA,QAAQ,MAAM;QAEhC,MAAMG,UAAUC,gBAAgB,MAAM;QACtCD,QAAQ,GAAG,CAAC,+BAA+BH,QAAQ,OAAO,CAAC,SAAS;QACpEG,QAAQ,GAAG,CAAC,oCAAoC;QAEhD,IAAID,WAAW;YACXC,QAAQ,GAAG,CAAC,iBAAiB;YAC7BA,QAAQ,GAAG,CAAC,gBAAgB;YAC5BA,QAAQ,GAAG,CAAC,0BAA0B;YACtCA,QAAQ,GAAG,CAAC,gCAAgC;YAC5CA,QAAQ,GAAG,CAAC,gCAAgCN,mBAAmB,IAAI,CAAC;QACxE,OAAO;YACHM,QAAQ,GAAG,CAAC,YAAYH,QAAQ,OAAO,CAAC,WAAW,IAAI;YACvDG,QAAQ,GAAG,CAAC,QAAQ;QACxB;QAEAF,MAAM,OAAO,CAACE,QAAQ,UAAU;IACpC"}
|
|
1
|
+
{"version":3,"file":"legacy/security/plugins/secureHeaders.js","sources":["../../../../src/legacy/security/plugins/secureHeaders.ts"],"sourcesContent":["import { createHandlerOnRequest, ResponseHeaders } from \"@webiny/handler\";\n\nconst whitelistedHeaders = [\n \"accept\",\n \"authorization\",\n \"cache-control\",\n \"content-type\",\n \"x-tenant\",\n \"x-apollo-tracing\",\n \"x-webiny-debug\",\n \"apollo-query-plan-experimental\"\n];\n\nexport const setupSecureHeaders = () => {\n return createHandlerOnRequest(async (request, reply) => {\n const isOptions = request.method === \"OPTIONS\";\n\n const headers = ResponseHeaders.create();\n headers.set(\"access-control-allow-origin\", request.headers[\"origin\"]);\n headers.set(\"access-control-allow-credentials\", \"true\");\n\n if (isOptions) {\n headers.set(\"cache-control\", \"public, max-age=86400\");\n headers.set(\"content-type\", \"application/json; charset=utf-8\");\n headers.set(\"access-control-max-age\", \"86400\");\n headers.set(\"access-control-allow-methods\", \"OPTIONS,POST,GET,DELETE,PUT,PATCH\");\n headers.set(\"access-control-allow-headers\", whitelistedHeaders.join(\", \"));\n } else {\n headers.set(\"x-tenant\", request.headers[\"x-tenant\"] || \"root\");\n headers.set(\"vary\", \"origin\");\n }\n\n reply.headers(headers.getHeaders());\n });\n};\n"],"names":["whitelistedHeaders","setupSecureHeaders","createHandlerOnRequest","request","reply","isOptions","headers","ResponseHeaders"],"mappings":";AAEA,MAAMA,qBAAqB;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACH;AAEM,MAAMC,qBAAqB,IACvBC,uBAAuB,OAAOC,SAASC;QAC1C,MAAMC,YAAYF,AAAmB,cAAnBA,QAAQ,MAAM;QAEhC,MAAMG,UAAUC,gBAAgB,MAAM;QACtCD,QAAQ,GAAG,CAAC,+BAA+BH,QAAQ,OAAO,CAAC,SAAS;QACpEG,QAAQ,GAAG,CAAC,oCAAoC;QAEhD,IAAID,WAAW;YACXC,QAAQ,GAAG,CAAC,iBAAiB;YAC7BA,QAAQ,GAAG,CAAC,gBAAgB;YAC5BA,QAAQ,GAAG,CAAC,0BAA0B;YACtCA,QAAQ,GAAG,CAAC,gCAAgC;YAC5CA,QAAQ,GAAG,CAAC,gCAAgCN,mBAAmB,IAAI,CAAC;QACxE,OAAO;YACHM,QAAQ,GAAG,CAAC,YAAYH,QAAQ,OAAO,CAAC,WAAW,IAAI;YACvDG,QAAQ,GAAG,CAAC,QAAQ;QACxB;QAEAF,MAAM,OAAO,CAACE,QAAQ,UAAU;IACpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-core",
|
|
3
|
-
"version": "6.5.0-beta.
|
|
3
|
+
"version": "6.5.0-beta.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,38 +14,39 @@
|
|
|
14
14
|
"./*": "./*"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ai-sdk/anthropic": "4.0.
|
|
18
|
-
"@ai-sdk/google": "4.0.
|
|
19
|
-
"@ai-sdk/openai": "4.0.
|
|
20
|
-
"@
|
|
21
|
-
"@webiny/
|
|
22
|
-
"@webiny/
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/feature
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/handler
|
|
27
|
-
"@webiny/handler-
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/
|
|
30
|
-
"@webiny/
|
|
31
|
-
"
|
|
17
|
+
"@ai-sdk/anthropic": "4.0.71",
|
|
18
|
+
"@ai-sdk/google": "4.0.87",
|
|
19
|
+
"@ai-sdk/openai": "4.0.83",
|
|
20
|
+
"@openrouter/ai-sdk-provider": "3.1.0",
|
|
21
|
+
"@webiny/api": "6.5.0-beta.11",
|
|
22
|
+
"@webiny/di": "1.1.0",
|
|
23
|
+
"@webiny/error": "6.5.0-beta.11",
|
|
24
|
+
"@webiny/feature": "6.5.0-beta.11",
|
|
25
|
+
"@webiny/feature-flags": "6.5.0-beta.11",
|
|
26
|
+
"@webiny/handler": "6.5.0-beta.11",
|
|
27
|
+
"@webiny/handler-db": "6.5.0-beta.11",
|
|
28
|
+
"@webiny/handler-graphql": "6.5.0-beta.11",
|
|
29
|
+
"@webiny/plugins": "6.5.0-beta.11",
|
|
30
|
+
"@webiny/utils": "6.5.0-beta.11",
|
|
31
|
+
"@webiny/wcp": "6.5.0-beta.11",
|
|
32
|
+
"ai": "7.0.127",
|
|
32
33
|
"dataloader": "2.2.3",
|
|
33
|
-
"jose": "6.2.
|
|
34
|
+
"jose": "6.2.12",
|
|
34
35
|
"jsonwebtoken": "9.0.3",
|
|
35
36
|
"lodash": "4.18.1",
|
|
36
|
-
"minimatch": "10.2.
|
|
37
|
-
"pino": "10.
|
|
37
|
+
"minimatch": "10.2.6",
|
|
38
|
+
"pino": "10.4.0",
|
|
38
39
|
"pino-lambda": "4.4.1",
|
|
39
|
-
"zod": "4.
|
|
40
|
+
"zod": "4.6.5"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@types/jsonwebtoken": "9.0.10",
|
|
43
|
-
"@webiny/build-tools": "6.5.0-beta.
|
|
44
|
-
"@webiny/handler-aws": "6.5.0-beta.
|
|
45
|
-
"@webiny/project-utils": "6.5.0-beta.
|
|
44
|
+
"@webiny/build-tools": "6.5.0-beta.11",
|
|
45
|
+
"@webiny/handler-aws": "6.5.0-beta.11",
|
|
46
|
+
"@webiny/project-utils": "6.5.0-beta.11",
|
|
46
47
|
"rimraf": "6.1.3",
|
|
47
48
|
"typescript": "7.0.2",
|
|
48
|
-
"vitest": "
|
|
49
|
+
"vitest": "5.0.3"
|
|
49
50
|
},
|
|
50
51
|
"publishConfig": {
|
|
51
52
|
"access": "public"
|