@tbox.cn/app-toolkit 0.4.0 → 0.5.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.
Files changed (39) hide show
  1. package/dist/chunk-WUULQDOV.js +1 -0
  2. package/dist/contracts-resolver-PS2UH2G6.js +1 -0
  3. package/dist/index.d.ts +315 -144
  4. package/dist/index.js +9 -9
  5. package/package.json +2 -2
  6. package/src/assembly/provider-catalog.ts +1 -1
  7. package/src/assembly/resolve-key.ts +75 -0
  8. package/src/assembly/walk-manifests.ts +138 -85
  9. package/src/core/contracts-expected.ts +2 -2
  10. package/src/core/contracts-resolver.ts +12 -1
  11. package/src/core/module-schema.ts +87 -14
  12. package/src/dto.ts +48 -33
  13. package/src/factory.ts +62 -18
  14. package/src/index.ts +14 -7
  15. package/src/integrations/mock-bindings.ts +1 -1
  16. package/src/integrations/module-binding.ts +60 -0
  17. package/src/integrations/predicate-io.ts +26 -5
  18. package/src/integrations/predicate.ts +97 -57
  19. package/src/integrations/prune-bindings.ts +33 -14
  20. package/src/integrations/write.ts +43 -27
  21. package/src/views/app.ts +4 -4
  22. package/src/views/context.ts +11 -12
  23. package/src/views/integration-schemas.ts +61 -17
  24. package/src/views/modules.ts +29 -23
  25. package/src/views/providers.ts +5 -5
  26. package/src/views/service-detail.ts +1 -1
  27. package/src/views/service-resolutions.ts +14 -13
  28. package/tests/credentials-view.test.ts +2 -2
  29. package/tests/demo-app.ts +11 -6
  30. package/tests/dev-manifest-catalog.test.ts +14 -14
  31. package/tests/file-cache.test.ts +5 -5
  32. package/tests/module-schema.test.ts +106 -20
  33. package/tests/resolve-key.test.ts +154 -0
  34. package/tests/vendor-schema-keywords.test.ts +74 -0
  35. package/tests/views.test.ts +296 -166
  36. package/tests/write-core.test.ts +83 -0
  37. package/dist/chunk-KPD3LUH4.js +0 -1
  38. package/dist/contracts-resolver-E4SECBOG.js +0 -1
  39. package/src/integrations/domain-binding.ts +0 -81
@@ -0,0 +1 @@
1
+ import{existsSync as l,readdirSync as x,realpathSync as m}from"fs";import{join as c}from"path";import{pathToFileURL as F}from"url";import{existsSync as T,readFileSync as k,statSync as M}from"fs";function p(){let n=new Map,e=0;function r(t){if(!T(t))return null;let i=M(t);return`${i.mtimeMs}:${i.size}`}return{read(t,i){let o=r(t);if(o===null){n.delete(t);return}let s=n.get(t);if(s&&s.fingerprint===o)return s.value;e+=1;let a=i(k(t,"utf8"));return n.set(t,{fingerprint:o,value:a}),a},invalidate(t){if(t===void 0){n.clear();return}for(let i of t)n.delete(i)},get parseCount(){return e}}}var g=["resolveEffectiveService","buildSupplyLookup","moduleDomainOf","normalizeInstances","RESOURCE_TYPE_IDS"],N="parseIntegrationsConfig",O="OWNERSHIP_BINDING_V6",v={version:null,evaluation:!1,strictValidation:!1,ownershipBindingV6:!1,module:{},notes:[]};function C(n){let e=[n];for(let r of["apps","packages"]){let t=c(n,r);if(!l(t))continue;let i=x(t,{withFileTypes:!0}).filter(o=>o.isDirectory()).map(o=>o.name);r==="apps"?i.sort((o,s)=>o==="server"?-1:s==="server"?1:o.localeCompare(s)):i.sort((o,s)=>o.localeCompare(s));for(let o of i)e.push(c(t,o))}return e}var d=new Map,h=p();function y(n){return h.read(n,e=>{let r=JSON.parse(e);return typeof r.version=="string"?r.version:null})??null}function b(n){if(!l(n))return"gone";let e;try{e=m(n)}catch{e=n}return l(c(e,"dist","runtime.js"))?"dist":l(c(e,"src","runtime.ts"))?"src":"none"}function R(n){let e=c(n,"package.json");return{pkgPath:e,candidateDir:n,version:y(e),artifact:b(n)}}function E(n){for(let e of C(n)){let r=c(e,"node_modules","@tbox.cn","app-contracts"),t=c(r,"package.json");if(l(t))return{pkgPath:t,candidateDir:r,version:y(t),artifact:b(r)}}return null}function u(n){return n===null?"none":`${n.pkgPath}|${n.version??"null"}|${n.artifact}`}function _(n,e){let r=E(n);if(u(r)!==u(e.first))return!1;if(e.resolved===null)return!0;let t=r!==null&&r.candidateDir===e.resolved.candidateDir?r:R(e.resolved.candidateDir);return u(t)===u(e.resolved)}async function $(n,e){if(!l(n))return null;let r;try{r=m(n)}catch{return null}let i=[c(r,"dist","runtime.js"),c(r,"src","runtime.ts")].find(s=>l(s)),o=h.read(c(n,"package.json"),s=>{let a=JSON.parse(s);return typeof a.version=="string"?a.version:null})??null;if(i===void 0)return e.push(`contracts ${o??"(版本未知)"} 探测命中但无构建产物(dist/runtime.js 缺失)——workspace 源码态未构建:执行 pnpm --filter @tbox.cn/app-contracts build 后重试`),null;try{let s=o!==null?`?v=${encodeURIComponent(o)}`:"",a=await import(F(i).href+s),f=g.every(w=>a[w]!==void 0),P=a[N]!==void 0,S=a[O]===!0;return{version:o,evaluation:f,strictValidation:P,ownershipBindingV6:S,module:a,notes:f?[]:[`${i} 命中但求值面具名导出缺席(${g.join("/")})——契约包形态异常`]}}catch(s){return e.push(`contracts ${o??"(版本未知)"} 构建产物导入失败(${s instanceof Error?s.message:String(s)})——workspace 源码态未构建或产物损坏:执行 pnpm --filter @tbox.cn/app-contracts build 后重试`),null}}function L(n){let e=d.get(n);if(e&&_(n,e))return e.promise;let r=E(n),t={promise:Promise.resolve({...v}),first:r,resolved:r};return t.promise=(async()=>{let i=[];for(let o of C(n)){let s=c(o,"node_modules","@tbox.cn","app-contracts"),a=await $(s,i);if(a)return a.version!==null&&!a.strictValidation&&a.notes.push(`contracts ${a.version} 无严格校验面(需 ≥0.9.0)——升级应用 @tbox.cn/app-contracts 依赖后可用`),t.resolved=R(s),a}return t.resolved=null,i.length===0&&i.push("contracts 不可解析(未安装)——检查应用依赖安装后重试"),{...v,notes:i}})(),d.set(n,t),t.promise}function H(n){n===void 0?d.clear():d.delete(n)}export{p as a,L as b,H as c};
@@ -0,0 +1 @@
1
+ import{b as a,c as b}from"./chunk-WUULQDOV.js";export{b as invalidateContractsResolver,a as resolveContractsForApp};