@fjall/util 2.18.3 → 2.19.0

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/dist/.minified CHANGED
@@ -1 +1 @@
1
- 65 files minified at 2026-06-19T11:25:53.234Z
1
+ 65 files minified at 2026-06-19T23:40:23.010Z
package/dist/index.d.ts CHANGED
@@ -19,6 +19,6 @@ export { buildAppConfigPath } from "./appPath.js";
19
19
  export { type ScanPath } from "./scanTypes.js";
20
20
  export { findInfrastructurePaths, findBoundaryPath, isInfrastructureFile, type MarkerEntry, type FindInfrastructurePathsOptions } from "./findInfrastructurePaths.js";
21
21
  export { inferContainerFromCandidates } from "./inferContainerFromCandidates.js";
22
- export { RESERVED_APP_NAMES, type ReservedAppName, isReservedAppName } from "./reservedAppNames.js";
22
+ export { RESERVED_APP_NAMES, type ReservedAppName, RESERVED_APP_NAME_MESSAGE, isReservedAppName } from "./reservedAppNames.js";
23
23
  export { deriveContentHashTag } from "./deriveContentHashTag.js";
24
24
  export { MIGRATION_SNAPSHOT_NAME_PREFIX, EXPECTED_SCHEMA_VERSION_ENV, EXPECTED_SCHEMA_VERSION_TOOL_ENV, EXPECTED_CH_SCHEMA_VERSION_ENV, SCHEMA_ADMIN_USER_ENV, SCHEMA_ADMIN_PASSWORD_ENV, PRISMA_MIGRATION_DIR_RE, CLICKHOUSE_MIGRATION_SKIP_RE } from "./migration/constants.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{DNS_APEX as o,getDomainExportNames as t}from"./domainExports.js";import{BACKUP_VAULT_NAME as E}from"./backupVault.js";import{imageTagParameterName as i}from"./imageTags.js";import{toPascalCase as _,toKebab as m,toValidDatabaseName as A,toScreamingSnake as s,capitalise as C,getSafeZoneName as T,accountConstructKey as N,hasAsciiStableConstructKey as R}from"./caseConversion.js";import{findAccountNameCollision as p}from"./accountNameCollision.js";import{normaliseError as O,getErrorMessage as c,hasErrorCode as I,getErrorCode as x,getErrorStack as u,formatErrorString as l}from"./errorUtils.js";import{singleton as P}from"./singleton.js";import{DANGEROUS_ENV_VARS as M,filterDangerousEnvVars as U,maskSensitiveOutput as V,parseShellArgs as G}from"./securityHelpers.js";import{sleep as h}from"./sleep.js";import{mapSettledWithConcurrency as H}from"./concurrency.js";import{ACCOUNT_STAGES_WITH_ROOT as F,STRUCTURAL_ENVIRONMENTS as W,ACCOUNT_STAGES as y,ACCOUNT_STAGE_LABELS as K,isAccountStage as X,ACCOUNT_TIERS as k,AccountTierSchema as B,isAccountTier as z,environmentToTier as Y,stageFromWireEnvironment as Z,accountTier as j,getEnvironmentLabel as q,ACCOUNT_ROLES as w}from"./environments.js";import{RESOURCE_CATEGORIES as Q,categoriseResource as $,getExpectedDuration as ee,getFriendlyResourceType as re}from"./resourceCategorisation.js";import{parseGitRemoteUrl as te}from"./gitRemoteParser.js";import{abbreviateRegion as Ee,AWS_REGIONS_METADATA as ae,DEFAULT_REGION as ie,getRegionInfo as Se,MAX_SECONDARY_REGIONS as _e,OPT_IN_REGION_CODES as me,optInRegionWarning as Ae,regions as se,suggestRegionForTimezone as Ce}from"./regions.js";import{SCOPE_VALUES as Ne}from"./tokenScopes.js";import{ConnectionWireSchema as ge,ConnectionsListResponseSchema as pe}from"./connectionsWire.js";import{deriveRegionsFromOrgConfig as Oe,deriveTargets as ce,deriveAllTargets as Ie,environmentOrTier as xe,findTarget as ue,generateTargetName as le}from"./targets.js";import{buildAppConfigPath as Pe}from"./appPath.js";import{findInfrastructurePaths as Me,findBoundaryPath as Ue,isInfrastructureFile as Ve}from"./findInfrastructurePaths.js";import{inferContainerFromCandidates as ve}from"./inferContainerFromCandidates.js";import{RESERVED_APP_NAMES as Le,isReservedAppName as He}from"./reservedAppNames.js";import{deriveContentHashTag as Fe}from"./deriveContentHashTag.js";import{MIGRATION_SNAPSHOT_NAME_PREFIX as ye,EXPECTED_SCHEMA_VERSION_ENV as Ke,EXPECTED_SCHEMA_VERSION_TOOL_ENV as Xe,EXPECTED_CH_SCHEMA_VERSION_ENV as ke,SCHEMA_ADMIN_USER_ENV as Be,SCHEMA_ADMIN_PASSWORD_ENV as ze,PRISMA_MIGRATION_DIR_RE as Ye,CLICKHOUSE_MIGRATION_SKIP_RE as Ze}from"./migration/constants.js";export{w as ACCOUNT_ROLES,y as ACCOUNT_STAGES,F as ACCOUNT_STAGES_WITH_ROOT,K as ACCOUNT_STAGE_LABELS,k as ACCOUNT_TIERS,ae as AWS_REGIONS_METADATA,B as AccountTierSchema,E as BACKUP_VAULT_NAME,Ze as CLICKHOUSE_MIGRATION_SKIP_RE,ge as ConnectionWireSchema,pe as ConnectionsListResponseSchema,M as DANGEROUS_ENV_VARS,ie as DEFAULT_REGION,o as DNS_APEX,ke as EXPECTED_CH_SCHEMA_VERSION_ENV,Ke as EXPECTED_SCHEMA_VERSION_ENV,Xe as EXPECTED_SCHEMA_VERSION_TOOL_ENV,_e as MAX_SECONDARY_REGIONS,ye as MIGRATION_SNAPSHOT_NAME_PREFIX,me as OPT_IN_REGION_CODES,Ye as PRISMA_MIGRATION_DIR_RE,Le as RESERVED_APP_NAMES,Q as RESOURCE_CATEGORIES,ze as SCHEMA_ADMIN_PASSWORD_ENV,Be as SCHEMA_ADMIN_USER_ENV,Ne as SCOPE_VALUES,W as STRUCTURAL_ENVIRONMENTS,Ee as abbreviateRegion,N as accountConstructKey,j as accountTier,Pe as buildAppConfigPath,C as capitalise,$ as categoriseResource,Ie as deriveAllTargets,Fe as deriveContentHashTag,Oe as deriveRegionsFromOrgConfig,ce as deriveTargets,xe as environmentOrTier,Y as environmentToTier,U as filterDangerousEnvVars,p as findAccountNameCollision,Ue as findBoundaryPath,Me as findInfrastructurePaths,ue as findTarget,l as formatErrorString,le as generateTargetName,t as getDomainExportNames,q as getEnvironmentLabel,x as getErrorCode,c as getErrorMessage,u as getErrorStack,ee as getExpectedDuration,re as getFriendlyResourceType,Se as getRegionInfo,T as getSafeZoneName,R as hasAsciiStableConstructKey,I as hasErrorCode,i as imageTagParameterName,ve as inferContainerFromCandidates,X as isAccountStage,z as isAccountTier,Ve as isInfrastructureFile,He as isReservedAppName,H as mapSettledWithConcurrency,V as maskSensitiveOutput,O as normaliseError,Ae as optInRegionWarning,te as parseGitRemoteUrl,G as parseShellArgs,se as regions,P as singleton,h as sleep,Z as stageFromWireEnvironment,Ce as suggestRegionForTimezone,m as toKebab,_ as toPascalCase,s as toScreamingSnake,A as toValidDatabaseName};
1
+ import{DNS_APEX as o,getDomainExportNames as t}from"./domainExports.js";import{BACKUP_VAULT_NAME as n}from"./backupVault.js";import{imageTagParameterName as i}from"./imageTags.js";import{toPascalCase as _,toKebab as A,toValidDatabaseName as m,toScreamingSnake as s,capitalise as R,getSafeZoneName as C,accountConstructKey as N,hasAsciiStableConstructKey as T}from"./caseConversion.js";import{findAccountNameCollision as p}from"./accountNameCollision.js";import{normaliseError as O,getErrorMessage as c,hasErrorCode as I,getErrorCode as x,getErrorStack as u,formatErrorString as P}from"./errorUtils.js";import{singleton as M}from"./singleton.js";import{DANGEROUS_ENV_VARS as D,filterDangerousEnvVars as V,maskSensitiveOutput as U,parseShellArgs as G}from"./securityHelpers.js";import{sleep as h}from"./sleep.js";import{mapSettledWithConcurrency as H}from"./concurrency.js";import{ACCOUNT_STAGES_WITH_ROOT as F,STRUCTURAL_ENVIRONMENTS as W,ACCOUNT_STAGES as y,ACCOUNT_STAGE_LABELS as K,isAccountStage as X,ACCOUNT_TIERS as k,AccountTierSchema as B,isAccountTier as z,environmentToTier as Y,stageFromWireEnvironment as Z,accountTier as j,getEnvironmentLabel as q,ACCOUNT_ROLES as w}from"./environments.js";import{RESOURCE_CATEGORIES as Q,categoriseResource as $,getExpectedDuration as ee,getFriendlyResourceType as re}from"./resourceCategorisation.js";import{parseGitRemoteUrl as te}from"./gitRemoteParser.js";import{abbreviateRegion as ne,AWS_REGIONS_METADATA as ae,DEFAULT_REGION as ie,getRegionInfo as Se,MAX_SECONDARY_REGIONS as _e,OPT_IN_REGION_CODES as Ae,optInRegionWarning as me,regions as se,suggestRegionForTimezone as Re}from"./regions.js";import{SCOPE_VALUES as Ne}from"./tokenScopes.js";import{ConnectionWireSchema as ge,ConnectionsListResponseSchema as pe}from"./connectionsWire.js";import{deriveRegionsFromOrgConfig as Oe,deriveTargets as ce,deriveAllTargets as Ie,environmentOrTier as xe,findTarget as ue,generateTargetName as Pe}from"./targets.js";import{buildAppConfigPath as Me}from"./appPath.js";import{findInfrastructurePaths as De,findBoundaryPath as Ve,isInfrastructureFile as Ue}from"./findInfrastructurePaths.js";import{inferContainerFromCandidates as ve}from"./inferContainerFromCandidates.js";import{RESERVED_APP_NAMES as Le,RESERVED_APP_NAME_MESSAGE as He,isReservedAppName as be}from"./reservedAppNames.js";import{deriveContentHashTag as We}from"./deriveContentHashTag.js";import{MIGRATION_SNAPSHOT_NAME_PREFIX as Ke,EXPECTED_SCHEMA_VERSION_ENV as Xe,EXPECTED_SCHEMA_VERSION_TOOL_ENV as ke,EXPECTED_CH_SCHEMA_VERSION_ENV as Be,SCHEMA_ADMIN_USER_ENV as ze,SCHEMA_ADMIN_PASSWORD_ENV as Ye,PRISMA_MIGRATION_DIR_RE as Ze,CLICKHOUSE_MIGRATION_SKIP_RE as je}from"./migration/constants.js";export{w as ACCOUNT_ROLES,y as ACCOUNT_STAGES,F as ACCOUNT_STAGES_WITH_ROOT,K as ACCOUNT_STAGE_LABELS,k as ACCOUNT_TIERS,ae as AWS_REGIONS_METADATA,B as AccountTierSchema,n as BACKUP_VAULT_NAME,je as CLICKHOUSE_MIGRATION_SKIP_RE,ge as ConnectionWireSchema,pe as ConnectionsListResponseSchema,D as DANGEROUS_ENV_VARS,ie as DEFAULT_REGION,o as DNS_APEX,Be as EXPECTED_CH_SCHEMA_VERSION_ENV,Xe as EXPECTED_SCHEMA_VERSION_ENV,ke as EXPECTED_SCHEMA_VERSION_TOOL_ENV,_e as MAX_SECONDARY_REGIONS,Ke as MIGRATION_SNAPSHOT_NAME_PREFIX,Ae as OPT_IN_REGION_CODES,Ze as PRISMA_MIGRATION_DIR_RE,Le as RESERVED_APP_NAMES,He as RESERVED_APP_NAME_MESSAGE,Q as RESOURCE_CATEGORIES,Ye as SCHEMA_ADMIN_PASSWORD_ENV,ze as SCHEMA_ADMIN_USER_ENV,Ne as SCOPE_VALUES,W as STRUCTURAL_ENVIRONMENTS,ne as abbreviateRegion,N as accountConstructKey,j as accountTier,Me as buildAppConfigPath,R as capitalise,$ as categoriseResource,Ie as deriveAllTargets,We as deriveContentHashTag,Oe as deriveRegionsFromOrgConfig,ce as deriveTargets,xe as environmentOrTier,Y as environmentToTier,V as filterDangerousEnvVars,p as findAccountNameCollision,Ve as findBoundaryPath,De as findInfrastructurePaths,ue as findTarget,P as formatErrorString,Pe as generateTargetName,t as getDomainExportNames,q as getEnvironmentLabel,x as getErrorCode,c as getErrorMessage,u as getErrorStack,ee as getExpectedDuration,re as getFriendlyResourceType,Se as getRegionInfo,C as getSafeZoneName,T as hasAsciiStableConstructKey,I as hasErrorCode,i as imageTagParameterName,ve as inferContainerFromCandidates,X as isAccountStage,z as isAccountTier,Ue as isInfrastructureFile,be as isReservedAppName,H as mapSettledWithConcurrency,U as maskSensitiveOutput,O as normaliseError,me as optInRegionWarning,te as parseGitRemoteUrl,G as parseShellArgs,se as regions,M as singleton,h as sleep,Z as stageFromWireEnvironment,Re as suggestRegionForTimezone,A as toKebab,_ as toPascalCase,s as toScreamingSnake,m as toValidDatabaseName};
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * Reserved application names (cross-system, application-scoped).
3
3
  *
4
- * Both the CLI scaffold schema (`CreateApplicationSchema` in
5
- * `@fjall/cli/src/validation/commandSchemas.ts`) and the webapp scaffold
6
- * schema (`ScaffoldRequestSchema` in `webapp/app/routes/api/github/scaffold.ts`)
7
- * reject any application name whose **lowercase form** appears in this list.
4
+ * Every application-create surface rejects any name whose **lowercase form**
5
+ * appears in this list: the CLI `CreateApplicationSchema`
6
+ * (`@fjall/cli/src/validation/commandSchemas.ts`), the webapp create route
7
+ * (`webapp/app/routes/api/applications/index.ts`), and the webapp scaffold
8
+ * schema `ScaffoldRequestSchema` (`webapp/app/routes/api/github/scaffold.ts`).
8
9
  *
9
10
  * The reserved name `"fjall"` is gated here because it denotes the
10
11
  * organisation-tier marker under the `fjall/` marker convention (P1) — a
@@ -22,6 +23,12 @@
22
23
  */
23
24
  export declare const RESERVED_APP_NAMES: readonly ["fjall"];
24
25
  export type ReservedAppName = (typeof RESERVED_APP_NAMES)[number];
26
+ /**
27
+ * Canonical user-facing rejection message for a reserved application name.
28
+ * Shared by every create surface (the CLI `CreateApplicationSchema`, the webapp
29
+ * create route, the webapp scaffold schema) so the wording cannot drift.
30
+ */
31
+ export declare const RESERVED_APP_NAME_MESSAGE = "The name 'fjall' is reserved for organisation-tier configuration.";
25
32
  /**
26
33
  * Case-insensitive membership check. The canonical entrypoint — consumers
27
34
  * MUST route through this helper rather than calling `.includes(name.toLowerCase())`
@@ -1 +1 @@
1
- const o=["fjall"];function r(e){return o.includes(e.toLowerCase())}export{o as RESERVED_APP_NAMES,r as isReservedAppName};
1
+ const o=["fjall"],r="The name 'fjall' is reserved for organisation-tier configuration.";function n(e){return o.includes(e.toLowerCase())}export{o as RESERVED_APP_NAMES,r as RESERVED_APP_NAME_MESSAGE,n as isReservedAppName};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/util",
3
- "version": "2.18.3",
3
+ "version": "2.19.0",
4
4
  "description": "Common utility methods",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -117,5 +117,5 @@
117
117
  "engines": {
118
118
  "node": ">=22.0.0"
119
119
  },
120
- "gitHead": "50f45ba44cd32824ee560d3e77078d000fa64302"
120
+ "gitHead": "f76888fbf22b7f4ac972fcd12f392c519bd612c2"
121
121
  }