@fjall/util 13.1.0 → 14.1.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.
@@ -9,7 +9,7 @@
9
9
  "package.json",
10
10
  "tsconfig.json"
11
11
  ],
12
- "hash": "918ecf7fbb1c9463f90676a84ba80e6897ae6996be0dd5b1f0c4777301a3ae63",
12
+ "hash": "9ba5f8462c4c5f005ba61e0d6e5f8f1d5c4737b6b20f8f0e66ad1d5f6fcb9372",
13
13
  "files": {
14
14
  "src/async/concurrency.ts": "3c7ebe0222a720f9",
15
15
  "src/async/singleton.ts": "7bcc21b0fb920561",
@@ -67,7 +67,7 @@
67
67
  "src/fsHelpers.ts": "0869d9739d523572",
68
68
  "src/fsScan.ts": "feb187758481443f",
69
69
  "src/httpKeepAlive.ts": "c8fe4b118ef4c79f",
70
- "src/index.ts": "78390afd568e517a",
70
+ "src/index.ts": "cdad78f5609b53dc",
71
71
  "src/infra/backupVault.ts": "661678a6dfb0b648",
72
72
  "src/infra/connectionsWire.ts": "125c099da0e17ac1",
73
73
  "src/infra/deployArtefacts.ts": "235ac21dd3ccf0b2",
@@ -94,8 +94,8 @@
94
94
  "src/naming/connectedAccountName.ts": "3cd3bc7dba0a2f0b",
95
95
  "src/naming/reservedAppNames.ts": "7f63dd0b84c1972e",
96
96
  "src/naming/targetExportNames.ts": "82447463310e43c8",
97
- "src/patterns/index.ts": "6e8b1b7a4a7db24c",
98
- "src/patterns/patternTypes.ts": "c64758645bc88702",
97
+ "src/patterns/index.ts": "9f024b45c2e225b0",
98
+ "src/patterns/patternTypes.ts": "6e0aff0443bcb770",
99
99
  "src/patterns/staticSiteForms.ts": "86ffcf142d9a8eac",
100
100
  "src/repo/appPath.ts": "9aa0d01262b88e65",
101
101
  "src/repo/findInfrastructurePaths.ts": "dd1245f5d4004dd5",
@@ -110,9 +110,9 @@
110
110
  "src/securityHelpers.ts": "3f78606079c8f45e",
111
111
  "src/targets.ts": "126280f0a5762e21",
112
112
  "../scripts/minify-dist.mjs": "6b2e4b0df8aec601",
113
- "package.json": "83f66333972f8c19",
113
+ "package.json": "76d445ee30fe22a0",
114
114
  "tsconfig.json": "db759831ad95f396"
115
115
  },
116
- "outputHash": "95e51b214826981de4601cb13da7e0da3f01016e580733c608909d2c1500dbd4",
116
+ "outputHash": "56ec5530931e99e606abcd810bb468f515fe1c94e836fa33623ba7c6d581e3b8",
117
117
  "outputFileCount": 203
118
118
  }
package/dist/.minified CHANGED
@@ -1 +1 @@
1
- 101 files minified at 2026-08-16T09:59:38.572Z
1
+ 101 files minified at 2026-08-17T10:21:54.082Z
package/dist/index.d.ts CHANGED
@@ -29,7 +29,7 @@ export { deriveContentHashTag, CONTENT_HASH_TAG_PATTERN } from "./infra/deriveCo
29
29
  export { DEPLOY_MODES, DeployModeSchema, type DeployMode, IMAGE_TAG_PATTERN, ImageTagSchema, type ImageTag, ServiceArtefactSchema, type ServiceArtefact, ServiceArtefactsSchema, type ServiceArtefacts, ARTEFACT_OUTPUT_FIELDS, type ArtefactOutputField, artefactOutputKey } from "./infra/deployArtefacts.js";
30
30
  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";
31
31
  export { PHYSICAL_NAME_FALLBACK_PROPERTIES } from "./cfn/physicalNameProperties.js";
32
- export { PATTERN_TYPE_VALUES, type PatternType, PATTERN_TYPES, isPatternType, type PatternArtefact, type PatternStackPlacement, type PatternDescriptor, PATTERN_REGISTRY, DEPLOYABLE_PATTERN_TYPES, type OpenNextPatternType, OPENNEXT_PATTERN_TYPES, isOpenNextPatternType, STATIC_SITE_ROUTING_VALUES, type StaticSiteRouting } from "./patterns/patternTypes.js";
32
+ export { PATTERN_TYPE_VALUES, type PatternType, PATTERN_TYPES, isPatternType, type PatternArtefact, type PatternStackPlacement, type PatternDescriptor, PATTERN_REGISTRY, patternConstructId, DEPLOYABLE_PATTERN_TYPES, type OpenNextPatternType, OPENNEXT_PATTERN_TYPES, isOpenNextPatternType, STATIC_SITE_ROUTING_VALUES, type StaticSiteRouting } from "./patterns/patternTypes.js";
33
33
  export { DEFAULT_FORMS_FROM_LOCAL_PART, defaultFormsFromAddress, defaultFormsCorsOrigin, isAddressAtDomain } from "./patterns/staticSiteForms.js";
34
34
  export { DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION, DEV_SUBSTRATE_PARAMS_FILENAME, DevSubstrateSynthPropsSchema, type DevSubstrateSynthProps, DevSubstrateParamsSchema, type DevSubstrateParams } from "./devSubstrate/params.js";
35
35
  export { DEV_SUBSTRATE_ENTRYPOINT_SOURCE } from "./devSubstrate/entrypoint.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{DNS_APEX as r,getDomainExportNames as t,getDomainStackName as o,getDomainUsEast1CertificatesStackName as _,isManagedDomainBinding as a,DOMAIN_DEPLOY_DEFAULT_PHASE as A}from"./infra/domainExports.js";import{BACKUP_VAULT_NAME as T}from"./infra/backupVault.js";import{APPROVAL_TOKEN_OUTPUT_PREFIX as n,TOKEN_STDERR_PREFIX as R}from"./deploy/approvalTokenOutput.js";import{imageTagParameterName as m}from"./infra/imageTags.js";import{toPascalCase as P,toKebab as C,toValidDatabaseName as s,toScreamingSnake as p,capitalise as c,getSafeZoneName as I,accountConstructKey as D,hasAsciiStableConstructKey as f}from"./naming/caseConversion.js";import{albDnsExportName as L,albHostedZoneIdExportName as l,cdnDomainExportName as g,bucketWebsiteEndpointExportName as u,bucketWebsiteHostedZoneIdExportName as d}from"./naming/targetExportNames.js";import{CAPACITY_SLOT_PATTERN as x,CAPACITY_SLOT_MAX_LENGTH as F,DEFAULT_CAPACITY_SLOT as h,CAPACITY_ANCHOR_PATTERN as V,CAPACITY_ANCHOR_MAX_LENGTH as y,CAPACITY_IDENTITY_CONTEXT_KEY as Y,CapacityIdentityPinSchema as G,CapacityIdentityWireSchema as v,CapacityIdentityConfigSchema as H,projectCapacityIdentityToTarget as b}from"./capacityIdentity.js";import{findAccountNameCollision as K}from"./naming/accountNameCollision.js";import{defaultConnectedAccountName as W,suffixedAccountName as k,REGION_SHORT_CODES as Z,findTrailingRegionShortCode as j,regionSuffixRejectionMessage as w}from"./naming/connectedAccountName.js";import{normaliseError as Q,getErrorMessage as q,hasErrorCode as J,getErrorCode as $,getErrorStack as ee,formatErrorString as Ee}from"./errorUtils.js";import{singleton as te}from"./async/singleton.js";import{DANGEROUS_ENV_VARS as _e,filterDangerousEnvVars as ae,MASKED_VALUE_MARKER as Ae,maskSensitiveOutput as Se,parseShellArgs as Te,REDACTED_KEY_SENTINEL as ie,SCOPED_TOKEN_REGEX as ne}from"./securityHelpers.js";import{sleep as Ne}from"./async/sleep.js";import{mapSettledWithConcurrency as Oe}from"./async/concurrency.js";import{ACCOUNT_STAGES_WITH_ROOT as Ce,STRUCTURAL_ENVIRONMENTS as se,ACCOUNT_STAGES as pe,ACCOUNT_STAGE_LABELS as ce,isAccountStage as Ie,ACCOUNT_TIERS as De,AccountTierSchema as fe,isAccountTier as Me,GOVERNANCE_ACCOUNT_TIERS as Le,isGovernanceTier as le,environmentToTier as ge,stageFromWireEnvironment as ue,accountTier as de,resolveSynthEnvironment as Ue,getEnvironmentLabel as xe,ACCOUNT_ROLES as Fe}from"./environments.js";import{RESOURCE_CATEGORIES as Ve,categoriseResource as ye,getExpectedDuration as Ye,getFriendlyResourceType as Ge}from"./resourceCategorisation.js";import{parseGitRemoteUrl as He}from"./repo/gitRemoteParser.js";import{abbreviateRegion as Xe,AWS_REGIONS_METADATA as Ke,DEFAULT_REGION as Be,getRegionInfo as We,MAX_SECONDARY_REGIONS as ke,OPT_IN_REGION_CODES as Ze,optInRegionWarning as je,regions as we,suggestRegionForTimezone as ze}from"./infra/regions.js";import{SCOPE_VALUES as qe,MACHINE_ONLY_SCOPES as Je,USER_GRANTABLE_SCOPES as $e,GOVERNANCE_SCOPE_REQUIRED_CODE as eE}from"./infra/tokenScopes.js";import{SECRET_NAME_PATTERN as rE,SECRET_NAME_ERROR as tE,SSM_COMPONENT_PATTERN as oE,SSM_COMPONENT_ERROR as _E,SSM_STANDARD_MAX_VALUE_BYTES as aE,SecretNamespaceSchema as AE,buildNamespaceParts as SE,buildParameterPath as TE,parseParameterPath as iE,isManageablePath as nE,parseDotEnv as RE,escapeDotEnvValue as NE}from"./secrets.js";import{ConnectionWireSchema as OE,ConnectionsListResponseSchema as PE}from"./infra/connectionsWire.js";import{deriveRegionsFromOrgConfig as sE,deriveTargets as pE,deriveAllTargets as cE,environmentOrTier as IE,findTarget as DE,generateTargetName as fE}from"./targets.js";import{buildAppConfigPath as LE}from"./repo/appPath.js";import{findInfrastructurePaths as gE,findBoundaryPath as uE,isInfrastructureFile as dE}from"./repo/findInfrastructurePaths.js";import{inferContainerFromCandidates as xE}from"./repo/inferContainerFromCandidates.js";import{RESERVED_APP_NAMES as hE,RESERVED_APP_NAME_MESSAGE as VE,isReservedAppName as yE,RESERVED_APP_NAME_SUFFIX as YE,RESERVED_APP_NAME_SUFFIX_MESSAGE as GE,hasReservedAppNameSuffix as vE}from"./naming/reservedAppNames.js";import{deriveContentHashTag as bE,CONTENT_HASH_TAG_PATTERN as XE}from"./infra/deriveContentHashTag.js";import{DEPLOY_MODES as BE,DeployModeSchema as WE,IMAGE_TAG_PATTERN as kE,ImageTagSchema as ZE,ServiceArtefactSchema as jE,ServiceArtefactsSchema as wE,ARTEFACT_OUTPUT_FIELDS as zE,artefactOutputKey as QE}from"./infra/deployArtefacts.js";import{MIGRATION_SNAPSHOT_NAME_PREFIX as JE,EXPECTED_SCHEMA_VERSION_ENV as $E,EXPECTED_SCHEMA_VERSION_TOOL_ENV as er,EXPECTED_CH_SCHEMA_VERSION_ENV as Er,SCHEMA_ADMIN_USER_ENV as rr,SCHEMA_ADMIN_PASSWORD_ENV as tr,PRISMA_MIGRATION_DIR_RE as or,CLICKHOUSE_MIGRATION_SKIP_RE as _r}from"./migration/constants.js";import{PHYSICAL_NAME_FALLBACK_PROPERTIES as Ar}from"./cfn/physicalNameProperties.js";import{PATTERN_TYPE_VALUES as Tr,PATTERN_TYPES as ir,isPatternType as nr,PATTERN_REGISTRY as Rr,DEPLOYABLE_PATTERN_TYPES as Nr,OPENNEXT_PATTERN_TYPES as mr,isOpenNextPatternType as Or,STATIC_SITE_ROUTING_VALUES as Pr}from"./patterns/patternTypes.js";import{DEFAULT_FORMS_FROM_LOCAL_PART as sr,defaultFormsFromAddress as pr,defaultFormsCorsOrigin as cr,isAddressAtDomain as Ir}from"./patterns/staticSiteForms.js";import{DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION as fr,DEV_SUBSTRATE_PARAMS_FILENAME as Mr,DevSubstrateSynthPropsSchema as Lr,DevSubstrateParamsSchema as lr}from"./devSubstrate/params.js";import{DEV_SUBSTRATE_ENTRYPOINT_SOURCE as ur}from"./devSubstrate/entrypoint.js";import{DEPLOYMENT_FAILURE_PHASES as Ur,DeploymentFailurePhaseSchema as xr,DEPLOYMENT_FAULT_ATTRIBUTIONS as Fr,DeploymentFaultAttributionSchema as hr,DEPLOYMENT_FAILURE_PROVIDER_SOURCES as Vr,DeploymentFailureProviderSourceSchema as yr,DEPLOYMENT_FAILURE_CODE_PATTERN as Yr,DEPLOYMENT_FAILURE_SCHEMA_VERSION as Gr,DEPLOYMENT_FAILURE_LIMITS as vr,DeploymentFailureAnalysisSchema as Hr,DeploymentFailureProviderSchema as br,DeploymentFailureResourceSchema as Xr,DeploymentFailureSchema as Kr,parseDeploymentFailure as Br,DEPLOYMENT_FAILURE_DOCS_BASE_URL as Wr,deploymentFailureDocsUrl as kr,DEPLOYMENT_FAULT_COPY as Zr,DEPLOYMENT_PROVIDER_LABELS as jr,deriveErrorMessageFromFailure as wr,toDeploymentFailureAnalysis as zr}from"./failure/deploymentFailure.js";import{extractErrorWindow as qr,ERROR_WINDOW_CONTEXT_LINES as Jr}from"./failure/extractErrorWindow.js";export{Fe as ACCOUNT_ROLES,pe as ACCOUNT_STAGES,Ce as ACCOUNT_STAGES_WITH_ROOT,ce as ACCOUNT_STAGE_LABELS,De as ACCOUNT_TIERS,n as APPROVAL_TOKEN_OUTPUT_PREFIX,zE as ARTEFACT_OUTPUT_FIELDS,Ke as AWS_REGIONS_METADATA,fe as AccountTierSchema,T as BACKUP_VAULT_NAME,y as CAPACITY_ANCHOR_MAX_LENGTH,V as CAPACITY_ANCHOR_PATTERN,Y as CAPACITY_IDENTITY_CONTEXT_KEY,F as CAPACITY_SLOT_MAX_LENGTH,x as CAPACITY_SLOT_PATTERN,_r as CLICKHOUSE_MIGRATION_SKIP_RE,XE as CONTENT_HASH_TAG_PATTERN,H as CapacityIdentityConfigSchema,G as CapacityIdentityPinSchema,v as CapacityIdentityWireSchema,OE as ConnectionWireSchema,PE as ConnectionsListResponseSchema,_e as DANGEROUS_ENV_VARS,h as DEFAULT_CAPACITY_SLOT,sr as DEFAULT_FORMS_FROM_LOCAL_PART,Be as DEFAULT_REGION,Nr as DEPLOYABLE_PATTERN_TYPES,Yr as DEPLOYMENT_FAILURE_CODE_PATTERN,Wr as DEPLOYMENT_FAILURE_DOCS_BASE_URL,vr as DEPLOYMENT_FAILURE_LIMITS,Ur as DEPLOYMENT_FAILURE_PHASES,Vr as DEPLOYMENT_FAILURE_PROVIDER_SOURCES,Gr as DEPLOYMENT_FAILURE_SCHEMA_VERSION,Fr as DEPLOYMENT_FAULT_ATTRIBUTIONS,Zr as DEPLOYMENT_FAULT_COPY,jr as DEPLOYMENT_PROVIDER_LABELS,BE as DEPLOY_MODES,ur as DEV_SUBSTRATE_ENTRYPOINT_SOURCE,Mr as DEV_SUBSTRATE_PARAMS_FILENAME,fr as DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION,r as DNS_APEX,A as DOMAIN_DEPLOY_DEFAULT_PHASE,WE as DeployModeSchema,Hr as DeploymentFailureAnalysisSchema,xr as DeploymentFailurePhaseSchema,br as DeploymentFailureProviderSchema,yr as DeploymentFailureProviderSourceSchema,Xr as DeploymentFailureResourceSchema,Kr as DeploymentFailureSchema,hr as DeploymentFaultAttributionSchema,lr as DevSubstrateParamsSchema,Lr as DevSubstrateSynthPropsSchema,Jr as ERROR_WINDOW_CONTEXT_LINES,Er as EXPECTED_CH_SCHEMA_VERSION_ENV,$E as EXPECTED_SCHEMA_VERSION_ENV,er as EXPECTED_SCHEMA_VERSION_TOOL_ENV,Le as GOVERNANCE_ACCOUNT_TIERS,eE as GOVERNANCE_SCOPE_REQUIRED_CODE,kE as IMAGE_TAG_PATTERN,ZE as ImageTagSchema,Je as MACHINE_ONLY_SCOPES,Ae as MASKED_VALUE_MARKER,ke as MAX_SECONDARY_REGIONS,JE as MIGRATION_SNAPSHOT_NAME_PREFIX,mr as OPENNEXT_PATTERN_TYPES,Ze as OPT_IN_REGION_CODES,Rr as PATTERN_REGISTRY,ir as PATTERN_TYPES,Tr as PATTERN_TYPE_VALUES,Ar as PHYSICAL_NAME_FALLBACK_PROPERTIES,or as PRISMA_MIGRATION_DIR_RE,ie as REDACTED_KEY_SENTINEL,Z as REGION_SHORT_CODES,hE as RESERVED_APP_NAMES,VE as RESERVED_APP_NAME_MESSAGE,YE as RESERVED_APP_NAME_SUFFIX,GE as RESERVED_APP_NAME_SUFFIX_MESSAGE,Ve as RESOURCE_CATEGORIES,tr as SCHEMA_ADMIN_PASSWORD_ENV,rr as SCHEMA_ADMIN_USER_ENV,ne as SCOPED_TOKEN_REGEX,qe as SCOPE_VALUES,tE as SECRET_NAME_ERROR,rE as SECRET_NAME_PATTERN,_E as SSM_COMPONENT_ERROR,oE as SSM_COMPONENT_PATTERN,aE as SSM_STANDARD_MAX_VALUE_BYTES,Pr as STATIC_SITE_ROUTING_VALUES,se as STRUCTURAL_ENVIRONMENTS,AE as SecretNamespaceSchema,jE as ServiceArtefactSchema,wE as ServiceArtefactsSchema,R as TOKEN_STDERR_PREFIX,$e as USER_GRANTABLE_SCOPES,Xe as abbreviateRegion,D as accountConstructKey,de as accountTier,L as albDnsExportName,l as albHostedZoneIdExportName,QE as artefactOutputKey,u as bucketWebsiteEndpointExportName,d as bucketWebsiteHostedZoneIdExportName,LE as buildAppConfigPath,SE as buildNamespaceParts,TE as buildParameterPath,c as capitalise,ye as categoriseResource,g as cdnDomainExportName,W as defaultConnectedAccountName,cr as defaultFormsCorsOrigin,pr as defaultFormsFromAddress,kr as deploymentFailureDocsUrl,cE as deriveAllTargets,bE as deriveContentHashTag,wr as deriveErrorMessageFromFailure,sE as deriveRegionsFromOrgConfig,pE as deriveTargets,IE as environmentOrTier,ge as environmentToTier,NE as escapeDotEnvValue,qr as extractErrorWindow,ae as filterDangerousEnvVars,K as findAccountNameCollision,uE as findBoundaryPath,gE as findInfrastructurePaths,DE as findTarget,j as findTrailingRegionShortCode,Ee as formatErrorString,fE as generateTargetName,t as getDomainExportNames,o as getDomainStackName,_ as getDomainUsEast1CertificatesStackName,xe as getEnvironmentLabel,$ as getErrorCode,q as getErrorMessage,ee as getErrorStack,Ye as getExpectedDuration,Ge as getFriendlyResourceType,We as getRegionInfo,I as getSafeZoneName,f as hasAsciiStableConstructKey,J as hasErrorCode,vE as hasReservedAppNameSuffix,m as imageTagParameterName,xE as inferContainerFromCandidates,Ie as isAccountStage,Me as isAccountTier,Ir as isAddressAtDomain,le as isGovernanceTier,dE as isInfrastructureFile,nE as isManageablePath,a as isManagedDomainBinding,Or as isOpenNextPatternType,nr as isPatternType,yE as isReservedAppName,Oe as mapSettledWithConcurrency,Se as maskSensitiveOutput,Q as normaliseError,je as optInRegionWarning,Br as parseDeploymentFailure,RE as parseDotEnv,He as parseGitRemoteUrl,iE as parseParameterPath,Te as parseShellArgs,b as projectCapacityIdentityToTarget,w as regionSuffixRejectionMessage,we as regions,Ue as resolveSynthEnvironment,te as singleton,Ne as sleep,ue as stageFromWireEnvironment,k as suffixedAccountName,ze as suggestRegionForTimezone,zr as toDeploymentFailureAnalysis,C as toKebab,P as toPascalCase,p as toScreamingSnake,s as toValidDatabaseName};
1
+ import{DNS_APEX as r,getDomainExportNames as t,getDomainStackName as o,getDomainUsEast1CertificatesStackName as _,isManagedDomainBinding as a,DOMAIN_DEPLOY_DEFAULT_PHASE as A}from"./infra/domainExports.js";import{BACKUP_VAULT_NAME as T}from"./infra/backupVault.js";import{APPROVAL_TOKEN_OUTPUT_PREFIX as i,TOKEN_STDERR_PREFIX as R}from"./deploy/approvalTokenOutput.js";import{imageTagParameterName as m}from"./infra/imageTags.js";import{toPascalCase as P,toKebab as C,toValidDatabaseName as s,toScreamingSnake as p,capitalise as c,getSafeZoneName as I,accountConstructKey as D,hasAsciiStableConstructKey as f}from"./naming/caseConversion.js";import{albDnsExportName as L,albHostedZoneIdExportName as l,cdnDomainExportName as u,bucketWebsiteEndpointExportName as g,bucketWebsiteHostedZoneIdExportName as d}from"./naming/targetExportNames.js";import{CAPACITY_SLOT_PATTERN as x,CAPACITY_SLOT_MAX_LENGTH as F,DEFAULT_CAPACITY_SLOT as h,CAPACITY_ANCHOR_PATTERN as V,CAPACITY_ANCHOR_MAX_LENGTH as y,CAPACITY_IDENTITY_CONTEXT_KEY as Y,CapacityIdentityPinSchema as G,CapacityIdentityWireSchema as v,CapacityIdentityConfigSchema as H,projectCapacityIdentityToTarget as b}from"./capacityIdentity.js";import{findAccountNameCollision as K}from"./naming/accountNameCollision.js";import{defaultConnectedAccountName as W,suffixedAccountName as k,REGION_SHORT_CODES as Z,findTrailingRegionShortCode as j,regionSuffixRejectionMessage as w}from"./naming/connectedAccountName.js";import{normaliseError as Q,getErrorMessage as q,hasErrorCode as J,getErrorCode as $,getErrorStack as ee,formatErrorString as Ee}from"./errorUtils.js";import{singleton as te}from"./async/singleton.js";import{DANGEROUS_ENV_VARS as _e,filterDangerousEnvVars as ae,MASKED_VALUE_MARKER as Ae,maskSensitiveOutput as Se,parseShellArgs as Te,REDACTED_KEY_SENTINEL as ne,SCOPED_TOKEN_REGEX as ie}from"./securityHelpers.js";import{sleep as Ne}from"./async/sleep.js";import{mapSettledWithConcurrency as Oe}from"./async/concurrency.js";import{ACCOUNT_STAGES_WITH_ROOT as Ce,STRUCTURAL_ENVIRONMENTS as se,ACCOUNT_STAGES as pe,ACCOUNT_STAGE_LABELS as ce,isAccountStage as Ie,ACCOUNT_TIERS as De,AccountTierSchema as fe,isAccountTier as Me,GOVERNANCE_ACCOUNT_TIERS as Le,isGovernanceTier as le,environmentToTier as ue,stageFromWireEnvironment as ge,accountTier as de,resolveSynthEnvironment as Ue,getEnvironmentLabel as xe,ACCOUNT_ROLES as Fe}from"./environments.js";import{RESOURCE_CATEGORIES as Ve,categoriseResource as ye,getExpectedDuration as Ye,getFriendlyResourceType as Ge}from"./resourceCategorisation.js";import{parseGitRemoteUrl as He}from"./repo/gitRemoteParser.js";import{abbreviateRegion as Xe,AWS_REGIONS_METADATA as Ke,DEFAULT_REGION as Be,getRegionInfo as We,MAX_SECONDARY_REGIONS as ke,OPT_IN_REGION_CODES as Ze,optInRegionWarning as je,regions as we,suggestRegionForTimezone as ze}from"./infra/regions.js";import{SCOPE_VALUES as qe,MACHINE_ONLY_SCOPES as Je,USER_GRANTABLE_SCOPES as $e,GOVERNANCE_SCOPE_REQUIRED_CODE as eE}from"./infra/tokenScopes.js";import{SECRET_NAME_PATTERN as rE,SECRET_NAME_ERROR as tE,SSM_COMPONENT_PATTERN as oE,SSM_COMPONENT_ERROR as _E,SSM_STANDARD_MAX_VALUE_BYTES as aE,SecretNamespaceSchema as AE,buildNamespaceParts as SE,buildParameterPath as TE,parseParameterPath as nE,isManageablePath as iE,parseDotEnv as RE,escapeDotEnvValue as NE}from"./secrets.js";import{ConnectionWireSchema as OE,ConnectionsListResponseSchema as PE}from"./infra/connectionsWire.js";import{deriveRegionsFromOrgConfig as sE,deriveTargets as pE,deriveAllTargets as cE,environmentOrTier as IE,findTarget as DE,generateTargetName as fE}from"./targets.js";import{buildAppConfigPath as LE}from"./repo/appPath.js";import{findInfrastructurePaths as uE,findBoundaryPath as gE,isInfrastructureFile as dE}from"./repo/findInfrastructurePaths.js";import{inferContainerFromCandidates as xE}from"./repo/inferContainerFromCandidates.js";import{RESERVED_APP_NAMES as hE,RESERVED_APP_NAME_MESSAGE as VE,isReservedAppName as yE,RESERVED_APP_NAME_SUFFIX as YE,RESERVED_APP_NAME_SUFFIX_MESSAGE as GE,hasReservedAppNameSuffix as vE}from"./naming/reservedAppNames.js";import{deriveContentHashTag as bE,CONTENT_HASH_TAG_PATTERN as XE}from"./infra/deriveContentHashTag.js";import{DEPLOY_MODES as BE,DeployModeSchema as WE,IMAGE_TAG_PATTERN as kE,ImageTagSchema as ZE,ServiceArtefactSchema as jE,ServiceArtefactsSchema as wE,ARTEFACT_OUTPUT_FIELDS as zE,artefactOutputKey as QE}from"./infra/deployArtefacts.js";import{MIGRATION_SNAPSHOT_NAME_PREFIX as JE,EXPECTED_SCHEMA_VERSION_ENV as $E,EXPECTED_SCHEMA_VERSION_TOOL_ENV as er,EXPECTED_CH_SCHEMA_VERSION_ENV as Er,SCHEMA_ADMIN_USER_ENV as rr,SCHEMA_ADMIN_PASSWORD_ENV as tr,PRISMA_MIGRATION_DIR_RE as or,CLICKHOUSE_MIGRATION_SKIP_RE as _r}from"./migration/constants.js";import{PHYSICAL_NAME_FALLBACK_PROPERTIES as Ar}from"./cfn/physicalNameProperties.js";import{PATTERN_TYPE_VALUES as Tr,PATTERN_TYPES as nr,isPatternType as ir,PATTERN_REGISTRY as Rr,patternConstructId as Nr,DEPLOYABLE_PATTERN_TYPES as mr,OPENNEXT_PATTERN_TYPES as Or,isOpenNextPatternType as Pr,STATIC_SITE_ROUTING_VALUES as Cr}from"./patterns/patternTypes.js";import{DEFAULT_FORMS_FROM_LOCAL_PART as pr,defaultFormsFromAddress as cr,defaultFormsCorsOrigin as Ir,isAddressAtDomain as Dr}from"./patterns/staticSiteForms.js";import{DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION as Mr,DEV_SUBSTRATE_PARAMS_FILENAME as Lr,DevSubstrateSynthPropsSchema as lr,DevSubstrateParamsSchema as ur}from"./devSubstrate/params.js";import{DEV_SUBSTRATE_ENTRYPOINT_SOURCE as dr}from"./devSubstrate/entrypoint.js";import{DEPLOYMENT_FAILURE_PHASES as xr,DeploymentFailurePhaseSchema as Fr,DEPLOYMENT_FAULT_ATTRIBUTIONS as hr,DeploymentFaultAttributionSchema as Vr,DEPLOYMENT_FAILURE_PROVIDER_SOURCES as yr,DeploymentFailureProviderSourceSchema as Yr,DEPLOYMENT_FAILURE_CODE_PATTERN as Gr,DEPLOYMENT_FAILURE_SCHEMA_VERSION as vr,DEPLOYMENT_FAILURE_LIMITS as Hr,DeploymentFailureAnalysisSchema as br,DeploymentFailureProviderSchema as Xr,DeploymentFailureResourceSchema as Kr,DeploymentFailureSchema as Br,parseDeploymentFailure as Wr,DEPLOYMENT_FAILURE_DOCS_BASE_URL as kr,deploymentFailureDocsUrl as Zr,DEPLOYMENT_FAULT_COPY as jr,DEPLOYMENT_PROVIDER_LABELS as wr,deriveErrorMessageFromFailure as zr,toDeploymentFailureAnalysis as Qr}from"./failure/deploymentFailure.js";import{extractErrorWindow as Jr,ERROR_WINDOW_CONTEXT_LINES as $r}from"./failure/extractErrorWindow.js";export{Fe as ACCOUNT_ROLES,pe as ACCOUNT_STAGES,Ce as ACCOUNT_STAGES_WITH_ROOT,ce as ACCOUNT_STAGE_LABELS,De as ACCOUNT_TIERS,i as APPROVAL_TOKEN_OUTPUT_PREFIX,zE as ARTEFACT_OUTPUT_FIELDS,Ke as AWS_REGIONS_METADATA,fe as AccountTierSchema,T as BACKUP_VAULT_NAME,y as CAPACITY_ANCHOR_MAX_LENGTH,V as CAPACITY_ANCHOR_PATTERN,Y as CAPACITY_IDENTITY_CONTEXT_KEY,F as CAPACITY_SLOT_MAX_LENGTH,x as CAPACITY_SLOT_PATTERN,_r as CLICKHOUSE_MIGRATION_SKIP_RE,XE as CONTENT_HASH_TAG_PATTERN,H as CapacityIdentityConfigSchema,G as CapacityIdentityPinSchema,v as CapacityIdentityWireSchema,OE as ConnectionWireSchema,PE as ConnectionsListResponseSchema,_e as DANGEROUS_ENV_VARS,h as DEFAULT_CAPACITY_SLOT,pr as DEFAULT_FORMS_FROM_LOCAL_PART,Be as DEFAULT_REGION,mr as DEPLOYABLE_PATTERN_TYPES,Gr as DEPLOYMENT_FAILURE_CODE_PATTERN,kr as DEPLOYMENT_FAILURE_DOCS_BASE_URL,Hr as DEPLOYMENT_FAILURE_LIMITS,xr as DEPLOYMENT_FAILURE_PHASES,yr as DEPLOYMENT_FAILURE_PROVIDER_SOURCES,vr as DEPLOYMENT_FAILURE_SCHEMA_VERSION,hr as DEPLOYMENT_FAULT_ATTRIBUTIONS,jr as DEPLOYMENT_FAULT_COPY,wr as DEPLOYMENT_PROVIDER_LABELS,BE as DEPLOY_MODES,dr as DEV_SUBSTRATE_ENTRYPOINT_SOURCE,Lr as DEV_SUBSTRATE_PARAMS_FILENAME,Mr as DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION,r as DNS_APEX,A as DOMAIN_DEPLOY_DEFAULT_PHASE,WE as DeployModeSchema,br as DeploymentFailureAnalysisSchema,Fr as DeploymentFailurePhaseSchema,Xr as DeploymentFailureProviderSchema,Yr as DeploymentFailureProviderSourceSchema,Kr as DeploymentFailureResourceSchema,Br as DeploymentFailureSchema,Vr as DeploymentFaultAttributionSchema,ur as DevSubstrateParamsSchema,lr as DevSubstrateSynthPropsSchema,$r as ERROR_WINDOW_CONTEXT_LINES,Er as EXPECTED_CH_SCHEMA_VERSION_ENV,$E as EXPECTED_SCHEMA_VERSION_ENV,er as EXPECTED_SCHEMA_VERSION_TOOL_ENV,Le as GOVERNANCE_ACCOUNT_TIERS,eE as GOVERNANCE_SCOPE_REQUIRED_CODE,kE as IMAGE_TAG_PATTERN,ZE as ImageTagSchema,Je as MACHINE_ONLY_SCOPES,Ae as MASKED_VALUE_MARKER,ke as MAX_SECONDARY_REGIONS,JE as MIGRATION_SNAPSHOT_NAME_PREFIX,Or as OPENNEXT_PATTERN_TYPES,Ze as OPT_IN_REGION_CODES,Rr as PATTERN_REGISTRY,nr as PATTERN_TYPES,Tr as PATTERN_TYPE_VALUES,Ar as PHYSICAL_NAME_FALLBACK_PROPERTIES,or as PRISMA_MIGRATION_DIR_RE,ne as REDACTED_KEY_SENTINEL,Z as REGION_SHORT_CODES,hE as RESERVED_APP_NAMES,VE as RESERVED_APP_NAME_MESSAGE,YE as RESERVED_APP_NAME_SUFFIX,GE as RESERVED_APP_NAME_SUFFIX_MESSAGE,Ve as RESOURCE_CATEGORIES,tr as SCHEMA_ADMIN_PASSWORD_ENV,rr as SCHEMA_ADMIN_USER_ENV,ie as SCOPED_TOKEN_REGEX,qe as SCOPE_VALUES,tE as SECRET_NAME_ERROR,rE as SECRET_NAME_PATTERN,_E as SSM_COMPONENT_ERROR,oE as SSM_COMPONENT_PATTERN,aE as SSM_STANDARD_MAX_VALUE_BYTES,Cr as STATIC_SITE_ROUTING_VALUES,se as STRUCTURAL_ENVIRONMENTS,AE as SecretNamespaceSchema,jE as ServiceArtefactSchema,wE as ServiceArtefactsSchema,R as TOKEN_STDERR_PREFIX,$e as USER_GRANTABLE_SCOPES,Xe as abbreviateRegion,D as accountConstructKey,de as accountTier,L as albDnsExportName,l as albHostedZoneIdExportName,QE as artefactOutputKey,g as bucketWebsiteEndpointExportName,d as bucketWebsiteHostedZoneIdExportName,LE as buildAppConfigPath,SE as buildNamespaceParts,TE as buildParameterPath,c as capitalise,ye as categoriseResource,u as cdnDomainExportName,W as defaultConnectedAccountName,Ir as defaultFormsCorsOrigin,cr as defaultFormsFromAddress,Zr as deploymentFailureDocsUrl,cE as deriveAllTargets,bE as deriveContentHashTag,zr as deriveErrorMessageFromFailure,sE as deriveRegionsFromOrgConfig,pE as deriveTargets,IE as environmentOrTier,ue as environmentToTier,NE as escapeDotEnvValue,Jr as extractErrorWindow,ae as filterDangerousEnvVars,K as findAccountNameCollision,gE as findBoundaryPath,uE as findInfrastructurePaths,DE as findTarget,j as findTrailingRegionShortCode,Ee as formatErrorString,fE as generateTargetName,t as getDomainExportNames,o as getDomainStackName,_ as getDomainUsEast1CertificatesStackName,xe as getEnvironmentLabel,$ as getErrorCode,q as getErrorMessage,ee as getErrorStack,Ye as getExpectedDuration,Ge as getFriendlyResourceType,We as getRegionInfo,I as getSafeZoneName,f as hasAsciiStableConstructKey,J as hasErrorCode,vE as hasReservedAppNameSuffix,m as imageTagParameterName,xE as inferContainerFromCandidates,Ie as isAccountStage,Me as isAccountTier,Dr as isAddressAtDomain,le as isGovernanceTier,dE as isInfrastructureFile,iE as isManageablePath,a as isManagedDomainBinding,Pr as isOpenNextPatternType,ir as isPatternType,yE as isReservedAppName,Oe as mapSettledWithConcurrency,Se as maskSensitiveOutput,Q as normaliseError,je as optInRegionWarning,Wr as parseDeploymentFailure,RE as parseDotEnv,He as parseGitRemoteUrl,nE as parseParameterPath,Te as parseShellArgs,Nr as patternConstructId,b as projectCapacityIdentityToTarget,w as regionSuffixRejectionMessage,we as regions,Ue as resolveSynthEnvironment,te as singleton,Ne as sleep,ge as stageFromWireEnvironment,k as suffixedAccountName,ze as suggestRegionForTimezone,Qr as toDeploymentFailureAnalysis,C as toKebab,P as toPascalCase,p as toScreamingSnake,s as toValidDatabaseName};
@@ -7,5 +7,5 @@
7
7
  * the webapp bundles) can take the vocabulary without depending on the root
8
8
  * barrel's contents staying pure.
9
9
  */
10
- export { PATTERN_TYPE_VALUES, type PatternType, PATTERN_TYPES, isPatternType, type PatternArtefact, type PatternStackPlacement, type PatternDescriptor, PATTERN_REGISTRY, DEPLOYABLE_PATTERN_TYPES, type OpenNextPatternType, OPENNEXT_PATTERN_TYPES, isOpenNextPatternType, STATIC_SITE_ROUTING_VALUES, type StaticSiteRouting } from "./patternTypes.js";
10
+ export { PATTERN_TYPE_VALUES, type PatternType, PATTERN_TYPES, isPatternType, type PatternArtefact, type PatternStackPlacement, type PatternDescriptor, PATTERN_REGISTRY, patternConstructId, DEPLOYABLE_PATTERN_TYPES, type OpenNextPatternType, OPENNEXT_PATTERN_TYPES, isOpenNextPatternType, STATIC_SITE_ROUTING_VALUES, type StaticSiteRouting } from "./patternTypes.js";
11
11
  export { DEFAULT_FORMS_FROM_LOCAL_PART, defaultFormsFromAddress, defaultFormsCorsOrigin, isAddressAtDomain } from "./staticSiteForms.js";
@@ -1 +1 @@
1
- import{PATTERN_TYPE_VALUES as A,PATTERN_TYPES as _,isPatternType as P,PATTERN_REGISTRY as r,DEPLOYABLE_PATTERN_TYPES as e,OPENNEXT_PATTERN_TYPES as R,isOpenNextPatternType as s,STATIC_SITE_ROUTING_VALUES as t}from"./patternTypes.js";import{DEFAULT_FORMS_FROM_LOCAL_PART as N,defaultFormsFromAddress as S,defaultFormsCorsOrigin as O,isAddressAtDomain as L}from"./staticSiteForms.js";export{N as DEFAULT_FORMS_FROM_LOCAL_PART,e as DEPLOYABLE_PATTERN_TYPES,R as OPENNEXT_PATTERN_TYPES,r as PATTERN_REGISTRY,_ as PATTERN_TYPES,A as PATTERN_TYPE_VALUES,t as STATIC_SITE_ROUTING_VALUES,O as defaultFormsCorsOrigin,S as defaultFormsFromAddress,L as isAddressAtDomain,s as isOpenNextPatternType,P as isPatternType};
1
+ import{PATTERN_TYPE_VALUES as r,PATTERN_TYPES as A,isPatternType as _,PATTERN_REGISTRY as t,patternConstructId as P,DEPLOYABLE_PATTERN_TYPES as e,OPENNEXT_PATTERN_TYPES as s,isOpenNextPatternType as R,STATIC_SITE_ROUTING_VALUES as o}from"./patternTypes.js";import{DEFAULT_FORMS_FROM_LOCAL_PART as S,defaultFormsFromAddress as O,defaultFormsCorsOrigin as d,isAddressAtDomain as n}from"./staticSiteForms.js";export{S as DEFAULT_FORMS_FROM_LOCAL_PART,e as DEPLOYABLE_PATTERN_TYPES,s as OPENNEXT_PATTERN_TYPES,t as PATTERN_REGISTRY,A as PATTERN_TYPES,r as PATTERN_TYPE_VALUES,o as STATIC_SITE_ROUTING_VALUES,d as defaultFormsCorsOrigin,O as defaultFormsFromAddress,n as isAddressAtDomain,R as isOpenNextPatternType,_ as isPatternType,P as patternConstructId};
@@ -15,17 +15,6 @@
15
15
  * re-deriving the answer from a ternary chain whose `else` branch would
16
16
  * otherwise absorb the new pattern.
17
17
  */
18
- /**
19
- * Every pattern the toolchain knows about.
20
- *
21
- * - `payload` — Payload CMS on OpenNext (always has a database + migrations).
22
- * - `nextjs` — a plain Next.js app on OpenNext (optional database). No CDK
23
- * construct exists yet: `IPatternProps` (components/infrastructure) omits it,
24
- * so a generated `nextjs` app fails to synthesise. Add the props + a
25
- * `PatternFactory.build` case to close the gap, then flip its `deployable`
26
- * flag so the CLI offers it again.
27
- * - `staticsite` — pre-built static assets on private S3 + CloudFront/OAC.
28
- */
29
18
  export declare const PATTERN_TYPE_VALUES: readonly ["payload", "nextjs", "staticsite"];
30
19
  export type PatternType = (typeof PATTERN_TYPE_VALUES)[number];
31
20
  export declare const PATTERN_TYPES: ReadonlySet<string>;
@@ -83,6 +72,20 @@ export declare const PATTERN_REGISTRY: {
83
72
  readonly deployable: true;
84
73
  };
85
74
  };
75
+ /**
76
+ * The construct id a pattern statement's `XFactory.build` FIRST ARGUMENT
77
+ * carries: `${toPascalCase(name)}${constructIdSuffix}`.
78
+ *
79
+ * This is a coupled emit/locate identity contract with three consumers —
80
+ * the generator scaffold's pattern emission, the codemod's
81
+ * `statementIdentity.emitConstructId`, and its `locateCandidates` read half —
82
+ * and it lives here, beside `PATTERN_REGISTRY`, so no consumer re-derives
83
+ * the composition. A drifted re-implementation stays green through every
84
+ * side's own tests and only fails at the seam: scaffold-emitted statements
85
+ * stop being addressable by `fjall modify/remove pattern`, and duplicate
86
+ * detection silently re-admits the synth-fatal id collision.
87
+ */
88
+ export declare function patternConstructId(name: string, type: PatternType): string;
86
89
  /**
87
90
  * Patterns the toolchain may offer for creation, derived from the registry —
88
91
  * pickers and validation reject the rest at create time instead of letting a
@@ -1 +1 @@
1
- var c=Object.defineProperty;var e=(t,o)=>c(t,"name",{value:o,configurable:!0});const a=["payload","nextjs","staticsite"],s=new Set(a);function p(t){return typeof t=="string"&&s.has(t)}e(p,"isPatternType");const n={payload:{label:"Payload CMS",constructIdSuffix:"Payload",artefact:"opennext-lambda",stackPlacement:"compute",deployable:!0},nextjs:{label:"Next.js",constructIdSuffix:"Nextjs",artefact:"opennext-lambda",stackPlacement:"compute",deployable:!1},staticsite:{label:"Static site",constructIdSuffix:"StaticSite",artefact:"static-assets",stackPlacement:"cdn",deployable:!0}},E=a.filter(t=>n[t].deployable),l=a.filter(t=>n[t].artefact==="opennext-lambda"),T=new Set(l);function i(t){return t!=null&&T.has(t)}e(i,"isOpenNextPatternType");const P=["multipage","spa"];export{E as DEPLOYABLE_PATTERN_TYPES,l as OPENNEXT_PATTERN_TYPES,n as PATTERN_REGISTRY,s as PATTERN_TYPES,a as PATTERN_TYPE_VALUES,P as STATIC_SITE_ROUTING_VALUES,i as isOpenNextPatternType,p as isPatternType};
1
+ var c=Object.defineProperty;var e=(t,a)=>c(t,"name",{value:a,configurable:!0});import{toPascalCase as s}from"../naming/caseConversion.js";const n=["payload","nextjs","staticsite"],r=new Set(n);function E(t){return typeof t=="string"&&r.has(t)}e(E,"isPatternType");const o={payload:{label:"Payload CMS",constructIdSuffix:"Payload",artefact:"opennext-lambda",stackPlacement:"compute",deployable:!0},nextjs:{label:"Next.js",constructIdSuffix:"Nextjs",artefact:"opennext-lambda",stackPlacement:"compute",deployable:!1},staticsite:{label:"Static site",constructIdSuffix:"StaticSite",artefact:"static-assets",stackPlacement:"cdn",deployable:!0}};function P(t,a){return`${s(t)}${o[a].constructIdSuffix}`}e(P,"patternConstructId");const f=n.filter(t=>o[t].deployable),l=n.filter(t=>o[t].artefact==="opennext-lambda"),p=new Set(l);function x(t){return t!=null&&p.has(t)}e(x,"isOpenNextPatternType");const d=["multipage","spa"];export{f as DEPLOYABLE_PATTERN_TYPES,l as OPENNEXT_PATTERN_TYPES,o as PATTERN_REGISTRY,r as PATTERN_TYPES,n as PATTERN_TYPE_VALUES,d as STATIC_SITE_ROUTING_VALUES,x as isOpenNextPatternType,E as isPatternType,P as patternConstructId};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/util",
3
- "version": "13.1.0",
3
+ "version": "14.1.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/fjall-tech/fjall.git",