@fjall/util 7.2.0 → 7.3.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/.build-source-hash +5 -5
- package/dist/.minified +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/securityHelpers.d.ts +13 -0
- package/dist/securityHelpers.js +1 -1
- package/package.json +1 -1
package/dist/.build-source-hash
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"package.json",
|
|
10
10
|
"tsconfig.json"
|
|
11
11
|
],
|
|
12
|
-
"hash": "
|
|
12
|
+
"hash": "dd4b6f4216f4e2a95fadfd0b75bff3b3c60bcde2293836647a4b358194e9d1b8",
|
|
13
13
|
"files": {
|
|
14
14
|
"src/async/concurrency.ts": "3c7ebe0222a720f9",
|
|
15
15
|
"src/async/singleton.ts": "7bcc21b0fb920561",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"src/errorUtils.ts": "c601f2905c74b8d0",
|
|
61
61
|
"src/fsHelpers.ts": "0869d9739d523572",
|
|
62
62
|
"src/fsScan.ts": "feb187758481443f",
|
|
63
|
-
"src/index.ts": "
|
|
63
|
+
"src/index.ts": "b53459f372672363",
|
|
64
64
|
"src/infra/backupVault.ts": "661678a6dfb0b648",
|
|
65
65
|
"src/infra/connectionsWire.ts": "125c099da0e17ac1",
|
|
66
66
|
"src/infra/deployArtefacts.ts": "235ac21dd3ccf0b2",
|
|
@@ -99,12 +99,12 @@
|
|
|
99
99
|
"src/repo/scanTypes.ts": "1fda805a7d8de93b",
|
|
100
100
|
"src/resourceCategorisation.ts": "a140d1b3cb38be33",
|
|
101
101
|
"src/secrets.ts": "50258d463e4e67c3",
|
|
102
|
-
"src/securityHelpers.ts": "
|
|
102
|
+
"src/securityHelpers.ts": "ee2ab9ffd53119fb",
|
|
103
103
|
"src/targets.ts": "126280f0a5762e21",
|
|
104
104
|
"../scripts/minify-dist.mjs": "6b2e4b0df8aec601",
|
|
105
|
-
"package.json": "
|
|
105
|
+
"package.json": "3a8f986a81a80c42",
|
|
106
106
|
"tsconfig.json": "db759831ad95f396"
|
|
107
107
|
},
|
|
108
|
-
"outputHash": "
|
|
108
|
+
"outputHash": "6f5fc5d5e93c66a4396906af84d0afea9a4ab6b6eae10c7993e6dca435150b04",
|
|
109
109
|
"outputFileCount": 187
|
|
110
110
|
}
|
package/dist/.minified
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
93 files minified at 2026-08-
|
|
1
|
+
93 files minified at 2026-08-06T23:10:24.976Z
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { findAccountNameCollision, type AccountNameCollision } from "./naming/ac
|
|
|
8
8
|
export { defaultConnectedAccountName, suffixedAccountName, REGION_SHORT_CODES, findTrailingRegionShortCode, regionSuffixRejectionMessage } from "./naming/connectedAccountName.js";
|
|
9
9
|
export { normaliseError, getErrorMessage, hasErrorCode, getErrorCode, getErrorStack, formatErrorString } from "./errorUtils.js";
|
|
10
10
|
export { singleton } from "./async/singleton.js";
|
|
11
|
-
export { DANGEROUS_ENV_VARS, filterDangerousEnvVars, maskSensitiveOutput, parseShellArgs, SCOPED_TOKEN_REGEX } from "./securityHelpers.js";
|
|
11
|
+
export { DANGEROUS_ENV_VARS, filterDangerousEnvVars, MASKED_VALUE_MARKER, maskSensitiveOutput, parseShellArgs, REDACTED_KEY_SENTINEL, SCOPED_TOKEN_REGEX } from "./securityHelpers.js";
|
|
12
12
|
export { sleep } from "./async/sleep.js";
|
|
13
13
|
export { mapSettledWithConcurrency } from "./async/concurrency.js";
|
|
14
14
|
export { ACCOUNT_STAGES_WITH_ROOT, STRUCTURAL_ENVIRONMENTS, ACCOUNT_STAGES, ACCOUNT_STAGE_LABELS, isAccountStage, ACCOUNT_TIERS, type AccountTier, AccountTierSchema, isAccountTier, GOVERNANCE_ACCOUNT_TIERS, isGovernanceTier, environmentToTier, stageFromWireEnvironment, accountTier, type AccountStageWithRoot, type AccountStage, getEnvironmentLabel, ACCOUNT_ROLES } from "./environments.js";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{DNS_APEX as
|
|
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 n}from"./deploy/approvalTokenOutput.js";import{imageTagParameterName as C}from"./infra/imageTags.js";import{toPascalCase as O,toKebab as P,toValidDatabaseName as s,toScreamingSnake as c,capitalise as p,getSafeZoneName as I,accountConstructKey as f,hasAsciiStableConstructKey as D}from"./naming/caseConversion.js";import{CAPACITY_SLOT_PATTERN as M,CAPACITY_SLOT_MAX_LENGTH as d,DEFAULT_CAPACITY_SLOT as x,CAPACITY_ANCHOR_PATTERN as L,CAPACITY_ANCHOR_MAX_LENGTH as U,CAPACITY_IDENTITY_CONTEXT_KEY as u,CapacityIdentityPinSchema as V,CapacityIdentityWireSchema as l,CapacityIdentityConfigSchema as G,projectCapacityIdentityToTarget as h}from"./capacityIdentity.js";import{findAccountNameCollision as Y}from"./naming/accountNameCollision.js";import{defaultConnectedAccountName as v,suffixedAccountName as y,REGION_SHORT_CODES as X,findTrailingRegionShortCode as K,regionSuffixRejectionMessage as b}from"./naming/connectedAccountName.js";import{normaliseError as W,getErrorMessage as k,hasErrorCode as j,getErrorCode as z,getErrorStack as Q,formatErrorString as Z}from"./errorUtils.js";import{singleton as w}from"./async/singleton.js";import{DANGEROUS_ENV_VARS as $,filterDangerousEnvVars as ee,MASKED_VALUE_MARKER as Ee,maskSensitiveOutput as re,parseShellArgs as te,REDACTED_KEY_SENTINEL as oe,SCOPED_TOKEN_REGEX as _e}from"./securityHelpers.js";import{sleep as ae}from"./async/sleep.js";import{mapSettledWithConcurrency as Te}from"./async/concurrency.js";import{ACCOUNT_STAGES_WITH_ROOT as ie,STRUCTURAL_ENVIRONMENTS as ne,ACCOUNT_STAGES as Ne,ACCOUNT_STAGE_LABELS as Ce,isAccountStage as me,ACCOUNT_TIERS as Oe,AccountTierSchema as Pe,isAccountTier as se,GOVERNANCE_ACCOUNT_TIERS as ce,isGovernanceTier as pe,environmentToTier as Ie,stageFromWireEnvironment as fe,accountTier as De,getEnvironmentLabel as ge,ACCOUNT_ROLES as Me}from"./environments.js";import{RESOURCE_CATEGORIES as xe,categoriseResource as Le,getExpectedDuration as Ue,getFriendlyResourceType as ue}from"./resourceCategorisation.js";import{parseGitRemoteUrl as le}from"./repo/gitRemoteParser.js";import{abbreviateRegion as he,AWS_REGIONS_METADATA as Fe,DEFAULT_REGION as Ye,getRegionInfo as He,MAX_SECONDARY_REGIONS as ve,OPT_IN_REGION_CODES as ye,optInRegionWarning as Xe,regions as Ke,suggestRegionForTimezone as be}from"./infra/regions.js";import{SCOPE_VALUES as We,MACHINE_ONLY_SCOPES as ke,USER_GRANTABLE_SCOPES as je,GOVERNANCE_SCOPE_REQUIRED_CODE as ze}from"./infra/tokenScopes.js";import{SECRET_NAME_PATTERN as Ze,SECRET_NAME_ERROR as qe,SSM_COMPONENT_PATTERN as we,SSM_COMPONENT_ERROR as Je,SSM_STANDARD_MAX_VALUE_BYTES as $e,SecretNamespaceSchema as eE,buildNamespaceParts as EE,buildParameterPath as rE,parseParameterPath as tE,isManageablePath as oE,parseDotEnv as _E,escapeDotEnvValue as AE}from"./secrets.js";import{ConnectionWireSchema as SE,ConnectionsListResponseSchema as TE}from"./infra/connectionsWire.js";import{deriveRegionsFromOrgConfig as iE,deriveTargets as nE,deriveAllTargets as NE,environmentOrTier as CE,findTarget as mE,generateTargetName as OE}from"./targets.js";import{buildAppConfigPath as sE}from"./repo/appPath.js";import{findInfrastructurePaths as pE,findBoundaryPath as IE,isInfrastructureFile as fE}from"./repo/findInfrastructurePaths.js";import{inferContainerFromCandidates as gE}from"./repo/inferContainerFromCandidates.js";import{RESERVED_APP_NAMES as dE,RESERVED_APP_NAME_MESSAGE as xE,isReservedAppName as LE,RESERVED_APP_NAME_SUFFIX as UE,RESERVED_APP_NAME_SUFFIX_MESSAGE as uE,hasReservedAppNameSuffix as VE}from"./naming/reservedAppNames.js";import{deriveContentHashTag as GE,CONTENT_HASH_TAG_PATTERN as hE}from"./infra/deriveContentHashTag.js";import{DEPLOY_MODES as YE,DeployModeSchema as HE,IMAGE_TAG_PATTERN as vE,ImageTagSchema as yE,ServiceArtefactSchema as XE,ServiceArtefactsSchema as KE,ARTEFACT_OUTPUT_FIELDS as bE,artefactOutputKey as BE}from"./infra/deployArtefacts.js";import{MIGRATION_SNAPSHOT_NAME_PREFIX as kE,EXPECTED_SCHEMA_VERSION_ENV as jE,EXPECTED_SCHEMA_VERSION_TOOL_ENV as zE,EXPECTED_CH_SCHEMA_VERSION_ENV as QE,SCHEMA_ADMIN_USER_ENV as ZE,SCHEMA_ADMIN_PASSWORD_ENV as qE,PRISMA_MIGRATION_DIR_RE as wE,CLICKHOUSE_MIGRATION_SKIP_RE as JE}from"./migration/constants.js";import{PHYSICAL_NAME_FALLBACK_PROPERTIES as er}from"./cfn/physicalNameProperties.js";import{PATTERN_TYPE_VALUES as rr,PATTERN_TYPES as tr,isPatternType as or,PATTERN_REGISTRY as _r,DEPLOYABLE_PATTERN_TYPES as Ar,OPENNEXT_PATTERN_TYPES as ar,isOpenNextPatternType as Sr,STATIC_SITE_ROUTING_VALUES as Tr}from"./patterns/patternTypes.js";import{DEFAULT_FORMS_FROM_LOCAL_PART as ir,defaultFormsFromAddress as nr,defaultFormsCorsOrigin as Nr,isAddressAtDomain as Cr}from"./patterns/staticSiteForms.js";import{DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION as Or,DEV_SUBSTRATE_PARAMS_FILENAME as Pr,DevSubstrateSynthPropsSchema as sr,DevSubstrateParamsSchema as cr}from"./devSubstrate/params.js";import{DEV_SUBSTRATE_ENTRYPOINT_SOURCE as Ir}from"./devSubstrate/entrypoint.js";export{Me as ACCOUNT_ROLES,Ne as ACCOUNT_STAGES,ie as ACCOUNT_STAGES_WITH_ROOT,Ce as ACCOUNT_STAGE_LABELS,Oe as ACCOUNT_TIERS,i as APPROVAL_TOKEN_OUTPUT_PREFIX,bE as ARTEFACT_OUTPUT_FIELDS,Fe as AWS_REGIONS_METADATA,Pe as AccountTierSchema,T as BACKUP_VAULT_NAME,U as CAPACITY_ANCHOR_MAX_LENGTH,L as CAPACITY_ANCHOR_PATTERN,u as CAPACITY_IDENTITY_CONTEXT_KEY,d as CAPACITY_SLOT_MAX_LENGTH,M as CAPACITY_SLOT_PATTERN,JE as CLICKHOUSE_MIGRATION_SKIP_RE,hE as CONTENT_HASH_TAG_PATTERN,G as CapacityIdentityConfigSchema,V as CapacityIdentityPinSchema,l as CapacityIdentityWireSchema,SE as ConnectionWireSchema,TE as ConnectionsListResponseSchema,$ as DANGEROUS_ENV_VARS,x as DEFAULT_CAPACITY_SLOT,ir as DEFAULT_FORMS_FROM_LOCAL_PART,Ye as DEFAULT_REGION,Ar as DEPLOYABLE_PATTERN_TYPES,YE as DEPLOY_MODES,Ir as DEV_SUBSTRATE_ENTRYPOINT_SOURCE,Pr as DEV_SUBSTRATE_PARAMS_FILENAME,Or as DEV_SUBSTRATE_PARAMS_SCHEMA_VERSION,r as DNS_APEX,a as DOMAIN_DEPLOY_DEFAULT_PHASE,HE as DeployModeSchema,cr as DevSubstrateParamsSchema,sr as DevSubstrateSynthPropsSchema,QE as EXPECTED_CH_SCHEMA_VERSION_ENV,jE as EXPECTED_SCHEMA_VERSION_ENV,zE as EXPECTED_SCHEMA_VERSION_TOOL_ENV,ce as GOVERNANCE_ACCOUNT_TIERS,ze as GOVERNANCE_SCOPE_REQUIRED_CODE,vE as IMAGE_TAG_PATTERN,yE as ImageTagSchema,ke as MACHINE_ONLY_SCOPES,Ee as MASKED_VALUE_MARKER,ve as MAX_SECONDARY_REGIONS,kE as MIGRATION_SNAPSHOT_NAME_PREFIX,ar as OPENNEXT_PATTERN_TYPES,ye as OPT_IN_REGION_CODES,_r as PATTERN_REGISTRY,tr as PATTERN_TYPES,rr as PATTERN_TYPE_VALUES,er as PHYSICAL_NAME_FALLBACK_PROPERTIES,wE as PRISMA_MIGRATION_DIR_RE,oe as REDACTED_KEY_SENTINEL,X as REGION_SHORT_CODES,dE as RESERVED_APP_NAMES,xE as RESERVED_APP_NAME_MESSAGE,UE as RESERVED_APP_NAME_SUFFIX,uE as RESERVED_APP_NAME_SUFFIX_MESSAGE,xe as RESOURCE_CATEGORIES,qE as SCHEMA_ADMIN_PASSWORD_ENV,ZE as SCHEMA_ADMIN_USER_ENV,_e as SCOPED_TOKEN_REGEX,We as SCOPE_VALUES,qe as SECRET_NAME_ERROR,Ze as SECRET_NAME_PATTERN,Je as SSM_COMPONENT_ERROR,we as SSM_COMPONENT_PATTERN,$e as SSM_STANDARD_MAX_VALUE_BYTES,Tr as STATIC_SITE_ROUTING_VALUES,ne as STRUCTURAL_ENVIRONMENTS,eE as SecretNamespaceSchema,XE as ServiceArtefactSchema,KE as ServiceArtefactsSchema,n as TOKEN_STDERR_PREFIX,je as USER_GRANTABLE_SCOPES,he as abbreviateRegion,f as accountConstructKey,De as accountTier,BE as artefactOutputKey,sE as buildAppConfigPath,EE as buildNamespaceParts,rE as buildParameterPath,p as capitalise,Le as categoriseResource,v as defaultConnectedAccountName,Nr as defaultFormsCorsOrigin,nr as defaultFormsFromAddress,NE as deriveAllTargets,GE as deriveContentHashTag,iE as deriveRegionsFromOrgConfig,nE as deriveTargets,CE as environmentOrTier,Ie as environmentToTier,AE as escapeDotEnvValue,ee as filterDangerousEnvVars,Y as findAccountNameCollision,IE as findBoundaryPath,pE as findInfrastructurePaths,mE as findTarget,K as findTrailingRegionShortCode,Z as formatErrorString,OE as generateTargetName,t as getDomainExportNames,o as getDomainStackName,_ as getDomainUsEast1CertificatesStackName,ge as getEnvironmentLabel,z as getErrorCode,k as getErrorMessage,Q as getErrorStack,Ue as getExpectedDuration,ue as getFriendlyResourceType,He as getRegionInfo,I as getSafeZoneName,D as hasAsciiStableConstructKey,j as hasErrorCode,VE as hasReservedAppNameSuffix,C as imageTagParameterName,gE as inferContainerFromCandidates,me as isAccountStage,se as isAccountTier,Cr as isAddressAtDomain,pe as isGovernanceTier,fE as isInfrastructureFile,oE as isManageablePath,A as isManagedDomainBinding,Sr as isOpenNextPatternType,or as isPatternType,LE as isReservedAppName,Te as mapSettledWithConcurrency,re as maskSensitiveOutput,W as normaliseError,Xe as optInRegionWarning,_E as parseDotEnv,le as parseGitRemoteUrl,tE as parseParameterPath,te as parseShellArgs,h as projectCapacityIdentityToTarget,b as regionSuffixRejectionMessage,Ke as regions,w as singleton,ae as sleep,fe as stageFromWireEnvironment,y as suffixedAccountName,be as suggestRegionForTimezone,P as toKebab,O as toPascalCase,c as toScreamingSnake,s as toValidDatabaseName};
|
|
@@ -31,6 +31,19 @@ export declare function filterDangerousEnvVars(env: Record<string, string | unde
|
|
|
31
31
|
* The global form lives in `SCOPED_TOKEN_GLOBAL_REGEX` below for the iteration site.
|
|
32
32
|
*/
|
|
33
33
|
export declare const SCOPED_TOKEN_REGEX: RegExp;
|
|
34
|
+
/**
|
|
35
|
+
* Marker embedded in every maskSensitiveOutput replacement except the PEM
|
|
36
|
+
* branch (which uses REDACTED_KEY_SENTINEL). Exported so display surfaces
|
|
37
|
+
* that detect masked values (e.g. the webapp changeset preview) import the
|
|
38
|
+
* marker rather than re-declaring the literal.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MASKED_VALUE_MARKER = "***";
|
|
41
|
+
/**
|
|
42
|
+
* Sentinel embedded in the PEM-branch replacement
|
|
43
|
+
* (`-----BEGIN [REDACTED] PRIVATE KEY-----`). Exported for the same
|
|
44
|
+
* detection consumers as MASKED_VALUE_MARKER.
|
|
45
|
+
*/
|
|
46
|
+
export declare const REDACTED_KEY_SENTINEL = "[REDACTED]";
|
|
34
47
|
/**
|
|
35
48
|
* Mask sensitive information in output strings to prevent credential leakage.
|
|
36
49
|
* Patterns: postgres://user:pass@host, password=xxx, secret=xxx, apikey=xxx,
|
package/dist/securityHelpers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var l=Object.defineProperty;var A=(E,s)=>l(E,"name",{value:s,configurable:!0});const D=new Set(["NODE_OPTIONS","NODE_PATH","NODE_EXTRA_CA_CERTS","NODE_DEBUG","NODE_PRESERVE_SYMLINKS","LD_PRELOAD","LD_LIBRARY_PATH","LD_AUDIT","LD_BIND_NOW","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","DYLD_FRAMEWORK_PATH","PYTHONPATH","PYTHONSTARTUP","PERL5LIB","PERL5OPT","RUBYLIB","RUBYOPT","HOME","XDG_CONFIG_HOME","AWS_SHARED_CREDENTIALS_FILE","AWS_CONFIG_FILE","SHELL","BASH_ENV","ENV","ZDOTDIR"]);function T(E){return Object.fromEntries(Object.entries(E).filter(([s])=>!D.has(s.toUpperCase())))}A(T,"filterDangerousEnvVars");const u=/fjall_(?:ak|dk)_[A-Z2-7]{16}\.[A-Z2-7]{40}/,R=/(fjall_(?:ak|dk)_)[A-Z2-7]{16}\.[A-Z2-7]{40}/g,_="***",o="[REDACTED]",i=`-----BEGIN ${o} PRIVATE KEY-----...-----END ${o} PRIVATE KEY-----`;function N(E){return E.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----(?:[^"\\]|\\[\\nrt"])*?-----END [A-Z ]*PRIVATE KEY-----/g,()=>i).replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,()=>i).replace(/(\w+:\/\/[^:]+:)[^@]+(@)/gi,(s,e,t)=>`${e}${_}${t}`).replace(/(?<![a-zA-Z])(password|passwd|secret|api[_-]?key|token|auth|credential)([=:])["']?[^\s"']+/gi,(s,e,t)=>`${e}${t}${_}`).replace(/\b(ghu_|ghs_|ghp_|gho_|github_pat_)[A-Za-z0-9_]+/g,(s,e)=>`${e}${_}`).replace(/\b(sk|rk)_(live|test)_[A-Za-z0-9]{8,}/g,(s,e,t)=>`${e}_${t}_${_}`).replace(/\bwhsec_[A-Za-z0-9]{8,}/g,()=>`whsec_${_}`).replace(/(?<=Authorization:\s*Bearer\s+)[A-Za-z0-9._~+/=-]+/gi,_).replace(/\b(AKIA|ASIA)[A-Z0-9]{12,}\b/g,(s,e)=>`${e}${_}`).replace(/(?<=aws_secret_access_key\s*=\s*["']?|SecretAccessKey[=:]\s*|"(aws)?secretAccessKey":\s*"|"aws_secret_access_key":\s*")[A-Za-z0-9/+=]{40,}/gi,_).replace(/(?<="(aws)?sessionToken":\s*"|"aws_session_token":\s*")[^"]+/gi,_).replace(/(?<=aws_session_token\s*[=:]\s*["']?|SessionToken[=:]\s*["']?)[^\s"']+/gi,_).replace(/(?<="(internal[Aa]piKey|fjallCallbackToken)":\s*")[^"]+/g,_).replace(R,(s,e)=>`${e}${_}`)}A(N,"maskSensitiveOutput");function I(E){const s=[];let e="",t=!1,r=!1,n=!1,c=!1;for(const a of E){if(n){e+=a,n=!1;continue}if(a==="\\"&&!t){n=!0;continue}if(a==="'"&&!r){t=!t,c=!0;continue}if(a==='"'&&!t){r=!r,c=!0;continue}if(a===" "&&!t&&!r){(e||c)&&(s.push(e),e="",c=!1);continue}e+=a}if(t||r)throw new Error(`Unbalanced ${t?"single":"double"} quote in command: ${E.slice(0,80)}`);if(n)throw new Error(`Trailing backslash in command: ${E.slice(0,80)}`);return(e||c)&&s.push(e),s}A(I,"parseShellArgs");export{D as DANGEROUS_ENV_VARS,_ as MASKED_VALUE_MARKER,o as REDACTED_KEY_SENTINEL,u as SCOPED_TOKEN_REGEX,T as filterDangerousEnvVars,N as maskSensitiveOutput,I as parseShellArgs};
|