@authrim/setup 0.1.24 → 0.1.26

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.
@@ -24,7 +24,7 @@ function printBanner() {
24
24
  console.log('');
25
25
  console.log(chalk.blue('╔═══════════════════════════════════════════════════════════╗'));
26
26
  console.log(chalk.blue('║') +
27
- chalk.bold.white(' 🔐 Authrim Setup v0.1.24 ') +
27
+ chalk.bold.white(' 🔐 Authrim Setup v0.1.26 ') +
28
28
  chalk.blue('║'));
29
29
  console.log(chalk.blue('║') +
30
30
  chalk.gray(' OIDC Provider on Cloudflare Workers ') +
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ const program = new Command();
17
17
  program
18
18
  .name('authrim-setup')
19
19
  .description('CLI tool for setting up Authrim OIDC Provider on Cloudflare Workers')
20
- .version('0.1.24');
20
+ .version('0.1.26');
21
21
  program
22
22
  .command('init', { isDefault: true })
23
23
  .description('Initialize a new Authrim setup')
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAg6EnF"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CA65EnF"}
package/dist/web/ui.js CHANGED
@@ -852,93 +852,89 @@ export function getHtmlTemplate(sessionToken, manageOnly) {
852
852
  <div id="section-config" class="card hidden">
853
853
  <h2 class="card-title">Configuration</h2>
854
854
 
855
- <div class="form-group">
856
- <label for="env">Environment Name <span style="color: var(--error);">*</span></label>
857
- <input type="text" id="env" placeholder="e.g., prod, staging, dev, myenv" required>
858
- <small style="color: var(--text-muted)">Lowercase letters, numbers, and hyphens only</small>
859
- </div>
860
-
861
- <!-- Infrastructure Info (read-only, auto-generated) -->
862
- <div class="infra-section">
863
- <h4>🔧 Infrastructure (Auto-generated from Environment)</h4>
864
- <div class="infra-item">
865
- <span class="infra-label">Worker Prefix:</span>
866
- <span class="infra-value" id="infra-worker-prefix">{env}-ar-*</span>
867
- </div>
868
- <div class="infra-item">
869
- <span class="infra-label">Default API:</span>
870
- <span class="infra-value" id="infra-default-api">{env}-ar-router.workers.dev</span>
871
- </div>
872
- <div class="infra-item">
873
- <span class="infra-label">Default UI:</span>
874
- <span class="infra-value" id="infra-default-ui">{env}-ar-ui.pages.dev</span>
855
+ <!-- 1. Components (shown in custom mode) -->
856
+ <div id="advanced-options" class="hidden">
857
+ <h3 style="margin: 0 0 1rem; font-size: 1rem;">📦 Components</h3>
858
+ <div class="checkbox-group">
859
+ <label class="checkbox-item">
860
+ <input type="checkbox" id="comp-api" checked disabled>
861
+ API (required)
862
+ </label>
863
+ <label class="checkbox-item">
864
+ <input type="checkbox" id="comp-login-ui" checked>
865
+ Login UI
866
+ </label>
867
+ <label class="checkbox-item">
868
+ <input type="checkbox" id="comp-admin-ui" checked>
869
+ Admin UI
870
+ </label>
871
+ <label class="checkbox-item">
872
+ <input type="checkbox" id="comp-saml">
873
+ SAML IdP
874
+ </label>
875
+ <label class="checkbox-item">
876
+ <input type="checkbox" id="comp-async">
877
+ Device Flow / CIBA
878
+ </label>
879
+ <label class="checkbox-item">
880
+ <input type="checkbox" id="comp-vc">
881
+ Verifiable Credentials
882
+ </label>
875
883
  </div>
884
+ <hr style="margin: 1.5rem 0; border: none; border-top: 1px solid var(--border);">
876
885
  </div>
877
886
 
878
- <!-- Tenant Mode Selection -->
887
+ <!-- 2. Environment Name -->
879
888
  <div class="form-group">
880
- <label class="checkbox-item" style="display: flex; align-items: center; gap: 0.5rem;">
881
- <input type="checkbox" id="multi-tenant">
882
- <span>Enable multi-tenant mode</span>
883
- </label>
884
- <small style="color: var(--text-muted); margin-left: 1.5rem;">
885
- Subdomain-based tenant isolation: https://{tenant}.{base-domain}
886
- </small>
889
+ <label for="env">Environment Name <span style="color: var(--error);">*</span></label>
890
+ <input type="text" id="env" placeholder="e.g., prod, staging, dev" required>
891
+ <small style="color: var(--text-muted)">Lowercase letters, numbers, and hyphens only</small>
887
892
  </div>
888
893
 
889
- <!-- Single-tenant: Issuer/API Domain -->
890
- <div id="single-tenant-domain" class="domain-section">
891
- <h4>🌐 Issuer & API Domain</h4>
892
- <div class="section-hint">
893
- In single-tenant mode, Issuer URL = API domain. Leave empty to use workers.dev.
894
- </div>
895
- <div class="domain-row">
896
- <span class="domain-label">Issuer/API</span>
897
- <div class="domain-input-wrapper">
898
- <input type="text" id="api-domain" placeholder="auth.example.com">
899
- <span class="domain-default" id="api-default">{env}-ar-router.workers.dev</span>
900
- </div>
901
- </div>
902
- <div class="issuer-preview" id="issuer-preview-single">
903
- <span class="label">Issuer URL:</span>
904
- <span class="value" id="issuer-url-single">https://{env}-ar-router.workers.dev</span>
905
- </div>
906
- </div>
894
+ <!-- 3. Domain Configuration -->
895
+ <!-- 3.1 API / Issuer Domain -->
896
+ <div class="domain-section">
897
+ <h4>🌐 API / Issuer Domain</h4>
907
898
 
908
- <!-- Multi-tenant: Base Domain (issuer derived from subdomain) -->
909
- <div id="multi-tenant-domain" class="domain-section" style="display: none;">
910
- <h4>🌐 Multi-tenant Base Domain</h4>
911
- <div class="section-hint">
912
- Each tenant gets a subdomain. The base domain points to the router Worker.
913
- </div>
914
899
  <div class="form-group" style="margin-bottom: 0.75rem;">
915
900
  <label for="base-domain">Base Domain <span style="color: var(--error);">*</span></label>
916
901
  <input type="text" id="base-domain" placeholder="authrim.com">
902
+ <small style="color: var(--text-muted)">Your domain for Authrim (e.g., authrim.com)</small>
917
903
  </div>
918
- <div class="issuer-preview" id="issuer-preview-multi">
919
- <span class="label">Issuer URL format:</span>
920
- <span class="value" id="issuer-url-multi">https://{tenant}.{base-domain}</span>
904
+
905
+ <!-- Naked Domain Option -->
906
+ <div class="form-group" style="margin-bottom: 0.75rem;">
907
+ <label class="checkbox-item" style="display: flex; align-items: center; gap: 0.5rem;">
908
+ <input type="checkbox" id="naked-domain">
909
+ <span>Start with naked domain</span>
910
+ </label>
911
+ <small style="color: var(--text-muted); margin-left: 1.5rem;">
912
+ Use https://example.com as initial Issuer. You can add subdomain tenants (tenant1.example.com) later.
913
+ </small>
921
914
  </div>
922
- </div>
923
915
 
924
- <!-- Tenant Details -->
925
- <div class="form-group">
926
- <label for="tenant-name">Default Tenant Name</label>
927
- <input type="text" id="tenant-name" placeholder="default" value="default">
928
- <small style="color: var(--text-muted)">Identifier for default tenant (lowercase, no spaces)</small>
929
- </div>
916
+ <!-- Default Tenant (hidden when naked domain is checked) -->
917
+ <div id="tenant-fields">
918
+ <div class="form-group" style="margin-bottom: 0.5rem;">
919
+ <label for="tenant-name">Default Tenant Name</label>
920
+ <input type="text" id="tenant-name" placeholder="default" value="default">
921
+ <small style="color: var(--text-muted)">First tenant identifier (lowercase, no spaces)</small>
922
+ </div>
923
+ </div>
930
924
 
931
- <div class="form-group">
932
- <label for="tenant-display">Organization / Display Name</label>
933
- <input type="text" id="tenant-display" placeholder="My Organization" value="Default Tenant">
934
- <small style="color: var(--text-muted)">Human-readable name shown to users</small>
925
+ <div class="form-group" style="margin-bottom: 0;">
926
+ <label for="tenant-display">Organization Name</label>
927
+ <input type="text" id="tenant-display" placeholder="My Organization" value="Default Tenant">
928
+ <small style="color: var(--text-muted)">Display name shown to users</small>
929
+ </div>
935
930
  </div>
936
931
 
937
- <!-- UI Domain Configuration -->
932
+ <!-- 3.2 UI Domains -->
938
933
  <div class="domain-section">
939
934
  <h4>🖥️ UI Domains (Optional)</h4>
940
935
  <div class="section-hint">
941
- Custom domains for Login and Admin UIs. Leave empty to use Cloudflare Pages default.
936
+ Custom domains for Login/Admin UIs. Each can be set independently.
937
+ Leave empty to use Cloudflare Pages default.
942
938
  </div>
943
939
 
944
940
  <div class="domain-row">
@@ -956,42 +952,30 @@ export function getHtmlTemplate(sessionToken, manageOnly) {
956
952
  <span class="domain-default" id="admin-default">{env}-ar-ui.pages.dev/admin</span>
957
953
  </div>
958
954
  </div>
955
+
956
+ <div class="section-hint" style="margin-top: 0.75rem; background: #fef3c7;">
957
+ 💡 CORS: Cross-origin requests from Login/Admin UI to API are automatically allowed.
958
+ </div>
959
959
  </div>
960
960
 
961
- <!-- Advanced options (shown in custom mode) -->
962
- <div id="advanced-options" class="hidden">
963
- <h3 style="margin: 1.5rem 0 1rem; font-size: 1rem;">Components</h3>
964
- <div class="checkbox-group">
965
- <label class="checkbox-item">
966
- <input type="checkbox" id="comp-api" checked disabled>
967
- API (required)
968
- </label>
969
- <label class="checkbox-item">
970
- <input type="checkbox" id="comp-login-ui" checked>
971
- Login UI
972
- </label>
973
- <label class="checkbox-item">
974
- <input type="checkbox" id="comp-admin-ui" checked>
975
- Admin UI
976
- </label>
977
- <label class="checkbox-item">
978
- <input type="checkbox" id="comp-saml">
979
- SAML IdP
980
- </label>
981
- <label class="checkbox-item">
982
- <input type="checkbox" id="comp-async">
983
- Device Flow / CIBA
984
- </label>
985
- <label class="checkbox-item">
986
- <input type="checkbox" id="comp-vc">
987
- Verifiable Credentials
988
- </label>
989
- <div class="checkbox-item" style="color: var(--text-muted); font-style: italic;">
990
- ✓ External IdP (Social Login) - included
991
- </div>
992
- <div class="checkbox-item" style="color: var(--text-muted); font-style: italic;">
993
- ✓ ReBAC Policy Engine - included
994
- </div>
961
+ <!-- 4. Preview Section (at the bottom) -->
962
+ <div class="infra-section" id="config-preview">
963
+ <h4>📋 Configuration Preview</h4>
964
+ <div class="infra-item">
965
+ <span class="infra-label">Workers:</span>
966
+ <span class="infra-value" id="preview-workers">{env}-ar-router, {env}-ar-auth, ...</span>
967
+ </div>
968
+ <div class="infra-item">
969
+ <span class="infra-label">Issuer URL:</span>
970
+ <span class="infra-value" id="preview-issuer">https://{tenant}.{base-domain}</span>
971
+ </div>
972
+ <div class="infra-item">
973
+ <span class="infra-label">Login UI:</span>
974
+ <span class="infra-value" id="preview-login">{env}-ar-ui.pages.dev</span>
975
+ </div>
976
+ <div class="infra-item">
977
+ <span class="infra-label">Admin UI:</span>
978
+ <span class="infra-value" id="preview-admin">{env}-ar-ui.pages.dev/admin</span>
995
979
  </div>
996
980
  </div>
997
981
 
@@ -1569,53 +1553,70 @@ export function getHtmlTemplate(sessionToken, manageOnly) {
1569
1553
  });
1570
1554
 
1571
1555
  // Configuration handlers
1572
- // Update infrastructure info and domain defaults when environment name changes
1573
- function updateEnvDisplay(env) {
1574
- env = env || '{env}';
1575
- // Infrastructure section
1576
- document.getElementById('infra-worker-prefix').textContent = env + '-ar-*';
1577
- document.getElementById('infra-default-api').textContent = env + '-ar-router.workers.dev';
1578
- document.getElementById('infra-default-ui').textContent = env + '-ar-ui.pages.dev';
1579
- // Domain defaults
1580
- document.getElementById('api-default').textContent = env + '-ar-router.workers.dev';
1556
+ // Update preview section when any input changes
1557
+ function updatePreview() {
1558
+ const env = document.getElementById('env').value.trim().toLowerCase().replace(/[^a-z0-9-]/g, '') || '{env}';
1559
+ const baseDomain = document.getElementById('base-domain').value.trim();
1560
+ const nakedDomain = document.getElementById('naked-domain').checked;
1561
+ const tenantName = document.getElementById('tenant-name').value.trim() || 'default';
1562
+ const loginDomain = document.getElementById('login-domain').value.trim();
1563
+ const adminDomain = document.getElementById('admin-domain').value.trim();
1564
+
1565
+ // Workers
1566
+ document.getElementById('preview-workers').textContent = env + '-ar-router, ' + env + '-ar-auth, ...';
1567
+
1568
+ // Issuer URL
1569
+ if (baseDomain) {
1570
+ if (nakedDomain) {
1571
+ // Naked domain: https://example.com
1572
+ document.getElementById('preview-issuer').textContent = 'https://' + baseDomain;
1573
+ } else {
1574
+ // Subdomain: https://tenant.example.com
1575
+ document.getElementById('preview-issuer').textContent = 'https://' + tenantName + '.' + baseDomain;
1576
+ }
1577
+ } else {
1578
+ if (nakedDomain) {
1579
+ document.getElementById('preview-issuer').textContent = 'https://{base-domain}';
1580
+ } else {
1581
+ document.getElementById('preview-issuer').textContent = 'https://{tenant}.{base-domain}';
1582
+ }
1583
+ }
1584
+
1585
+ // Login UI
1586
+ if (loginDomain) {
1587
+ document.getElementById('preview-login').textContent = 'https://' + loginDomain;
1588
+ } else {
1589
+ document.getElementById('preview-login').textContent = 'https://' + env + '-ar-ui.pages.dev';
1590
+ }
1581
1591
  document.getElementById('login-default').textContent = env + '-ar-ui.pages.dev';
1592
+
1593
+ // Admin UI
1594
+ if (adminDomain) {
1595
+ document.getElementById('preview-admin').textContent = 'https://' + adminDomain;
1596
+ } else {
1597
+ document.getElementById('preview-admin').textContent = 'https://' + env + '-ar-ui.pages.dev/admin';
1598
+ }
1582
1599
  document.getElementById('admin-default').textContent = env + '-ar-ui.pages.dev/admin';
1583
- // Single-tenant issuer preview
1584
- const apiDomain = document.getElementById('api-domain').value.trim();
1585
- document.getElementById('issuer-url-single').textContent =
1586
- apiDomain ? 'https://' + apiDomain : 'https://' + env + '-ar-router.workers.dev';
1587
1600
  }
1588
1601
 
1589
- document.getElementById('env').addEventListener('input', (e) => {
1590
- const env = e.target.value.trim().toLowerCase().replace(/[^a-z0-9-]/g, '') || '{env}';
1591
- updateEnvDisplay(env);
1592
- });
1593
-
1594
- // Update issuer preview when API domain changes
1595
- document.getElementById('api-domain').addEventListener('input', (e) => {
1596
- const env = document.getElementById('env').value.trim().toLowerCase().replace(/[^a-z0-9-]/g, '') || '{env}';
1597
- const apiDomain = e.target.value.trim();
1598
- document.getElementById('issuer-url-single').textContent =
1599
- apiDomain ? 'https://' + apiDomain : 'https://' + env + '-ar-router.workers.dev';
1600
- });
1601
-
1602
- // Update multi-tenant issuer preview when base domain changes
1603
- document.getElementById('base-domain').addEventListener('input', (e) => {
1604
- const baseDomain = e.target.value.trim() || '{base-domain}';
1605
- document.getElementById('issuer-url-multi').textContent = 'https://{tenant}.' + baseDomain;
1602
+ // Attach event listeners to all inputs
1603
+ ['env', 'base-domain', 'naked-domain', 'tenant-name', 'login-domain', 'admin-domain'].forEach(id => {
1604
+ const el = document.getElementById(id);
1605
+ if (el) {
1606
+ el.addEventListener('input', updatePreview);
1607
+ el.addEventListener('change', updatePreview);
1608
+ }
1606
1609
  });
1607
1610
 
1608
- // Multi-tenant mode toggle - show/hide relevant domain sections
1609
- document.getElementById('multi-tenant').addEventListener('change', (e) => {
1610
- const singleTenantDomain = document.getElementById('single-tenant-domain');
1611
- const multiTenantDomain = document.getElementById('multi-tenant-domain');
1611
+ // Naked domain toggle - show/hide tenant name field
1612
+ document.getElementById('naked-domain').addEventListener('change', (e) => {
1613
+ const tenantFields = document.getElementById('tenant-fields');
1612
1614
  if (e.target.checked) {
1613
- singleTenantDomain.style.display = 'none';
1614
- multiTenantDomain.style.display = 'block';
1615
+ tenantFields.style.display = 'none';
1615
1616
  } else {
1616
- singleTenantDomain.style.display = 'block';
1617
- multiTenantDomain.style.display = 'none';
1617
+ tenantFields.style.display = 'block';
1618
1618
  }
1619
+ updatePreview();
1619
1620
  });
1620
1621
 
1621
1622
  document.getElementById('btn-back-mode').addEventListener('click', () => {
@@ -1654,26 +1655,21 @@ export function getHtmlTemplate(sessionToken, manageOnly) {
1654
1655
  configureBtn.disabled = false;
1655
1656
  }
1656
1657
 
1657
- const loginDomain = document.getElementById('login-domain').value.trim();
1658
- const adminDomain = document.getElementById('admin-domain').value.trim();
1659
- const multiTenant = document.getElementById('multi-tenant').checked;
1660
1658
  const baseDomain = document.getElementById('base-domain').value.trim();
1659
+ const nakedDomain = document.getElementById('naked-domain').checked;
1661
1660
  const tenantName = document.getElementById('tenant-name').value.trim() || 'default';
1662
1661
  const tenantDisplayName = document.getElementById('tenant-display').value.trim() || 'Default Tenant';
1662
+ const loginDomain = document.getElementById('login-domain').value.trim();
1663
+ const adminDomain = document.getElementById('admin-domain').value.trim();
1663
1664
 
1664
- // Validate base domain if multi-tenant is enabled
1665
- if (multiTenant && !baseDomain) {
1666
- const result = document.getElementById('provision-output');
1667
- result.textContent = '';
1668
- result.appendChild(createAlert('error', 'Base domain is required for multi-tenant mode'));
1665
+ // Validate base domain is required
1666
+ if (!baseDomain) {
1667
+ alert('Base domain is required');
1669
1668
  return;
1670
1669
  }
1671
1670
 
1672
- // In multi-tenant mode, API domain = base domain (wildcard subdomain routing)
1673
- // In single-tenant mode, API domain = custom domain or null (workers.dev fallback)
1674
- const apiDomain = multiTenant
1675
- ? baseDomain
1676
- : (document.getElementById('api-domain').value.trim() || null);
1671
+ // API domain = base domain (wildcard subdomain routing)
1672
+ const apiDomain = baseDomain;
1677
1673
 
1678
1674
  config = {
1679
1675
  env,
@@ -1681,10 +1677,11 @@ export function getHtmlTemplate(sessionToken, manageOnly) {
1681
1677
  loginUiDomain: loginDomain || null,
1682
1678
  adminUiDomain: adminDomain || null,
1683
1679
  tenant: {
1684
- name: tenantName,
1680
+ name: nakedDomain ? null : tenantName, // null for naked domain
1685
1681
  displayName: tenantDisplayName,
1686
- multiTenant,
1687
- baseDomain: multiTenant ? baseDomain : undefined,
1682
+ multiTenant: true, // Always multi-tenant capable
1683
+ baseDomain: baseDomain,
1684
+ nakedDomain: nakedDomain,
1688
1685
  },
1689
1686
  components: {
1690
1687
  api: true,
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,eAAe,CAAC,YAAqB,EAAE,UAAoB;IACzE,gDAAgD;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA2tCoB,SAAS;0BACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8rChC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,eAAe,CAAC,YAAqB,EAAE,UAAoB;IACzE,gDAAgD;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAErD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA2sCoB,SAAS;0BACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2sChC,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authrim/setup",
3
- "version": "0.1.24",
3
+ "version": "0.1.26",
4
4
  "description": "CLI tool for setting up Authrim OIDC Provider on Cloudflare Workers",
5
5
  "type": "module",
6
6
  "bin": {