@blue-labs/repository-generator 4.0.2-rc.0 → 4.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.
@@ -0,0 +1 @@
1
+ "use strict";const T=require("path"),S=require("fs"),g=require("@blue-labs/language"),v=require("@blue-labs/repository-contract"),Y=require("fast-json-patch"),H=require("js-yaml");function z(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const D=z(T),O=new Set([...g.Properties.CORE_TYPES]),V=g.Properties.CORE_TYPE_NAME_TO_BLUE_ID_MAP,C="Blue Repository",h={Dev:"dev",Stable:"stable"},K=new Set([".git",".github",".husky","node_modules",".nx",".vscode",".idea"]);function X(e){const r=S.readdirSync(e,{withFileTypes:!0}),n=new Map;for(const t of r){if(!t.isDirectory()||K.has(t.name))continue;const o=T.join(e,t.name),s=q(o);if(s.length!==0)for(const a of s){const c=a.endsWith(".dev.blue")?h.Dev:h.Stable,i=Z(a),f=Q(i,a),u=`${t.name}/${f}`,l=n.get(u);if(l)throw l.status!==c?new Error(`Type ${u} has both stable and dev definitions (${l.filePath} and ${a}).`):new Error(`Type ${u} is defined multiple times (${l.filePath} and ${a}).`);const y=ee(i,a);n.set(u,{packageName:t.name,typeName:f,status:c,content:i,filePath:a,references:y})}}return n}function Z(e){const r=S.readFileSync(e,"utf8"),n=g.yamlBlueParse(r);if(!x(n))throw new Error(`Type file ${e} must contain a YAML object.`);return n}function Q(e,r){if(!x(e)||typeof e.name!="string")throw new Error(`Type file ${r} is missing required "name" field.`);return e.name}function q(e){const r=S.readdirSync(e,{withFileTypes:!0}),n=[];for(const t of r){if(t.isDirectory()){n.push(...q(T.join(e,t.name)));continue}(t.name.endsWith(".blue")||t.name.endsWith(".dev.blue"))&&n.push(T.join(e,t.name))}return n}function ee(e,r){const n=new Set,t=o=>{if(Array.isArray(o)){o.forEach(a=>t(a));return}if(!x(o))return;const s=a=>{if(typeof a=="string"&&!O.has(a)){if(!a.includes("/"))throw new Error(`Invalid type reference "${a}" in ${r}. Use <Package>/<Type> for non-primitive references.`);n.add(a)}};s(o.type),s(o.itemType),s(o.keyType),s(o.valueType),Object.values(o).forEach(a=>t(a))};return t(e),n}function x(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function te(e){const r=new Map;for(const[n,t]of e){const o=new Set;for(const s of t.references){if(!e.has(s))throw new Error(`Type ${n} references unknown alias ${s}. Ensure the target type exists.`);o.add(s)}r.set(n,o)}return r}function ne(e){const r=[],n=new Map,t=new Map,o=[],s=new Set;let a=0;const c=i=>{n.set(i,a),t.set(i,a),a+=1,o.push(i),s.add(i);for(const u of e.get(i)??[]){if(!n.has(u)){c(u),t.set(i,Math.min(t.get(i)??0,t.get(u)??0));continue}s.has(u)&&t.set(i,Math.min(t.get(i)??0,n.get(u)??0))}if(t.get(i)!==n.get(i))return;const f=[];for(;o.length>0;){const u=o.pop();if(!u||(s.delete(u),f.push(u),u===i))break}r.push(f.sort((u,l)=>u.localeCompare(l)))};for(const i of e.keys())n.has(i)||c(i);return r}function re(e){const r=ne(e),n=new Map;r.forEach((c,i)=>{c.forEach(f=>n.set(f,i))});const t=new Map;r.forEach((c,i)=>t.set(i,new Set));for(const[c,i]of e){const f=n.get(c);if(f!==void 0)for(const u of i){const l=n.get(u);l!==void 0&&l!==f&&t.get(f)?.add(l)}}const o=[],s=new Set,a=c=>{if(!s.has(c)){s.add(c);for(const i of t.get(c)??[])a(i);o.push(c)}};for(const c of t.keys())a(c);return o.map(c=>r[c]??[])}function oe(e,r){const n=new Map,t=(o,s=new Set)=>{if(n.has(o))return n.get(o)??!1;if(s.has(o))return!1;s.add(o);const a=e.get(o)||new Set;for(const c of a){const i=r.get(c);if(i&&(i.status===h.Dev||t(c,s)))return s.delete(o),n.set(o,!0),!0}return s.delete(o),n.set(o,!1),!1};for(const[o,s]of r)if(s.status===h.Stable&&t(o))throw new Error(`Stable type ${o} depends on a dev type. Stable types may only depend on other stable types.`)}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function w(e){return I(e)?Object.getPrototypeOf(e)===Object.prototype:!1}function P(e){if(Array.isArray(e))return e.map(r=>P(r));if(w(e)){const r={};for(const[n,t]of Object.entries(e))r[n]=P(t);return r}return e}function k(e){return e.map(r=>({repositoryVersionIndex:r.repositoryVersionIndex,typeBlueId:r.typeBlueId,attributesAdded:[...r.attributesAdded]}))}const se=/^\$\{([\s\S]*)\}$/;class ie{process(r,n){const t=n.getValue();if(j(t)){const o=n.clone();return o.setValue(t),o.setProperties(void 0),o.setItems(void 0),o.setType(void 0),o}return r}postProcess(r,n){const t=n.getValue();if(j(t)&&r.getValue()!==t){const o=r.clone();return o.setValue(t),o}return r}}function j(e){return typeof e!="string"||!se.test(e)?!1:e.indexOf("${")===e.lastIndexOf("${")}function ae(){return new g.MergingProcessors.SequentialMergingProcessor([new g.MergingProcessors.ValuePropagator,new ie,new g.MergingProcessors.TypeAssigner,new g.MergingProcessors.ListProcessor,new g.MergingProcessors.DictionaryProcessor,new g.MergingProcessors.MetadataPropagator,new g.MergingProcessors.BasicTypesVerifier])}const L="00000000000000000000000000000000000000000000";function ce(e,r,n,t){const o=new Map,s=new Map,a=new Map,c=new g.Blue,i=g.createNodeProvider(l=>fe(l)?[new g.BlueNode().setReferenceBlueId(l)]:ue(a,l).map(y=>c.jsonValueToNode(y))),u={blue:new g.Blue({nodeProvider:i,mergingProcessor:ae()}),contentByBlueId:a};for(const l of e){if(pe(l,n)){de({component:l,discovered:r,previousTypes:t,aliasToBlueId:o,aliasToStorageContent:s,context:u});continue}const y=l[0];if(!y)continue;const m=r.get(y);m&&le({alias:y,type:m,previousTypes:t,aliasToBlueId:o,aliasToStorageContent:s,context:u})}return{aliasToBlueId:o,aliasToStorageContent:s}}function ue(e,r){const n=G(r);if(n===void 0)return[];const t=e.get(n.baseBlueId);if(t===void 0)return[];if(n.index===void 0)return Array.isArray(t)?t:[t];if(!Array.isArray(t))return n.index===0?[t]:[];const o=t[n.index];return o===void 0?[]:[o]}function G(e){const r=e.indexOf("#");if(r===-1)return{baseBlueId:e};const n=e.slice(0,r),t=e.slice(r+1),o=Number(t);if(!(!Number.isInteger(o)||o<0))return{baseBlueId:n,index:o}}function fe(e){return e===L||/^this#\d+$/.test(e)}function $(e,r,n=!1,t=!1){if(Array.isArray(e))return e.map(s=>$(s,r,n,t));if(!I(e))return e;const o={};for(const[s,a]of Object.entries(e)){const c=t||s===v.OBJECT_CONTRACTS;if((s==="type"||s==="itemType"||s==="keyType"||s==="valueType")&&typeof a=="string"&&!(n&&c)){if(O.has(a)){const i=V[a];if(!i)throw new Error(`Missing primitive BlueId for ${a}.`);o[s]={blueId:i}}else{const i=a,f=r(i);if(!f)throw new Error(`Missing BlueId for alias ${i}.`);o[s]={blueId:f}}continue}o[s]=$(a,r,n,c)}return o}function le({alias:e,type:r,previousTypes:n,aliasToBlueId:t,aliasToStorageContent:o,context:s}){const{node:a,storageContent:c}=M(r,m=>t.get(m),s.blue),i=O.has(r.typeName),f=i?we(r.typeName):s.blue.calculateBlueIdSync(a),u=J(n,r,c),l=u?.blueId??f,y=u?.content??c;t.set(e,l),o.set(e,y),i||s.contentByBlueId.set(l,y),s.blue.registerBlueIds({[e]:l})}function de({component:e,discovered:r,previousTypes:n,aliasToBlueId:t,aliasToStorageContent:o,context:s}){const a=new Set(e),c=new Map;e.forEach((d,p)=>c.set(d,p));const i=e.map(d=>{const p=N(r,d),{node:B}=M(p,b=>a.has(b)?L:t.get(b),s.blue);return{alias:d,preliminaryBlueId:s.blue.calculateBlueIdSync(B)}});me(i),i.sort(he);const f=new Map;i.forEach(({alias:d},p)=>{f.set(d,p)});const u=new Map;for(const d of e){const p=N(r,d),B=M(p,b=>{if(!a.has(b))return t.get(b);const _=f.get(b);if(_===void 0)throw new Error(`Failed to resolve cyclic reference ${b}.`);return`this#${_}`},s.blue);u.set(d,B)}const l=ye(e,r,n,u);if(l){for(const d of e){const p=l.get(d);if(!p)throw new Error(`Failed to preserve cyclic BlueId for type ${d}.`);t.set(d,p.blueId),o.set(d,p.content),s.blue.registerBlueIds({[d]:p.blueId})}ge(s.contentByBlueId,l);return}const y=i.map(({alias:d})=>{const p=u.get(d);if(!p)throw new Error(`Failed to build cyclic content for type ${d}.`);return p.node}),m=i.map(({alias:d})=>{const p=u.get(d);if(!p)throw new Error(`Failed to build cyclic content for type ${d}.`);return p.storageContent}),A=s.blue.calculateBlueIdSync(y);s.contentByBlueId.set(A,m),i.forEach(({alias:d},p)=>{const B=u.get(d);if(!B)throw new Error(`Failed to build cyclic content for type ${d}.`);const b=`${A}#${p}`;t.set(d,b),o.set(d,B.storageContent),s.blue.registerBlueIds({[d]:b})})}function pe(e,r){if(e.length>1)return!0;const n=e[0];return n?r.get(n)?.has(n)??!1:!1}function M(e,r,n){const t=$(P(e.content),r),o=n.jsonValueToNode(t);return{node:o,storageContent:n.nodeToJson(o,"official")}}function N(e,r){const n=e.get(r);if(!n)throw new Error(`Unknown type alias ${r}.`);return n}function ye(e,r,n,t){const o=new Map;for(const s of e){const a=N(r,s),c=t.get(s);if(!c)throw new Error(`Failed to build cyclic content for type ${s}.`);const i=J(n,a,c.storageContent);if(!i)return null;o.set(s,i)}return o}function J(e,r,n){const t=e.get(r.packageName)?.get(r.typeName),o=t?.versions?.at(-1)?.typeBlueId;return!o||!t||!w(t.content)||!R(t.content,n)?null:{blueId:o,content:P(t.content)}}function ge(e,r){const n=new Map;for(const{blueId:t,content:o}of r.values()){const s=G(t);if(!s||s.index===void 0){e.set(t,o);continue}const a=n.get(s.baseBlueId)??[];a.push({index:s.index,content:o}),n.set(s.baseBlueId,a)}for(const[t,o]of n){const a=[...o].sort((c,i)=>c.index-i.index).map((c,i)=>{if(c.index!==i)throw new Error(`Cyclic repository content for ${t} is missing index ${i}.`);return c.content});e.set(t,a)}}function me(e){const r=new Map;for(const n of e){const t=r.get(n.preliminaryBlueId);if(t)throw new Error(`Direct cyclic type set has ambiguous canonical ordering: ${t} and ${n.alias} share preliminary BlueId '${n.preliminaryBlueId}'.`);r.set(n.preliminaryBlueId,n.alias)}}function he(e,r){return e.preliminaryBlueId<r.preliminaryBlueId?-1:e.preliminaryBlueId>r.preliminaryBlueId?1:0}function R(e,r){if(e===r)return!0;if(Array.isArray(e)||Array.isArray(r))return!Array.isArray(e)||!Array.isArray(r)||e.length!==r.length?!1:e.every((n,t)=>R(n,r[t]));if(w(e)||w(r)){if(!w(e)||!w(r))return!1;const n=Object.keys(e).sort(),t=Object.keys(r).sort();return n.length!==t.length?!1:n.every((o,s)=>o===t[s]&&R(e[o],r[o]))}return!1}function we(e){const r=V[e];if(!r)throw new Error(`Missing primitive BlueId for ${e}.`);return r}const U=new Set(Object.values(V)),be=new Set(["type","itemType","valueType","keyType"]),Ie=new Set(["name","description"]),E={Unchanged:"unchanged",NonBreaking:"non-breaking",Breaking:"breaking"};function Be(e,r,n,t,o){const s=Y.compare(e,r);if(s.length===0)return{status:E.Unchanged,attributesAdded:[]};const a=[];let c=!1;for(const i of s){if(Se(i,e,o)){c=!0;continue}if(i.op!=="add")return{status:E.Breaking,attributesAdded:[]};if(!Ee(i))return{status:E.Breaking,attributesAdded:[]};a.push(i.path)}return a.length===0&&!c?{status:E.Breaking,attributesAdded:[]}:(a.length>0&&ve(a,n,t),{status:E.NonBreaking,attributesAdded:a})}function ve(e,r,n){for(const t of e)try{v.validateAttributesAddedPointer(t)}catch(o){throw new Error(`Invalid attribute pointer "${t}" for ${r}/${n}: ${o.message}`)}}function Ee(e){if(e.op!=="add")return!1;const r=W(e.path);if(r.length===0)return!1;const n=r.at(-1);return n&&/^\d+$/.test(n)||n&&be.has(n)||r.some(t=>v.RESERVED_ATTRIBUTES_POINTER_SEGMENTS.has(t))?!1:I(e.value)?!Ae(e.value):n?Ie.has(n):!1}function W(e){try{return v.parsePointer(e)}catch{return[]}}function Ae(e){const r=[e];for(;r.length;){const n=r.pop();if(n){if(Object.prototype.hasOwnProperty.call(n,"value")||Object.prototype.hasOwnProperty.call(n,"items"))return!0;if(Object.prototype.hasOwnProperty.call(n,v.OBJECT_SCHEMA)){const t=n[v.OBJECT_SCHEMA];if(I(t)&&t.required===!0)return!0}for(const[t,o]of Object.entries(n))t!==v.OBJECT_SCHEMA&&I(o)&&r.push(o)}}return!1}function Se(e,r,n){if(e.op!=="replace"||typeof e.path!="string")return!1;const t=W(e.path);if(t.length<2)return!1;const o=t.at(-1),s=t.at(-2);if(!(o==="blueId"&&s!==void 0&&(s==="type"||s==="itemType"||s==="keyType"||s==="valueType")))return!1;const a=Te(r,t),c=typeof a=="string"?a:I(a)&&typeof a.blueId=="string"?a.blueId:null,i=typeof e.value=="string"?e.value:I(e.value)&&typeof e.value.blueId=="string"?e.value.blueId:null;if(c&&U.has(c)||i&&U.has(i)||!c||!i)return!1;const f=n.get(c),u=n.get(i);if(!f||!u)return!1;for(const l of f)if(u.has(l))return!0;return!1}function Te(e,r){let n=e;for(const t of r)if(Array.isArray(n)){const o=Number(t);if(Number.isNaN(o)||o<0||o>=n.length)return;n=n[o]}else if(I(n))n=n[t];else return;return n}function Pe(e){const r=new Map;if(!e)return r;for(const n of e.packages||[]){if(typeof n.name!="string")continue;const t=new Map;for(const o of n.types||[]){const s=o.content,a=w(s)&&typeof s.name=="string"?s.name:void 0;a&&t.set(a,o)}r.set(n.name,t)}return r}function ke(e,r){for(const[n,t]of r)for(const[o,s]of t){const a=`${n}/${o}`;if(!e.has(a)&&s.status===h.Stable)throw new Error(`Stable type ${a} was removed. Breaking changes require a new logical type name.`)}}function $e({discovered:e,previousTypes:r,aliasToBlueId:n,aliasToStorageContent:t,nextRepoVersionIndex:o}){const s=new Map,a=Me(r,n);for(const[c,i]of e){const f=n.get(c);if(!f)throw new Error(`Failed to compute BlueId for type ${c}.`);const u=r.get(i.packageName)?.get(i.typeName)??null;if(u&&u.status===h.Stable&&i.status===h.Dev)throw new Error(`Type ${c} was stable previously and cannot be downgraded to dev. Use a new logical name instead.`);const l=t.get(c)??i.content,y=i.status===h.Dev?Ne({blueId:f,nextRepoVersionIndex:o,previousType:u}):!u||u.status===h.Dev?Re({blueId:f,nextRepoVersionIndex:o}):Oe({alias:c,blueId:f,nextRepoVersionIndex:o,previousType:u,currentContent:l,packageName:i.packageName,typeName:i.typeName,blueIdAliases:a});y.content=l,y.status=i.status;const m=s.get(i.packageName)??[];m.push(y),s.set(i.packageName,m)}return s}function Me(e,r){const n=new Map,t=(o,s)=>{const a=n.get(o);if(a){a.add(s);return}n.set(o,new Set([s]))};for(const[o,s]of e)for(const[a,c]of s){const i=`${o}/${a}`;for(const f of c.versions??[])typeof f.typeBlueId=="string"&&t(f.typeBlueId,i)}for(const[o,s]of r)t(s,o);return n}function Ne({blueId:e,nextRepoVersionIndex:r,previousType:n}){const t=n&&n.status===h.Dev?n:null,o=t?.versions?.length===1?t.versions[0]:null,s=o&&o.typeBlueId===e;return{status:h.Dev,content:{},versions:s&&t?.versions?k(t.versions):[{repositoryVersionIndex:r,typeBlueId:e,attributesAdded:[]}]}}function Re({blueId:e,nextRepoVersionIndex:r}){return{status:h.Stable,content:{},versions:[{repositoryVersionIndex:r,typeBlueId:e,attributesAdded:[]}]}}function Oe({alias:e,blueId:r,nextRepoVersionIndex:n,previousType:t,currentContent:o,packageName:s,typeName:a,blueIdAliases:c}){if(!w(t.content))throw new Error(`Type ${e} has non-object content; cannot compute diff for stable versioning.`);const i=Be(t.content,o,s,a,c);if(i.status===E.Unchanged){const f=k(t.versions||[]),u=f.at(-1);if(u&&u.typeBlueId!==r)throw new Error(`Type ${e} content is unchanged but BlueId differs from previous metadata.`);return{status:h.Stable,content:{},versions:f}}if(i.status===E.NonBreaking)return{status:h.Stable,content:{},versions:[...k(t.versions||[]),{repositoryVersionIndex:n,typeBlueId:r,attributesAdded:i.attributesAdded}]};throw new Error(`Breaking change detected in stable type ${e}. Introduce a new type name for breaking changes.`)}function Ve(e){return Array.from(e.entries()).map(([r,n])=>({name:r,types:n.map(t=>({...t,versions:[...t.versions].sort((o,s)=>o.repositoryVersionIndex-s.repositoryVersionIndex)})).sort((t,o)=>{const s=w(t.content)&&typeof t.content.name=="string"?t.content.name:"",a=w(o.content)&&typeof o.content.name=="string"?o.content.name:"";return s.localeCompare(a)})})).sort((r,n)=>r.name.localeCompare(n.name))}function F(e){return g.BlueIdCalculator.INSTANCE.calculateSync(e)}function Ce(e,r,n){const t=r?.repositoryVersions.at(-1),o=!t||t!==n,s=r?.repositoryVersions?[...r.repositoryVersions]:[];return o&&s.push(n),{document:{name:C,packages:e,repositoryVersions:s},changed:o}}function xe(e,r,n){const t={name:C,repositoryVersions:r,packages:_e(e,n)};v.validateStableDoesNotDependOnDev(t)}function _e(e,r){const n={};for(const t of e){const o=De(t.name,r),s={},a={};for(const c of t.types){const i=c.versions?.[c.versions.length-1]?.typeBlueId;if(!i)throw new Error(`Type ${t.name} is missing a current BlueId in versions.`);const f=je(c);s[i]={status:c.status,name:f,versions:c.versions??[]},a[i]=c.content}n[t.name]={name:t.name,aliases:o,typesMeta:s,contents:a,schemas:{}}}return n}function De(e,r){const n={},t=`${e}/`;return r.forEach((o,s)=>{s.startsWith(t)&&(n[s]=o)}),n}function je(e){const r=w(e.content)&&typeof e.content.name=="string"?e.content.name:null;if(!r)throw new Error('Type content is missing required "name" field.');return r}function Ue(e){if(!S.existsSync(e))return{previous:null};const r=S.readFileSync(e,"utf8"),n=g.yamlBlueParse(r);if(!n||!I(n))throw new Error("Existing BlueRepository.blue is not a valid object.");const t=n,o=t.packages,s=t.repositoryVersions,a=Array.isArray(o)&&o.every(l=>I(l)&&typeof l.name=="string"&&Array.isArray(l.types)),c=Array.isArray(s)&&s.every(l=>typeof l=="string");if(!a||!c)throw new Error("Invalid BlueRepository.blue structure: expected { packages: BluePackage[], repositoryVersions: string[] }");const i=o,f=s,u={name:typeof t.name=="string"?t.name:C,packages:i,repositoryVersions:f};return{existingYaml:r,previous:u}}function Fe(e){return H.dump(e,{lineWidth:-1})}function qe(e){const r=D.resolve(e.repoRoot),n=D.resolve(e.blueRepositoryPath),{existingYaml:t,previous:o}=Ue(n),s=X(r),a=Pe(o);ke(s,a);const c=te(s),i=re(c);oe(c,s);const{aliasToBlueId:f,aliasToStorageContent:u}=ce(i,s,c,a),l=o?o.repositoryVersions.length:0,y=$e({discovered:s,previousTypes:a,aliasToBlueId:f,aliasToStorageContent:u,nextRepoVersionIndex:l}),m=Ve(y),A=o&&Le(o.packages,m)?o.repositoryVersions.at(-1)??F(m):F(m),{document:d,changed:p}=Ce(m,o,A);xe(d.packages,d.repositoryVersions,f);const B=Fe(d);if(o&&!p&&t&&t!==B)throw new Error("BlueRepository.blue content differs from regenerated output while RepoBlueId is unchanged. Please revert manual edits or rerun in write mode.");return e.verbose&&console.info(`[repository-generator] RepoBlueId: ${A} (${p?"changed":"unchanged"})`),{document:d,currentRepoBlueId:A,previousRepoBlueId:o?.repositoryVersions.at(-1),changed:p||!t,yaml:B,existingYaml:t}}function Le(e,r){return JSON.stringify(e)===JSON.stringify(r)}exports.generateRepository=qe;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./generateRepository-DDbll3Cz.js");exports.generateRepository=e.generateRepository;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./generateRepository-DUT9zf8k.js");exports.generateRepository=e.generateRepository;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { g as r } from "./generateRepository-BiRDvOfc.mjs";
1
+ import { g as r } from "./generateRepository-B7eem2l_.mjs";
2
2
  export {
3
3
  r as generateRepository
4
4
  };
@@ -1,6 +1,8 @@
1
1
  import { JsonValue } from '@blue-labs/shared-utils';
2
- import { Alias, DiscoveredType, JsonMap } from './internalTypes';
3
- export declare function computeBlueIds(topoOrder: Alias[], discovered: Map<Alias, DiscoveredType>): {
2
+ import { Alias, DiscoveredType, JsonMap, PackageTypeMap } from './internalTypes';
3
+ import { AliasComponent, DependencyGraph } from './graph';
4
+ export declare const ZERO_BLUE_ID = "00000000000000000000000000000000000000000000";
5
+ export declare function computeBlueIds(componentOrder: AliasComponent[], discovered: Map<Alias, DiscoveredType>, dependencyGraph: DependencyGraph, previousTypes: PackageTypeMap): {
4
6
  aliasToBlueId: Map<Alias, string>;
5
7
  aliasToStorageContent: Map<Alias, JsonMap>;
6
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"blueIds.d.ts","sourceRoot":"","sources":["../../../src/lib/core/blueIds.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAKjE,wBAAgB,cAAc,CAC5B,SAAS,EAAE,KAAK,EAAE,EAClB,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,GACrC;IACD,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC5C,CA0CA;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/C,MAAM,EAAE,MAAM,GACb,SAAS,EAAE,CAqBb;AAoBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EACjC,aAAa,UAAQ,EACrB,cAAc,UAAQ,GACrB,SAAS,CAuDX"}
1
+ {"version":3,"file":"blueIds.d.ts","sourceRoot":"","sources":["../../../src/lib/core/blueIds.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,KAAK,EACL,cAAc,EACd,OAAO,EACP,cAAc,EACf,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,YAAY,iDAAiD,CAAC;AAiB3E,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAAE,EAChC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,EACtC,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,cAAc,GAC5B;IACD,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CAC5C,CAoDA;AAED,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/C,MAAM,EAAE,MAAM,GACb,SAAS,EAAE,CAqBb;AAwBD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EACjC,aAAa,UAAQ,EACrB,cAAc,UAAQ,GACrB,SAAS,CAOX"}
@@ -1 +1 @@
1
- {"version":3,"file":"contractValidation.d.ts","sourceRoot":"","sources":["../../../src/lib/core/contractValidation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAChC,IAAI,CASN"}
1
+ {"version":3,"file":"contractValidation.d.ts","sourceRoot":"","sources":["../../../src/lib/core/contractValidation.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAChC,IAAI,CAQN"}
@@ -1,6 +1,9 @@
1
1
  import { Alias, DiscoveredType } from './internalTypes';
2
2
  export type DependencyGraph = Map<Alias, Set<Alias>>;
3
+ export type AliasComponent = Alias[];
3
4
  export declare function buildDependencyGraph(discovered: Map<Alias, DiscoveredType>): DependencyGraph;
4
5
  export declare function topoSort(graph: DependencyGraph): Alias[];
6
+ export declare function stronglyConnectedComponents(graph: DependencyGraph): AliasComponent[];
7
+ export declare function topoSortComponents(graph: DependencyGraph): AliasComponent[];
5
8
  export declare function enforceStableToDevRule(graph: DependencyGraph, discovered: Map<Alias, DiscoveredType>): void;
6
9
  //# sourceMappingURL=graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/lib/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAErD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,GACrC,eAAe,CAiBjB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,CAgCxD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,QA8BvC"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/lib/core/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,KAAK,EAAE,CAAC;AAErC,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,GACrC,eAAe,CAiBjB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,EAAE,CAgCxD;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,GACrB,cAAc,EAAE,CA6DlB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,EAAE,CA6C3E;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,QAwCvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateRepository.d.ts","sourceRoot":"","sources":["../../src/lib/generateRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAqB9E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAsE1B"}
1
+ {"version":3,"file":"generateRepository.d.ts","sourceRoot":"","sources":["../../src/lib/generateRepository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAqB9E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CA2E1B"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@blue-labs/repository-generator",
3
- "version": "4.0.2-rc.0",
3
+ "version": "4.1.0",
4
4
  "bin": {
5
5
  "blue-repo-generator": "./dist/bin/blue-repo-generator.mjs"
6
6
  },
7
7
  "dependencies": {
8
- "@blue-labs/language": "4.0.2-rc.0",
9
- "@blue-labs/repository-contract": "4.0.2-rc.0",
8
+ "@blue-labs/language": "4.1.0",
9
+ "@blue-labs/repository-contract": "4.1.0",
10
10
  "fast-json-patch": "3.1.1",
11
11
  "js-yaml": "4.1.0",
12
- "@blue-labs/shared-utils": "4.0.2-rc.0"
12
+ "@blue-labs/shared-utils": "4.1.0"
13
13
  },
14
14
  "main": "./dist/index.js",
15
15
  "module": "./dist/index.mjs",