@semiont/graph 0.5.28 → 0.5.30

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.
Files changed (27) hide show
  1. package/README.md +1 -1
  2. package/dist/{chunk-RUKYB5L4.js → chunk-SFMOIR7Y.js} +9 -9
  3. package/dist/{chunk-RUKYB5L4.js.map → chunk-SFMOIR7Y.js.map} +1 -1
  4. package/dist/{dist-es-C2VXNLLU.js → dist-es-DYVW35LB.js} +5 -5
  5. package/dist/{dist-es-AET2QNVA.js → dist-es-F44WH2AS.js} +13 -13
  6. package/dist/dist-es-F44WH2AS.js.map +1 -0
  7. package/dist/{dist-es-IS4IC3TZ.js → dist-es-RTE7BVXX.js} +2 -2
  8. package/dist/{dist-es-BSJRQ6XP.js → dist-es-WEW6PTSK.js} +12 -8
  9. package/dist/dist-es-WEW6PTSK.js.map +1 -0
  10. package/dist/{dist-es-RR4OU64S.js → dist-es-Z4NFJDXO.js} +2 -2
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.js +22 -22
  13. package/dist/index.js.map +1 -1
  14. package/dist/{loadSso-SCNBGUAS.js → loadSso-2Y2JSLM2.js} +2 -2
  15. package/dist/{signin-6CO4ELBM.js → signin-3VN2CNSY.js} +2 -2
  16. package/dist/{sso-oidc-NYPIZEZ2.js → sso-oidc-76COL3D2.js} +2 -2
  17. package/dist/{sts-7LYERIMP.js → sts-BLFDXC4J.js} +2 -2
  18. package/package.json +9 -9
  19. package/dist/dist-es-AET2QNVA.js.map +0 -1
  20. package/dist/dist-es-BSJRQ6XP.js.map +0 -1
  21. /package/dist/{dist-es-C2VXNLLU.js.map → dist-es-DYVW35LB.js.map} +0 -0
  22. /package/dist/{dist-es-IS4IC3TZ.js.map → dist-es-RTE7BVXX.js.map} +0 -0
  23. /package/dist/{dist-es-RR4OU64S.js.map → dist-es-Z4NFJDXO.js.map} +0 -0
  24. /package/dist/{loadSso-SCNBGUAS.js.map → loadSso-2Y2JSLM2.js.map} +0 -0
  25. /package/dist/{signin-6CO4ELBM.js.map → signin-3VN2CNSY.js.map} +0 -0
  26. /package/dist/{sso-oidc-NYPIZEZ2.js.map → sso-oidc-76COL3D2.js.map} +0 -0
  27. /package/dist/{sts-7LYERIMP.js.map → sts-BLFDXC4J.js.map} +0 -0
@@ -64,7 +64,7 @@ var LoginCredentialsFetcher = class _LoginCredentialsFetcher {
64
64
  if (freshExpiry - Date.now() > _LoginCredentialsFetcher.REFRESH_THRESHOLD) {
65
65
  return this.toCredentials(freshToken.accessToken);
66
66
  }
67
- const { SigninClient, CreateOAuth2TokenCommand } = await import("./signin-6CO4ELBM.js");
67
+ const { SigninClient, CreateOAuth2TokenCommand } = await import("./signin-3VN2CNSY.js");
68
68
  const { logger, userAgentAppId } = this.callerClientConfig ?? {};
69
69
  const isH2 = (requestHandler2) => {
70
70
  return requestHandler2?.metadata?.handlerProtocol === "h2";
@@ -291,4 +291,4 @@ var fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => {
291
291
  export {
292
292
  fromLoginCredentials
293
293
  };
294
- //# sourceMappingURL=dist-es-IS4IC3TZ.js.map
294
+ //# sourceMappingURL=dist-es-RTE7BVXX.js.map
@@ -21,7 +21,7 @@ var REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the
21
21
 
22
22
  // ../../node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js
23
23
  var getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => {
24
- const { SSOOIDCClient } = await import("./sso-oidc-NYPIZEZ2.js");
24
+ const { SSOOIDCClient } = await import("./sso-oidc-76COL3D2.js");
25
25
  const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop];
26
26
  const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, {
27
27
  region: ssoRegion ?? init.clientConfig?.region,
@@ -33,7 +33,7 @@ var getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => {
33
33
 
34
34
  // ../../node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js
35
35
  var getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => {
36
- const { CreateTokenCommand } = await import("./sso-oidc-NYPIZEZ2.js");
36
+ const { CreateTokenCommand } = await import("./sso-oidc-76COL3D2.js");
37
37
  const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig);
38
38
  return ssoOidcClient.send(new CreateTokenCommand({
39
39
  clientId: ssoToken.clientId,
@@ -67,7 +67,7 @@ var writeSSOTokenToFile = (id, ssoToken) => {
67
67
  };
68
68
 
69
69
  // ../../node_modules/@aws-sdk/token-providers/dist-es/fromSso.js
70
- var lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);
70
+ var lastRefreshAttemptTimes = /* @__PURE__ */ new Map();
71
71
  var fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {
72
72
  init.logger?.debug("@aws-sdk/token-providers - fromSso");
73
73
  const profiles = await parseKnownFiles(init);
@@ -102,11 +102,15 @@ var fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {
102
102
  validateTokenKey("accessToken", ssoToken.accessToken);
103
103
  validateTokenKey("expiresAt", ssoToken.expiresAt);
104
104
  const { accessToken, expiresAt } = ssoToken;
105
- const existingToken = { token: accessToken, expiration: new Date(expiresAt) };
105
+ const existingToken = {
106
+ token: accessToken,
107
+ expiration: new Date(expiresAt)
108
+ };
106
109
  if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {
107
110
  return existingToken;
108
111
  }
109
- if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {
112
+ const lastRefreshAttemptTime = lastRefreshAttemptTimes.get(ssoSessionName) ?? 0;
113
+ if (Date.now() - lastRefreshAttemptTime < 30 * 1e3) {
110
114
  validateTokenExpiry(existingToken);
111
115
  return existingToken;
112
116
  }
@@ -114,7 +118,7 @@ var fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {
114
118
  validateTokenKey("clientSecret", ssoToken.clientSecret, true);
115
119
  validateTokenKey("refreshToken", ssoToken.refreshToken, true);
116
120
  try {
117
- lastRefreshAttemptTime.setTime(Date.now());
121
+ lastRefreshAttemptTimes.set(ssoSessionName, Date.now());
118
122
  const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig);
119
123
  validateTokenKey("accessToken", newSsoOidcToken.accessToken);
120
124
  validateTokenKey("expiresIn", newSsoOidcToken.expiresIn);
@@ -181,7 +185,7 @@ var resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoR
181
185
  });
182
186
  }
183
187
  const { accessToken } = token;
184
- const { SSOClient, GetRoleCredentialsCommand } = await import("./loadSso-SCNBGUAS.js");
188
+ const { SSOClient, GetRoleCredentialsCommand } = await import("./loadSso-2Y2JSLM2.js");
185
189
  const sso = ssoClient || new SSOClient(Object.assign({}, clientConfig ?? {}, {
186
190
  logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger,
187
191
  region: clientConfig?.region ?? ssoRegion,
@@ -314,4 +318,4 @@ export {
314
318
  isSsoProfile,
315
319
  validateSsoProfile
316
320
  };
317
- //# sourceMappingURL=dist-es-BSJRQ6XP.js.map
321
+ //# sourceMappingURL=dist-es-WEW6PTSK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js","../../../node_modules/@aws-sdk/token-providers/dist-es/constants.js","../../../node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js","../../../node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js","../../../node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js","../../../node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js","../../../node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js","../../../node_modules/@aws-sdk/token-providers/dist-es/fromSso.js","../../../node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js","../../../node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js","../../../node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js"],"sourcesContent":["export const isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_session === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\n","export const EXPIRE_WINDOW_MS = 5 * 60 * 1000;\nexport const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n","export const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => {\n const { SSOOIDCClient } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop];\n const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, {\n region: ssoRegion ?? init.clientConfig?.region,\n logger: coalesce(\"logger\"),\n userAgentAppId: coalesce(\"userAgentAppId\"),\n }));\n return ssoOidcClient;\n};\n","import { getSsoOidcClient } from \"./getSsoOidcClient\";\nexport const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => {\n const { CreateTokenCommand } = await import(\"@aws-sdk/nested-clients/sso-oidc\");\n const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig);\n return ssoOidcClient.send(new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\",\n }));\n};\n","import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenExpiry = (token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n};\n","import { TokenProviderError } from \"@smithy/core/config\";\nimport { REFRESH_MESSAGE } from \"./constants\";\nexport const validateTokenKey = (key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`, false);\n }\n};\n","import { getSSOTokenFilepath } from \"@smithy/core/config\";\nimport { promises as fsPromises } from \"node:fs\";\nconst { writeFile } = fsPromises;\nexport const writeSSOTokenToFile = (id, ssoToken) => {\n const tokenFilepath = getSSOTokenFilepath(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n};\n","import { getProfileName, getSSOTokenFromFile, loadSsoSessionData, parseKnownFiles, TokenProviderError, } from \"@smithy/core/config\";\nimport { EXPIRE_WINDOW_MS, REFRESH_MESSAGE } from \"./constants\";\nimport { getNewSsoOidcToken } from \"./getNewSsoOidcToken\";\nimport { validateTokenExpiry } from \"./validateTokenExpiry\";\nimport { validateTokenKey } from \"./validateTokenKey\";\nimport { writeSSOTokenToFile } from \"./writeSSOTokenToFile\";\nconst lastRefreshAttemptTimes = new Map();\nexport const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/token-providers - fromSso\");\n const profiles = await parseKnownFiles(init);\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n const profile = profiles[profileName];\n if (!profile) {\n throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n }\n else if (!profile[\"sso_session\"]) {\n throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await loadSsoSessionData(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false);\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false);\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await getSSOTokenFromFile(ssoSessionName);\n }\n catch (e) {\n throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false);\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = {\n token: accessToken,\n expiration: new Date(expiresAt),\n };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n const lastRefreshAttemptTime = lastRefreshAttemptTimes.get(ssoSessionName) ?? 0;\n if (Date.now() - lastRefreshAttemptTime < 30 * 1000) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTimes.set(ssoSessionName, Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken,\n });\n }\n catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration,\n };\n }\n catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n};\n","import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { fromSso as getSsoTokenProvider } from \"@aws-sdk/token-providers\";\nimport { CredentialsProviderError, getSSOTokenFromFile } from \"@smithy/core/config\";\nconst SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nexport const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await getSsoTokenProvider({\n profile,\n filepath,\n configFilepath,\n ignoreCache,\n clientConfig,\n parentClientConfig,\n logger,\n })({ callerClientConfig });\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString(),\n };\n }\n catch (e) {\n throw new CredentialsProviderError(e.message, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n else {\n try {\n token = await getSSOTokenFromFile(ssoStartUrl);\n }\n catch (e) {\n throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { accessToken } = token;\n const { SSOClient, GetRoleCredentialsCommand } = await import(\"./loadSso.js\");\n const sso = ssoClient ||\n new SSOClient(Object.assign({}, clientConfig ?? {}, {\n logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger,\n region: clientConfig?.region ?? ssoRegion,\n userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId,\n }));\n let ssoResp;\n try {\n ssoResp = await sso.send(new GetRoleCredentialsCommand({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken,\n }));\n }\n catch (e) {\n throw new CredentialsProviderError(e, {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new CredentialsProviderError(\"SSO returns an invalid temporary credential.\", {\n tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN,\n logger,\n });\n }\n const credentials = {\n accessKeyId,\n secretAccessKey,\n sessionToken,\n expiration: new Date(expiration),\n ...(credentialScope && { credentialScope }),\n ...(accountId && { accountId }),\n };\n if (ssoSession) {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO\", \"s\");\n }\n else {\n setCredentialFeature(credentials, \"CREDENTIALS_SSO_LEGACY\", \"u\");\n }\n return credentials;\n};\n","import { CredentialsProviderError } from \"@smithy/core/config\";\nexport const validateSsoProfile = (profile, logger) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", ` +\n `\"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\", \")}\\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger });\n }\n return profile;\n};\n","import { CredentialsProviderError, getProfileName, loadSsoSessionData, parseKnownFiles } from \"@smithy/core/config\";\nimport { isSsoProfile } from \"./isSsoProfile\";\nimport { resolveSSOCredentials } from \"./resolveSSOCredentials\";\nimport { validateSsoProfile } from \"./validateSsoProfile\";\nexport const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => {\n init.logger?.debug(\"@aws-sdk/credential-provider-sso - fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = getProfileName({\n profile: init.profile ?? callerClientConfig?.profile,\n });\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await parseKnownFiles(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger });\n }\n if (!isSsoProfile(profile)) {\n throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, {\n logger: init.logger,\n });\n }\n if (profile?.sso_session) {\n const ssoSessions = await loadSsoSessionData(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, {\n tryNextLink: false,\n logger: init.logger,\n });\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger);\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient: ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new CredentialsProviderError(\"Incomplete configuration. The fromSSO() argument hash must include \" +\n '\"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"', { tryNextLink: false, logger: init.logger });\n }\n else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n parentClientConfig: init.parentClientConfig,\n callerClientConfig: init.callerClientConfig,\n profile: profileName,\n filepath: init.filepath,\n configFilepath: init.configFilepath,\n ignoreCache: init.ignoreCache,\n logger: init.logger,\n });\n }\n};\n"],"mappings":"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","names":[]}
@@ -16,7 +16,7 @@ var fromWebToken = (init) => async (awsIdentityProperties) => {
16
16
  const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;
17
17
  let { roleAssumerWithWebIdentity } = init;
18
18
  if (!roleAssumerWithWebIdentity) {
19
- const { getDefaultRoleAssumerWithWebIdentity } = await import("./sts-7LYERIMP.js");
19
+ const { getDefaultRoleAssumerWithWebIdentity } = await import("./sts-BLFDXC4J.js");
20
20
  roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({
21
21
  ...init.clientConfig,
22
22
  credentialProviderLogger: init.logger,
@@ -66,4 +66,4 @@ export {
66
66
  fromTokenFile,
67
67
  fromWebToken
68
68
  };
69
- //# sourceMappingURL=dist-es-RR4OU64S.js.map
69
+ //# sourceMappingURL=dist-es-Z4NFJDXO.js.map
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { ResourceDescriptor, ResourceId, UpdateResourceInput, ResourceFilter, Cr
6
6
  *
7
7
  * The tiebreak is not cosmetic: browse pages these results with offset/limit,
8
8
  * and a partial order lets two pages repeat or drop rows. Ids compare by code
9
- * point rather than locale so the JS backends agree with the engines, whose
9
+ * point rather than locale so the JS gateways agree with the engines, whose
10
10
  * `ORDER BY` is codepoint-ordered.
11
11
  */
12
12
  declare function compareByRecencyThenId(a: ResourceDescriptor, b: ResourceDescriptor): number;
@@ -188,7 +188,7 @@ declare class NeptuneGraphDatabase implements GraphDatabase {
188
188
  * `range()` would order one page instead of the match set. JanusGraph
189
189
  * post-filters for the same reason. Both share `queryResources` with the
190
190
  * memory backend so search cannot mean three different things across three
191
- * backends.
191
+ * gateways.
192
192
  *
193
193
  * The cost is explicit and accepted: this materializes every `Resource`
194
194
  * vertex per call, so it is O(N) in the size of the KB rather than in the
@@ -196,7 +196,7 @@ declare class NeptuneGraphDatabase implements GraphDatabase {
196
196
  * query — filter, rank, page — into Cypher; Neptune and JanusGraph are not
197
197
  * deployment targets today. If either becomes one at scale, the fix is a
198
198
  * Gremlin rank expression (`choose` over `toLower`, engine-version
199
- * permitting), not a return to per-backend search semantics.
199
+ * permitting), not a return to per-gateway search semantics.
200
200
  */
201
201
  listResources(filter: ResourceFilter): Promise<{
202
202
  resources: ResourceDescriptor[];
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ function compareByRecencyThenId(a, b) {
16
16
  }
17
17
 
18
18
  // src/resource-query.ts
19
- import { getResourceEntityTypes } from "@semiont/core";
19
+ import { getResourceEntityTypes, getStorageUri } from "@semiont/core";
20
20
  function searchTerms(query) {
21
21
  return query.toLowerCase().split(/\s+/).filter(Boolean);
22
22
  }
@@ -30,7 +30,7 @@ function searchRank(resource, query) {
30
30
  }
31
31
  function matchesSearch(resource, terms) {
32
32
  const name = (resource.name ?? "").toLowerCase();
33
- const uri = resource.storageUri?.toLowerCase() ?? "";
33
+ const uri = getStorageUri(resource)?.toLowerCase() ?? "";
34
34
  const types = getResourceEntityTypes(resource).map((t) => t.toLowerCase());
35
35
  return terms.every((term) => name.includes(term) || uri.includes(term) || types.some((t) => t.includes(term)));
36
36
  }
@@ -157,7 +157,7 @@ function decodeSelector(raw) {
157
157
 
158
158
  // src/implementations/neptune.ts
159
159
  import { v4 as uuidv4 } from "uuid";
160
- import { getBodySource as getBodySource2, getTargetSource as getTargetSource2, getPrimaryRepresentation, getResourceId } from "@semiont/core";
160
+ import { getBodySource as getBodySource2, getTargetSource as getTargetSource2, getPrimaryRepresentation, getResourceId, getStorageUri as getStorageUri2 } from "@semiont/core";
161
161
  var NeptuneClient;
162
162
  var DescribeDBClustersCommand;
163
163
  var gremlin;
@@ -167,7 +167,7 @@ var cardinality;
167
167
  var __;
168
168
  async function loadDependencies() {
169
169
  if (!NeptuneClient) {
170
- const neptuneModule = await import("./dist-es-AET2QNVA.js");
170
+ const neptuneModule = await import("./dist-es-F44WH2AS.js");
171
171
  NeptuneClient = neptuneModule.NeptuneClient;
172
172
  DescribeDBClustersCommand = neptuneModule.DescribeDBClustersCommand;
173
173
  }
@@ -210,7 +210,8 @@ function vertexToResource(vertex) {
210
210
  representations: [{
211
211
  mediaType,
212
212
  checksum,
213
- rel: "original"
213
+ rel: "original",
214
+ storageUri: getValue("storageUri") || void 0
214
215
  }],
215
216
  archived: archived === "true" || archived === true,
216
217
  dateCreated,
@@ -218,8 +219,6 @@ function vertexToResource(vertex) {
218
219
  };
219
220
  const sourceResourceId = getValue("sourceResourceId");
220
221
  if (sourceResourceId) resource.sourceResourceId = sourceResourceId;
221
- const storageUri = getValue("storageUri");
222
- if (storageUri) resource.storageUri = storageUri;
223
222
  return resource;
224
223
  }
225
224
  function vertexToAnnotation(vertex, entityTypes = []) {
@@ -355,8 +354,9 @@ var NeptuneGraphDatabase = class {
355
354
  if (resource.sourceResourceId) {
356
355
  vertex.property("sourceResourceId", resource.sourceResourceId);
357
356
  }
358
- if (resource.storageUri) {
359
- vertex.property("storageUri", resource.storageUri);
357
+ const storageUri = getStorageUri2(resource);
358
+ if (storageUri) {
359
+ vertex.property("storageUri", storageUri);
360
360
  }
361
361
  await vertex.next();
362
362
  this.logger?.info("Created resource vertex in Neptune", { id });
@@ -415,7 +415,7 @@ var NeptuneGraphDatabase = class {
415
415
  * `range()` would order one page instead of the match set. JanusGraph
416
416
  * post-filters for the same reason. Both share `queryResources` with the
417
417
  * memory backend so search cannot mean three different things across three
418
- * backends.
418
+ * gateways.
419
419
  *
420
420
  * The cost is explicit and accepted: this materializes every `Resource`
421
421
  * vertex per call, so it is O(N) in the size of the KB rather than in the
@@ -423,7 +423,7 @@ var NeptuneGraphDatabase = class {
423
423
  * query — filter, rank, page — into Cypher; Neptune and JanusGraph are not
424
424
  * deployment targets today. If either becomes one at scale, the fix is a
425
425
  * Gremlin rank expression (`choose` over `toLower`, engine-version
426
- * permitting), not a return to per-backend search semantics.
426
+ * permitting), not a return to per-gateway search semantics.
427
427
  */
428
428
  async listResources(filter) {
429
429
  try {
@@ -862,7 +862,7 @@ var NeptuneGraphDatabase = class {
862
862
 
863
863
  // src/implementations/neo4j.ts
864
864
  import { v4 as uuidv42 } from "uuid";
865
- import { getPrimaryRepresentation as getPrimaryRepresentation2 } from "@semiont/core";
865
+ import { getPrimaryRepresentation as getPrimaryRepresentation2, getStorageUri as getStorageUri3 } from "@semiont/core";
866
866
  import { getEntityTypes as getEntityTypes2 } from "@semiont/ontology";
867
867
  function motivationToLabel(motivation) {
868
868
  return motivation.charAt(0).toUpperCase() + motivation.slice(1);
@@ -1008,7 +1008,7 @@ var Neo4jGraphDatabase = class {
1008
1008
  contentChecksum: primaryRep.checksum,
1009
1009
  sourceAnnotationId: resource.sourceAnnotationId ?? null,
1010
1010
  sourceResourceId: resource.sourceResourceId ?? null,
1011
- storageUri: resource.storageUri ?? null
1011
+ storageUri: getStorageUri3(resource) ?? null
1012
1012
  }
1013
1013
  );
1014
1014
  this.logger?.info("Resource created/enriched", { id });
@@ -1636,7 +1636,7 @@ var Neo4jGraphDatabase = class {
1636
1636
  contentChecksum: primaryRep.checksum,
1637
1637
  sourceAnnotationId: resource.sourceAnnotationId ?? null,
1638
1638
  sourceResourceId: resource.sourceResourceId ?? null,
1639
- storageUri: resource.storageUri ?? null
1639
+ storageUri: getStorageUri3(resource) ?? null
1640
1640
  };
1641
1641
  });
1642
1642
  const result = await session.run(
@@ -1763,14 +1763,14 @@ var Neo4jGraphDatabase = class {
1763
1763
  representations: [{
1764
1764
  mediaType: props.format,
1765
1765
  checksum: props.contentChecksum,
1766
- rel: "original"
1766
+ rel: "original",
1767
+ storageUri: props.storageUri ?? void 0
1767
1768
  }],
1768
1769
  archived: props.archived,
1769
1770
  dateCreated: props.created.toString(),
1770
1771
  wasAttributedTo: typeof props.creator === "string" ? JSON.parse(props.creator) : props.creator
1771
1772
  };
1772
1773
  if (props.sourceResourceId) resource.sourceResourceId = props.sourceResourceId;
1773
- if (props.storageUri) resource.storageUri = props.storageUri;
1774
1774
  return resource;
1775
1775
  }
1776
1776
  };
@@ -1788,7 +1788,7 @@ function normalizeProperties2(props) {
1788
1788
 
1789
1789
  // src/implementations/janusgraph.ts
1790
1790
  import { resourceId as makeResourceId } from "@semiont/core";
1791
- import { getBodySource as getBodySource3, getPrimaryRepresentation as getPrimaryRepresentation3, getResourceId as getResourceId2 } from "@semiont/core";
1791
+ import { getBodySource as getBodySource3, getPrimaryRepresentation as getPrimaryRepresentation3, getResourceId as getResourceId2, getStorageUri as getStorageUri4 } from "@semiont/core";
1792
1792
  import { getEntityTypes as getEntityTypes3 } from "@semiont/ontology";
1793
1793
  import { v4 as uuidv43 } from "uuid";
1794
1794
  function getPropertyValue(props, key) {
@@ -1872,7 +1872,8 @@ var JanusGraphDatabase = class {
1872
1872
  representations: [{
1873
1873
  mediaType,
1874
1874
  checksum: contentChecksum,
1875
- rel: "original"
1875
+ rel: "original",
1876
+ storageUri: getPropertyValue(props, "storageUri") || void 0
1876
1877
  }],
1877
1878
  archived: getPropertyValue(props, "archived") === "true",
1878
1879
  dateCreated: getPropertyValue(props, "created"),
@@ -1880,10 +1881,8 @@ var JanusGraphDatabase = class {
1880
1881
  };
1881
1882
  const sourceAnnotationId = getPropertyValue(props, "sourceAnnotationId");
1882
1883
  const sourceResourceId = getPropertyValue(props, "sourceResourceId");
1883
- const storageUri = getPropertyValue(props, "storageUri");
1884
1884
  if (sourceAnnotationId) resource.sourceAnnotationId = sourceAnnotationId;
1885
1885
  if (sourceResourceId) resource.sourceResourceId = sourceResourceId;
1886
- if (storageUri) resource.storageUri = storageUri;
1887
1886
  return resource;
1888
1887
  }
1889
1888
  // Helper method to fetch annotations with their entity types
@@ -1912,8 +1911,9 @@ var JanusGraphDatabase = class {
1912
1911
  if (resource.sourceResourceId) {
1913
1912
  vertex.property("sourceResourceId", resource.sourceResourceId);
1914
1913
  }
1915
- if (resource.storageUri) {
1916
- vertex.property("storageUri", resource.storageUri);
1914
+ const storageUri = getStorageUri4(resource);
1915
+ if (storageUri) {
1916
+ vertex.property("storageUri", storageUri);
1917
1917
  }
1918
1918
  await vertex.next();
1919
1919
  this.logger?.info("Created resource vertex in JanusGraph", { id });