环境背景库
提供周边特有URL分辨率,并帮助识别产品运行在何种环境.
更多信息,请参见本文最初的考虑: https://hello.atlassian.net/wiki/spaces/FEDRAMP/pages/2561199256/UI+隔离
所有权
2025年,图书馆所有权被划入规范行业. 请联系#帮助-跨界的帮助.
安装
npm install @atlaskit/atlassian-context --save
先决条件
注: 如果在2025年5月以后首次登入图书馆,则跳过这些预先要求。 这些先决条件是原始的
configure(), (中文(简体) ),getATLContextDomain(), (中文(简体) ),getATLContextUrl(),以及isFedRamp()函数,将在近期内贬值.
为了 @atlaskit/atlassian-context 正确工作 window.ATL_CONTEXT_DOMAIN 必须是
设置在页面上。 产品必须在窗口上或者调用数据 configure(),在
呼叫任何接听*()电话。 否则 getATLContextDomain() 财务报告和审定财务报表 getATLContextUrl() 将使用
后退,并可能返回一个未经修正的反应.
如果使用已贬值的 isFedRamp() 方法,还
window.UNSAFE_ATL_CONTEXT_BOUNDARY = 'fedramp-moderate' | 'commercial' 必须设置在页面上.
否则,你可能会为环境服务 代码与它们无关.
设置
注: 如果在2025年5月以后首次登入库, 请跳过此设置 。 获取
window.ATL_CONTEXT_DOMAIN财务报告和审定财务报表window.UNSAFE_ATL_CONTEXT_BOUNDARY仅用于configure(), (中文(简体) ),getATLContextDomain(), (中文(简体) ),getATLContextUrl(),以及isFedRamp()函数,将在近期内贬值.
要返回正确的结果, 此图书馆必须关闭 。 它是如何被关闭的 取决于你的服务。 任何Micros服务都可以从 配置登记任何进一步的帮助, 联系到 # 帮助- 配置- 注射器。 。 。 .
QQ 警告 : window.MICROS_PERIMETER 将替换为 window.UNSAFE_ATL_CONTEXT_BOUNDARY 内
未来迭代 - 见 发生 - 发生 - 发生。 。 。 .
window.MICROS_PERIMETER- 看见没 发生 - 发生 - 发生 * 联合国
服务器生成的 HTML
建议
如果您的服务总是生成静态 HTML, 您可以利用窗口上下文来正确配置 这个图书馆 将这个速度模板片段视为一个实例:
<!-- Assuming your Java service has loaded the appropriate configuration into $domain_config -->
<script nonce="$nonce">
window.ATL_CONTEXT_DOMAIN = $domain_config.stringify();
</script>
<!-- Assuming your Java service has loaded the micros perimeter into $micros_perimeter.
NOTE: Only needed if your service uses the isFedRamp function
-->
<script nonce="nonce">
window.UNSAFE_ATL_CONTEXT_BOUNDARY = $micros_perimeter.stringify();
</script>
如果找到变量, 库将自动关闭此配置 。 如果 不可用配置, 它会使用回落并可能返回未校正的值 .
无服务器
挫折: 这将退缩您的应用性能 。 您的页面不再是没有服务器的,因为它 fedRAMP 配置的要求。 您应该移动到基于服务器的托管 .
在渲染前,您必须获取数据
import { configure } from '@atlaskit/atlassian-context';
function init(){
// get the config from globaledge
const data = await fetch('https://my.backend.api/_config/domains');
// tell @atlaskit/atlassian-context about it
configure(data)
// and only then run other code / render your page
ReactDOM.render(<YourApp />, element)
}
如果您的应用程序是通过 React SSR 实现的, 您应该确保您需要手动操作
援引 configure() 函数与提供的数据.
API 密码
配置 ()
免责声明: 这一点无需用于: isFedrampModerate(), (中文(简体) ), isIsolatedCloud(), (中文(简体) ), isolatedCloudDomain(), (中文(简体) ), isolationContextId(), (中文(简体) ), getDomainInContext(...),以及 getUrlForDomainInContext(...) 函数.
收集数据,并存储在 window.ATL_CONTEXT_DOMAIN 用于以后使用.
获取ATL 连接域( )
免责声明: 请使用 getDomainInContext(subdomain, environment) 而不是这一职能,因为这一职能的贬值过程将在近期内开始.
返回给定的Atlassian服务域 。 它依赖 window.ATL_CONTEXT_DOMAIN 为:
在页面上显示,以防万一 window.ATL_CONTEXT_DOMAIN 未定义 getATLContextDomain() 将
尝试从硬码域列表中获取该值, 无法更新 。 这个
倒计时依赖 window.UNSAFE_ATL_CONTEXT_BOUNDARY 如果未定义, 则在页面中显示
getATLContextDomain() 将回落到非痛苦(商业)值.
import { getATLContextDomain } from '@atlaskit/atlassian-context';
getATLContextDomain('jira'); // jira.atlassian.com OR jira.atlassian-fex.com depending based on environment
getATLContextDomain('confluence'); // confluence.atlassian.com
getATLContextDomain('admin'); // admin.atlassian.com OR admin.atlassian-fex.com
获取 ATL 康特文本Url ()
免责声明: 请使用 getUrlForDomainInContext(subdomain, environment) 而不是这一职能,因为这一职能的贬值过程将在近期内开始.
返回全部内容 url 提供阿特拉斯服务。 以为基础 getATLContextDomain,这个
依赖 window.ATL_CONTEXT_DOMAIN 在页上显示,否则 getATLContextDomain 将
尝试从硬码域列表中获取该值, 无法更新
可能回落到非犯罪(商业)价值.
getATLContextUrl() 检测浏览器协议(http/https)并将其应用到 domain。 。 。 .
import { getATLContextUrl } from '@atlaskit/atlassian-context';
getATLContextUrl('jira'); // https://jira.atlassian.com OR https://jira.atlassian-fex.com depending based on environment
getATLContextUrl('confluence'); // https://confluence.atlassian.com
getATLContextUrl('admin'); // https://admin.atlassian.com OR https://admin.atlassian-fex.com
是FedRamp () (中文(简体) )
免责声明: 请使用 isFedrampModerate() 而不是这一职能,因为这一职能的贬值过程将在近期内开始.
注意:考虑替代办法 不建议使用这一功能作为长期解决办法,因为 它创造了一个假设,除了FedRAMP Medrate之外,没有其他孤立的环境. 你个 鼓励考虑其他解决办法,例如Statsig或环境配置 不需要在您的代码特性和 FedRAMP 环境之间建立严格的依赖性 见 发生 - 发生 - 发生
返回服务是否部署在联邦RAMP边界. isFedRamp() 依赖
window.UNSAFE_ATL_CONTEXT_BOUNDARY 在页面上显示,以防
window.UNSAFE_ATL_CONTEXT_BOUNDARY 它将试图根据
网站域名,最终折回为假.
import { isFedRamp } from '@atlaskit/atlassian-context';
if (isFedRamp()) {
// your specific logic here
}
是Fedramp 模版( )
如果当前周边位于 FedRAMP-Modelate 中, 返回真实性 .
孤立的云( )
如果当前周边处于孤立云中, 返回真实值 .
孤立的 Cloud 域( )
返回当前 ic_domain。如果目前的周边不是L2 IC(例如,目前的Federamp-moderate或正版商业),则返回未定义.
孤立 ContextId ()
返回当前孤立上下文标识符( ex: ic-123) (中文(简体) ). 如果目前的周界不是L2 IC(例如,周界是联邦制-中度或常规商业),则返回未定义.
获得Domain InContext( 子域, 环境)
返回给定的Atlassian服务或体验的完整域名(包括支持隔离云).
重要: 注意库目前不保证请求域存在! 据推测,当一个用户请求一个特定服务的全部域名时,他们已经知道域名的存在.
参数:
-
subdomain是需要的参数。 这应该是要求获得全部域名的服务或Atlassian的经验. -
environment是需要的参数。 这应该是dev, (中文(简体) ),staging,或prod。 。 。 .
非孤云细说:
对于非孤立的云(如Federamp-moderate和正则商业),将使用周边和环境值来创建并返回预期域.
例外保存于 全域覆盖 定义。 如果您需要URL映射, 那么您应该添加一个条目到 domains.tsx。 。 。 .
实例: 当在联邦中调时:
import { getDomainInContext } from '@atlaskit/atlassian-context';
getDomainInContext('id', 'staging') // returns "id.stg.atlassian-us-gov-mod.com" (id has a full domain override)
getDomainInContext('analytics', 'staging') // returns "analytics.atlassian.com" because `analytics` is a non-varying global domain
getDomainInContext('nonexistent-service', 'staging') // returns "nonexistent-service.stg.atlassian-us-gov-mod.com"
(非同化)商业召见时:
import { getDomainInContext } from '@atlaskit/atlassian-context';
getDomainInContext('id', 'prod') // returns "id.atlassian.com"
getDomainInContext('analytics', 'prod') // returns "analytics.atlassian.com"
孤云细说:
对于绿洲,返回三个域类型之一:一个保留名域,一个命名空间子域名,或者一个Atlassian服务子域名(参见 RFC (RFC ) (法语)) (中文(简体) ).
保留的名称和命名空间子域正在临时配置 准备金 名称映射和地图 定义。 如果在其中一个类别下注册了一个新名称,请提出PR,以更新相关的映射.
优先级如下: 保留名称模式 > 命名空间模式 > 默认为服务模式.
示例 (同化)商业召见时:
import { getDomainInContext } from '@atlaskit/atlassian-context';
getDomainInContext('id') // returns "id.<icLabel>.<baseDomain>"
getDomainInContext('packages') // returns "packages.atl.<icLabel>.<baseDomain>"
getDomainInContext('new-service') // returns "new-service.services.<icLabel>.<baseDomain>"
获取 UrlForDomain 连接( 子域, 环境)
通过将当前 URL 方案附加到结果中来返回给定的 Atlassian 服务的全部 url(包括支持隔离云) getDomainInContext(subdomain, environment)。 。 。 .
import { getUrlForDomainInContext } from '@atlaskit/atlassian-context';
getUrlForDomainInContext('design', 'staging') // --> returns "https://design.atlassian.com"
解析器
鉴于用户提供的 URL 边界密钥地图, 返回与当前边界相关的 URL 。 与 getUrlForDomainInContext(subdomain, environment),它从已知的Atlassian子域图案构造一个URL, resolveProvidedUrlByBoundary 用于您拥有完全的,任意的URL,每个边界可能完全不同(例如第三方服务端点或自定义后端URL)的情况.
唯一的参数是 urls,用于 URL 对象。 这个 default 键为 所需经费 作为保证倒计时;所有特定边界的密钥都是可选的.
有效密钥为 'isolated-cloud' | 'fedramp-moderate' | 'commercial' | 'default' (必须)
分辨率命令 :
-
特定边界密钥( E)
'isolated-cloud', (中文(简体) ),'fedramp-moderate',或'commercial'(中文(简体) ) -
'default'
过 null 用于明确返回的边界密钥 null 用于该边界(即选择不返回 URL).
说明: URL 值由调用者使用
new URL(...)。将无效的 URL 字符串传递到new URL()将丢出一个TypeError在此之前resolveProvidedUrlByBoundary被援引.
import { resolveProvidedUrlByBoundary } from '@atlaskit/atlassian-context/resolve-provided-url-by-boundary';
const url = resolveProvidedUrlByBoundary({
'isolated-cloud': new URL('https://ic.example.com'), // returned in Isolated Cloud
'fedramp-moderate': null, // explicitly no URL in FedRAMP to represent FedRAMP unavailability
default: new URL('https://example.com'), // returned in all other boundaries
});