[{"data":1,"prerenderedAt":3504},["ShallowReactive",2],{"navigation":3,"\u002Fservices\u002Fbundle":927,"mdc-vinqck-key":3445,"mdc--ftuop3-key":3457,"mdc--fa2q6p-key":3466,"mdc-ap1xj3-key":3495},[4,40,114,446,474,498,596,903],{"title":5,"path":6,"stem":7,"children":8},"Architecture","\u002Farchitecture","architecture",[9,14,28,32,36],{"title":10,"path":6,"stem":11,"access":12,"icon":13},"Overview","architecture\u002Findex","public","i-lucide-network",{"title":10,"path":15,"stem":16,"children":17,"access":12,"icon":19},"\u002Farchitecture\u002Fkernel","architecture\u002F1.kernel\u002Findex",[18,20,24],{"title":10,"path":15,"stem":16,"access":12,"icon":19},"i-lucide-box",{"title":21,"path":22,"stem":23,"access":12},"Enclave","\u002Farchitecture\u002Fkernel\u002Fenclave","architecture\u002F1.kernel\u002Fenclave",{"title":25,"path":26,"stem":27,"access":12},"Forking the enclave","\u002Farchitecture\u002Fkernel\u002Fforking-the-enclave","architecture\u002F1.kernel\u002Fforking-the-enclave",{"title":29,"path":30,"stem":31,"access":12},"Ports","\u002Farchitecture\u002Fports","architecture\u002F2.ports",{"title":33,"path":34,"stem":35,"access":12},"Service layers","\u002Farchitecture\u002Fservice-layers","architecture\u002F3.service-layers",{"title":37,"path":38,"stem":39,"access":12},"Families","\u002Farchitecture\u002Ffamilies","architecture\u002F4.families",{"title":41,"path":42,"stem":43,"children":44},"Core","\u002Fcore","core",[45,47,50,53,56,88,97],{"title":10,"path":42,"stem":46,"access":12,"icon":19},"core\u002Findex",{"title":10,"path":48,"stem":49,"access":12},"\u002Fcore\u002F01-overview","core\u002F01-overview",{"title":10,"path":51,"stem":52,"access":12},"\u002Fcore\u002F05-stores","core\u002F05-stores",{"title":10,"path":54,"stem":55,"access":12},"\u002Fcore\u002F06-permissions-and-keyring","core\u002F06-permissions-and-keyring",{"title":10,"path":57,"stem":58,"children":59,"access":12},"\u002Fcore\u002Fnoydb","core\u002F2.noydb\u002Findex",[60,61,65,68,72,76,80,84],{"title":10,"path":57,"stem":58,"access":12},{"title":62,"path":63,"stem":64,"access":12},"Noydb","\u002Fcore\u002Fnoydb\u002Fmethods","core\u002F2.noydb\u002F1.methods",{"title":21,"path":66,"stem":67,"access":12},"\u002Fcore\u002Fnoydb\u002Fenclave","core\u002F2.noydb\u002F2.enclave",{"title":69,"path":70,"stem":71,"access":12},"Secret & keyring","\u002Fcore\u002Fnoydb\u002Fkeyring","core\u002F2.noydb\u002F3.keyring",{"title":73,"path":74,"stem":75,"access":12},"Authentication","\u002Fcore\u002Fnoydb\u002Fauthentication","core\u002F2.noydb\u002F4.authentication",{"title":77,"path":78,"stem":79,"access":12},"Auth recovery","\u002Fcore\u002Fnoydb\u002Frecovery","core\u002F2.noydb\u002F5.recovery",{"title":81,"path":82,"stem":83,"access":12},"Configuration","\u002Fcore\u002Fnoydb\u002Fconfiguration","core\u002F2.noydb\u002F6.configuration",{"title":85,"path":86,"stem":87,"access":12},"Strategies","\u002Fcore\u002Fnoydb\u002Fstrategies","core\u002F2.noydb\u002F7.strategies",{"title":10,"path":89,"stem":90,"children":91,"access":12},"\u002Fcore\u002Fvault","core\u002F3.vault\u002Findex",[92,93],{"title":10,"path":89,"stem":90,"access":12},{"title":94,"path":95,"stem":96,"access":12},"Vault","\u002Fcore\u002Fvault\u002Fmethods","core\u002F3.vault\u002F1.methods",{"title":10,"path":98,"stem":99,"children":100,"access":12},"\u002Fcore\u002Fcollection","core\u002F4.collection\u002Findex",[101,102,106,110],{"title":10,"path":98,"stem":99,"access":12},{"title":103,"path":104,"stem":105,"access":12},"Collection","\u002Fcore\u002Fcollection\u002Fmethods","core\u002F4.collection\u002F1.methods",{"title":107,"path":108,"stem":109,"access":12},"Querying","\u002Fcore\u002Fcollection\u002Fquerying","core\u002F4.collection\u002F2.querying",{"title":111,"path":112,"stem":113,"access":12},"Schema","\u002Fcore\u002Fcollection\u002Fschema","core\u002F4.collection\u002F3.schema",{"title":37,"path":115,"stem":116,"children":117},"\u002Ffamilies","families",[118,121,168,194,208,212,216,294,340],{"title":10,"path":115,"stem":119,"access":12,"icon":120},"families\u002Findex","i-lucide-plug",{"title":122,"path":123,"stem":124,"children":125,"access":12,"icon":127},"as-Exports","\u002Ffamilies\u002Fas","families\u002Fas\u002Findex",[126,128,132,136,140,144,148,152,156,160,164],{"title":122,"path":123,"stem":124,"access":12,"icon":127},"i-lucide-book-open",{"title":129,"path":130,"stem":131,"access":12},"aws-s3","\u002Ffamilies\u002Fas\u002Faws-s3","families\u002Fas\u002Faws-s3",{"title":133,"path":134,"stem":135,"access":12},"blob","\u002Ffamilies\u002Fas\u002Fblob","families\u002Fas\u002Fblob",{"title":137,"path":138,"stem":139,"access":12},"csv","\u002Ffamilies\u002Fas\u002Fcsv","families\u002Fas\u002Fcsv",{"title":141,"path":142,"stem":143,"access":12},"json","\u002Ffamilies\u002Fas\u002Fjson","families\u002Fas\u002Fjson",{"title":145,"path":146,"stem":147,"access":12},"ndjson","\u002Ffamilies\u002Fas\u002Fndjson","families\u002Fas\u002Fndjson",{"title":149,"path":150,"stem":151,"access":12},"noydb","\u002Ffamilies\u002Fas\u002Fnoydb","families\u002Fas\u002Fnoydb",{"title":153,"path":154,"stem":155,"access":12},"sql","\u002Ffamilies\u002Fas\u002Fsql","families\u002Fas\u002Fsql",{"title":157,"path":158,"stem":159,"access":12},"xlsx","\u002Ffamilies\u002Fas\u002Fxlsx","families\u002Fas\u002Fxlsx",{"title":161,"path":162,"stem":163,"access":12},"xml","\u002Ffamilies\u002Fas\u002Fxml","families\u002Fas\u002Fxml",{"title":165,"path":166,"stem":167,"access":12},"zip","\u002Ffamilies\u002Fas\u002Fzip","families\u002Fas\u002Fzip",{"title":169,"path":170,"stem":171,"children":172,"access":12,"icon":127},"at-Seals","\u002Ffamilies\u002Fat","families\u002Fat\u002Findex",[173,174,178,182,186,190],{"title":169,"path":170,"stem":171,"access":12,"icon":127},{"title":175,"path":176,"stem":177,"access":12},"aws-kms","\u002Ffamilies\u002Fat\u002Faws-kms","families\u002Fat\u002Faws-kms",{"title":179,"path":180,"stem":181,"access":12},"azure-keyvault","\u002Ffamilies\u002Fat\u002Fazure-keyvault","families\u002Fat\u002Fazure-keyvault",{"title":183,"path":184,"stem":185,"access":12},"env","\u002Ffamilies\u002Fat\u002Fenv","families\u002Fat\u002Fenv",{"title":187,"path":188,"stem":189,"access":12},"gcp-kms","\u002Ffamilies\u002Fat\u002Fgcp-kms","families\u002Fat\u002Fgcp-kms",{"title":191,"path":192,"stem":193,"access":12},"macos-keychain","\u002Ffamilies\u002Fat\u002Fmacos-keychain","families\u002Fat\u002Fmacos-keychain",{"title":195,"path":196,"stem":197,"children":198,"access":12,"icon":127},"by-Sessions","\u002Ffamilies\u002Fby","families\u002Fby\u002Findex",[199,200,204],{"title":195,"path":196,"stem":197,"access":12,"icon":127},{"title":201,"path":202,"stem":203,"access":12},"peer","\u002Ffamilies\u002Fby\u002Fpeer","families\u002Fby\u002Fpeer",{"title":205,"path":206,"stem":207,"access":12},"tabs","\u002Ffamilies\u002Fby\u002Ftabs","families\u002Fby\u002Ftabs",{"title":209,"path":210,"stem":211,"access":12},"Classifying a package","\u002Ffamilies\u002Fclassification","families\u002Fclassification",{"title":213,"path":214,"stem":215,"access":12},"Command-line tools","\u002Ffamilies\u002Fcli","families\u002Fcli",{"title":217,"path":218,"stem":219,"children":220,"access":12,"icon":127},"in-Frameworks","\u002Ffamilies\u002Fin","families\u002Fin\u002Findex",[221,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290],{"title":217,"path":218,"stem":219,"access":12,"icon":127},{"title":223,"path":224,"stem":225,"access":12},"ai","\u002Ffamilies\u002Fin\u002Fai","families\u002Fin\u002Fai",{"title":227,"path":228,"stem":229,"access":12},"devtools","\u002Ffamilies\u002Fin\u002Fdevtools","families\u002Fin\u002Fdevtools",{"title":231,"path":232,"stem":233,"access":12},"devtools-tui","\u002Ffamilies\u002Fin\u002Fdevtools-tui","families\u002Fin\u002Fdevtools-tui",{"title":235,"path":236,"stem":237,"access":12},"liff","\u002Ffamilies\u002Fin\u002Fliff","families\u002Fin\u002Fliff",{"title":239,"path":240,"stem":241,"access":12},"nextjs","\u002Ffamilies\u002Fin\u002Fnextjs","families\u002Fin\u002Fnextjs",{"title":243,"path":244,"stem":245,"access":12},"nuxt","\u002Ffamilies\u002Fin\u002Fnuxt","families\u002Fin\u002Fnuxt",{"title":247,"path":248,"stem":249,"access":12},"pinia","\u002Ffamilies\u002Fin\u002Fpinia","families\u002Fin\u002Fpinia",{"title":251,"path":252,"stem":253,"access":12},"pwa","\u002Ffamilies\u002Fin\u002Fpwa","families\u002Fin\u002Fpwa",{"title":255,"path":256,"stem":257,"access":12},"react","\u002Ffamilies\u002Fin\u002Freact","families\u002Fin\u002Freact",{"title":259,"path":260,"stem":261,"access":12},"relay","\u002Ffamilies\u002Fin\u002Frelay","families\u002Fin\u002Frelay",{"title":263,"path":264,"stem":265,"access":12},"rest","\u002Ffamilies\u002Fin\u002Frest","families\u002Fin\u002Frest",{"title":267,"path":268,"stem":269,"access":12},"solid","\u002Ffamilies\u002Fin\u002Fsolid","families\u002Fin\u002Fsolid",{"title":271,"path":272,"stem":273,"access":12},"svelte","\u002Ffamilies\u002Fin\u002Fsvelte","families\u002Fin\u002Fsvelte",{"title":275,"path":276,"stem":277,"access":12},"tanstack-query","\u002Ffamilies\u002Fin\u002Ftanstack-query","families\u002Fin\u002Ftanstack-query",{"title":279,"path":280,"stem":281,"access":12},"tanstack-table","\u002Ffamilies\u002Fin\u002Ftanstack-table","families\u002Fin\u002Ftanstack-table",{"title":283,"path":284,"stem":285,"access":12},"vue","\u002Ffamilies\u002Fin\u002Fvue","families\u002Fin\u002Fvue",{"title":287,"path":288,"stem":289,"access":12},"yjs","\u002Ffamilies\u002Fin\u002Fyjs","families\u002Fin\u002Fyjs",{"title":291,"path":292,"stem":293,"access":12},"zustand","\u002Ffamilies\u002Fin\u002Fzustand","families\u002Fin\u002Fzustand",{"title":295,"path":296,"stem":297,"children":298,"access":12,"icon":127},"on-Auth","\u002Ffamilies\u002Fon","families\u002Fon\u002Findex",[299,300,304,308,312,316,320,324,328,332,336],{"title":295,"path":296,"stem":297,"access":12,"icon":127},{"title":301,"path":302,"stem":303,"access":12},"email-otp","\u002Ffamilies\u002Fon\u002Femail-otp","families\u002Fon\u002Femail-otp",{"title":305,"path":306,"stem":307,"access":12},"magic-link","\u002Ffamilies\u002Fon\u002Fmagic-link","families\u002Fon\u002Fmagic-link",{"title":309,"path":310,"stem":311,"access":12},"oidc","\u002Ffamilies\u002Fon\u002Foidc","families\u002Fon\u002Foidc",{"title":313,"path":314,"stem":315,"access":12},"password","\u002Ffamilies\u002Fon\u002Fpassword","families\u002Fon\u002Fpassword",{"title":317,"path":318,"stem":319,"access":12},"pin","\u002Ffamilies\u002Fon\u002Fpin","families\u002Fon\u002Fpin",{"title":321,"path":322,"stem":323,"access":12},"recovery","\u002Ffamilies\u002Fon\u002Frecovery","families\u002Fon\u002Frecovery",{"title":325,"path":326,"stem":327,"access":12},"shamir","\u002Ffamilies\u002Fon\u002Fshamir","families\u002Fon\u002Fshamir",{"title":329,"path":330,"stem":331,"access":12},"threat","\u002Ffamilies\u002Fon\u002Fthreat","families\u002Fon\u002Fthreat",{"title":333,"path":334,"stem":335,"access":12},"totp","\u002Ffamilies\u002Fon\u002Ftotp","families\u002Fon\u002Ftotp",{"title":337,"path":338,"stem":339,"access":12},"webauthn","\u002Ffamilies\u002Fon\u002Fwebauthn","families\u002Fon\u002Fwebauthn",{"title":341,"path":342,"stem":343,"children":344,"access":12,"icon":127},"to-Stores","\u002Ffamilies\u002Fto","families\u002Fto\u002Findex",[345,346,350,353,357,361,365,370,374,378,382,386,390,394,398,402,406,410,414,417,421,425,429,434,438,442],{"title":341,"path":342,"stem":343,"access":12,"icon":127},{"title":347,"path":348,"stem":349,"access":12},"aws-dynamo","\u002Ffamilies\u002Fto\u002Faws-dynamo","families\u002Fto\u002Faws-dynamo",{"title":129,"path":351,"stem":352,"access":12},"\u002Ffamilies\u002Fto\u002Faws-s3","families\u002Fto\u002Faws-s3",{"title":354,"path":355,"stem":356,"access":12},"browser-fs","\u002Ffamilies\u002Fto\u002Fbrowser-fs","families\u002Fto\u002Fbrowser-fs",{"title":358,"path":359,"stem":360,"access":12},"browser-idb","\u002Ffamilies\u002Fto\u002Fbrowser-idb","families\u002Fto\u002Fbrowser-idb",{"title":362,"path":363,"stem":364,"access":12},"browser-local","\u002Ffamilies\u002Fto\u002Fbrowser-local","families\u002Fto\u002Fbrowser-local",{"title":366,"path":367,"stem":368,"access":12,"icon":369},"Choosing a store","\u002Ffamilies\u002Fto\u002Fchoosing-a-store","families\u002Fto\u002Fchoosing-a-store","i-lucide-split",{"title":371,"path":372,"stem":373,"access":12},"cloudflare-d1","\u002Ffamilies\u002Fto\u002Fcloudflare-d1","families\u002Fto\u002Fcloudflare-d1",{"title":375,"path":376,"stem":377,"access":12},"cloudflare-r2","\u002Ffamilies\u002Fto\u002Fcloudflare-r2","families\u002Fto\u002Fcloudflare-r2",{"title":379,"path":380,"stem":381,"access":12},"drive","\u002Ffamilies\u002Fto\u002Fdrive","families\u002Fto\u002Fdrive",{"title":383,"path":384,"stem":385,"access":12},"file","\u002Ffamilies\u002Fto\u002Ffile","families\u002Fto\u002Ffile",{"title":387,"path":388,"stem":389,"access":12},"icloud","\u002Ffamilies\u002Fto\u002Ficloud","families\u002Fto\u002Ficloud",{"title":391,"path":392,"stem":393,"access":12},"memory","\u002Ffamilies\u002Fto\u002Fmemory","families\u002Fto\u002Fmemory",{"title":395,"path":396,"stem":397,"access":12},"meter","\u002Ffamilies\u002Fto\u002Fmeter","families\u002Fto\u002Fmeter",{"title":399,"path":400,"stem":401,"access":12},"mysql","\u002Ffamilies\u002Fto\u002Fmysql","families\u002Fto\u002Fmysql",{"title":403,"path":404,"stem":405,"access":12},"nfs","\u002Ffamilies\u002Fto\u002Fnfs","families\u002Fto\u002Fnfs",{"title":407,"path":408,"stem":409,"access":12},"postgres","\u002Ffamilies\u002Fto\u002Fpostgres","families\u002Fto\u002Fpostgres",{"title":411,"path":412,"stem":413,"access":12},"probe","\u002Ffamilies\u002Fto\u002Fprobe","families\u002Fto\u002Fprobe",{"title":263,"path":415,"stem":416,"access":12},"\u002Ffamilies\u002Fto\u002Frest","families\u002Fto\u002Frest",{"title":418,"path":419,"stem":420,"access":12},"smb","\u002Ffamilies\u002Fto\u002Fsmb","families\u002Fto\u002Fsmb",{"title":422,"path":423,"stem":424,"access":12},"sqlite","\u002Ffamilies\u002Fto\u002Fsqlite","families\u002Fto\u002Fsqlite",{"title":426,"path":427,"stem":428,"access":12},"ssh","\u002Ffamilies\u002Fto\u002Fssh","families\u002Fto\u002Fssh",{"title":430,"path":431,"stem":432,"access":12,"icon":433},"Store-locator descriptors","\u002Ffamilies\u002Fto\u002Fstore-locator","families\u002Fto\u002Fstore-locator","i-lucide-map-pin",{"title":435,"path":436,"stem":437,"access":12},"supabase","\u002Ffamilies\u002Fto\u002Fsupabase","families\u002Fto\u002Fsupabase",{"title":439,"path":440,"stem":441,"access":12},"turso","\u002Ffamilies\u002Fto\u002Fturso","families\u002Fto\u002Fturso",{"title":443,"path":444,"stem":445,"access":12},"webdav","\u002Ffamilies\u002Fto\u002Fwebdav","families\u002Fto\u002Fwebdav",{"title":447,"path":448,"stem":449,"children":450},"Faq","\u002Ffaq","faq",[451,454,458,462,466,470],{"title":10,"path":448,"stem":452,"access":12,"icon":453},"faq\u002Findex","i-lucide-circle-help",{"title":455,"path":456,"stem":457,"access":12},"Where can noy-db run?","\u002Ffaq\u002Fwhere-can-noy-db-run","faq\u002F1.where-can-noy-db-run",{"title":459,"path":460,"stem":461,"access":12},"Native mobile & PWA","\u002Ffaq\u002Fmobile-and-pwa","faq\u002F2.mobile-and-pwa",{"title":463,"path":464,"stem":465,"access":12},"Threat model","\u002Ffaq\u002Fthreat-model","faq\u002F3.threat-model",{"title":467,"path":468,"stem":469,"access":12},"Community & ecosystem","\u002Ffaq\u002Fcommunity-and-ecosystem","faq\u002F4.community-and-ecosystem",{"title":471,"path":472,"stem":473,"access":12},"Licensing","\u002Ffaq\u002Flicensing","faq\u002F5.licensing",{"title":475,"path":476,"stem":477,"children":478},"Glossary","\u002Fglossary","glossary",[479,482,486,490,494],{"title":10,"path":476,"stem":480,"access":12,"icon":481},"glossary\u002Findex","i-lucide-book-a",{"title":483,"path":484,"stem":485,"access":12},"Core vocabulary","\u002Fglossary\u002Fcore-vocabulary","glossary\u002Fcore-vocabulary",{"title":487,"path":488,"stem":489,"access":12},"Deletion vocabulary","\u002Fglossary\u002Fdeletion","glossary\u002Fdeletion",{"title":491,"path":492,"stem":493,"access":12},"Satellite collection vocabulary","\u002Fglossary\u002Fsatellite-collections","glossary\u002Fsatellite-collections",{"title":495,"path":496,"stem":497,"access":12},"Schema migration vocabulary","\u002Fglossary\u002Fschema-migration","glossary\u002Fschema-migration",{"title":499,"path":500,"stem":501,"children":502},"Recipes","\u002Frecipes","recipes",[503,506,510,514,518,522,526,530,534,538,542,546,550,554,558,562,567,571,575,580,584,588,592],{"title":10,"path":500,"stem":504,"access":12,"icon":505},"recipes\u002Findex","i-lucide-play",{"title":507,"path":508,"stem":509,"access":12},"Accounting app","\u002Frecipes\u002Faccounting-app","recipes\u002Faccounting-app",{"title":511,"path":512,"stem":513,"access":12},"Analytics app","\u002Frecipes\u002Fanalytics-app","recipes\u002Fanalytics-app",{"title":515,"path":516,"stem":517,"access":12},"Attestation verifier","\u002Frecipes\u002Fattestation-verifier","recipes\u002Fattestation-verifier",{"title":519,"path":520,"stem":521,"access":12},"AWS-KMS attestation","\u002Frecipes\u002Faws-kms-pdf-attestation","recipes\u002Faws-kms-pdf-attestation",{"title":523,"path":524,"stem":525,"access":12},"Browser durability","\u002Frecipes\u002Fbrowser-durability","recipes\u002Fbrowser-durability",{"title":527,"path":528,"stem":529,"access":12},"Production cloud store","\u002Frecipes\u002Fcloud-store","recipes\u002Fcloud-store",{"title":531,"path":532,"stem":533,"access":12},"Compose your own setup","\u002Frecipes\u002Fcompose-your-own","recipes\u002Fcompose-your-own",{"title":535,"path":536,"stem":537,"access":12},"Confidential HR records","\u002Frecipes\u002Fconfidential-hr","recipes\u002Fconfidential-hr",{"title":539,"path":540,"stem":541,"access":12},"Composing an echo secret","\u002Frecipes\u002Fecho-secret-enrollment","recipes\u002Fecho-secret-enrollment",{"title":543,"path":544,"stem":545,"access":12},"Email archive","\u002Frecipes\u002Femail-archive","recipes\u002Femail-archive",{"title":547,"path":548,"stem":549,"access":12},"Email archive — threads & revisions","\u002Frecipes\u002Femail-archive-threads-revisions","recipes\u002Femail-archive-threads-revisions",{"title":551,"path":552,"stem":553,"access":12},"Export & portability","\u002Frecipes\u002Fexport-portability","recipes\u002Fexport-portability",{"title":555,"path":556,"stem":557,"access":12},"Passwordless OIDC (AWS Cognito)","\u002Frecipes\u002Fpasswordless-oidc","recipes\u002Fpasswordless-oidc",{"title":559,"path":560,"stem":561,"access":12},"Personal notebook","\u002Frecipes\u002Fpersonal-notebook","recipes\u002Fpersonal-notebook",{"title":563,"path":564,"stem":565,"access":12,"icon":566},"Playgrounds","\u002Frecipes\u002Fplaygrounds","recipes\u002Fplaygrounds","i-lucide-gamepad-2",{"title":568,"path":569,"stem":570,"access":12},"React invoice app","\u002Frecipes\u002Freact-invoices","recipes\u002Freact-invoices",{"title":572,"path":573,"stem":574,"access":12},"Collaborative app","\u002Frecipes\u002Frealtime-crdt-app","recipes\u002Frealtime-crdt-app",{"title":576,"path":577,"stem":578,"access":12,"icon":579},"Run the showcases","\u002Frecipes\u002Frun-the-showcases","recipes\u002Frun-the-showcases","i-lucide-flask-conical",{"title":581,"path":582,"stem":583,"access":12},"Search & RAG","\u002Frecipes\u002Fsearch-rag","recipes\u002Fsearch-rag",{"title":585,"path":586,"stem":587,"access":12},"Team vault topology","\u002Frecipes\u002Fteam-vault-topology","recipes\u002Fteam-vault-topology",{"title":589,"path":590,"stem":591,"access":12},"Unlock ceremonies","\u002Frecipes\u002Funlock-ceremonies","recipes\u002Funlock-ceremonies",{"title":593,"path":594,"stem":595,"access":12},"User preferences","\u002Frecipes\u002Fuser-preferences","recipes\u002Fuser-preferences",{"title":597,"path":598,"stem":599,"children":600},"Services","\u002Fservices","services",[601,604,608,612,616,620,624,628,632,636,640,644,648,652,656,660,664,668,672,676,680,684,688,692,696,700,704,710,714,718,722,726,730,734,738,742,746,750,755,759,763,767,771,775,779,783,787,791,795,799,803,807,811,815,819,823,827,831,835,839,843,847,851,855,859,863,867,871,875,879,883,887,891,895,899],{"title":10,"path":598,"stem":602,"access":12,"icon":603},"services\u002Findex","i-lucide-layers",{"title":605,"path":606,"stem":607,"access":12},"archive","\u002Fservices\u002Farchive","services\u002Farchive",{"title":609,"path":610,"stem":611,"access":12},"attestation","\u002Fservices\u002Fattestation","services\u002Fattestation",{"title":613,"path":614,"stem":615,"access":12},"auth-introspection","\u002Fservices\u002Fauth-introspection","services\u002Fauth-introspection",{"title":617,"path":618,"stem":619,"access":12},"auth-landscape","\u002Fservices\u002Fauth-landscape","services\u002Fauth-landscape",{"title":621,"path":622,"stem":623,"access":12},"blobs","\u002Fservices\u002Fblobs","services\u002Fblobs",{"title":625,"path":626,"stem":627,"access":12},"broker","\u002Fservices\u002Fbroker","services\u002Fbroker",{"title":629,"path":630,"stem":631,"access":12},"bundle","\u002Fservices\u002Fbundle","services\u002Fbundle",{"title":633,"path":634,"stem":635,"access":12},"classified","\u002Fservices\u002Fclassified","services\u002Fclassified",{"title":637,"path":638,"stem":639,"access":12},"computed","\u002Fservices\u002Fcomputed","services\u002Fcomputed",{"title":641,"path":642,"stem":643,"access":12},"consent","\u002Fservices\u002Fconsent","services\u002Fconsent",{"title":645,"path":646,"stem":647,"access":12},"cover","\u002Fservices\u002Fcover","services\u002Fcover",{"title":649,"path":650,"stem":651,"access":12},"coverage","\u002Fservices\u002Fcoverage","services\u002Fcoverage",{"title":653,"path":654,"stem":655,"access":12},"crdt","\u002Fservices\u002Fcrdt","services\u002Fcrdt",{"title":657,"path":658,"stem":659,"access":12},"cross-join","\u002Fservices\u002Fcross-join","services\u002Fcross-join",{"title":661,"path":662,"stem":663,"access":12},"custody","\u002Fservices\u002Fcustody","services\u002Fcustody",{"title":665,"path":666,"stem":667,"access":12},"derivations","\u002Fservices\u002Fderivations","services\u002Fderivations",{"title":669,"path":670,"stem":671,"access":12},"directory","\u002Fservices\u002Fdirectory","services\u002Fdirectory",{"title":673,"path":674,"stem":675,"access":12},"search — AI","\u002Fservices\u002Fembeddings","services\u002Fembeddings",{"title":677,"path":678,"stem":679,"access":12},"Field metadata","\u002Fservices\u002Ffield-metadata","services\u002Ffield-metadata",{"title":681,"path":682,"stem":683,"access":12},"Foreign refs","\u002Fservices\u002Fforeign-refs","services\u002Fforeign-refs",{"title":685,"path":686,"stem":687,"access":12},"forget","\u002Fservices\u002Fforget","services\u002Fforget",{"title":689,"path":690,"stem":691,"access":12},"governance","\u002Fservices\u002Fgovernance","services\u002Fgovernance",{"title":693,"path":694,"stem":695,"access":12},"guards","\u002Fservices\u002Fguards","services\u002Fguards",{"title":697,"path":698,"stem":699,"access":12},"history","\u002Fservices\u002Fhistory","services\u002Fhistory",{"title":701,"path":702,"stem":703,"access":12},"i18n","\u002Fservices\u002Fi18n","services\u002Fi18n",{"title":705,"path":706,"stem":707,"children":708,"access":12},"indexing","\u002Fservices\u002Findexing","services\u002Findexing",[709],{"title":705,"path":706,"stem":707,"access":12},{"title":711,"path":712,"stem":713,"access":12},"introspection","\u002Fservices\u002Fintrospection","services\u002Fintrospection",{"title":715,"path":716,"stem":717,"access":12},"joins","\u002Fservices\u002Fjoins","services\u002Fjoins",{"title":719,"path":720,"stem":721,"access":12},"lazy","\u002Fservices\u002Flazy","services\u002Flazy",{"title":723,"path":724,"stem":725,"access":12},"links","\u002Fservices\u002Flinks","services\u002Flinks",{"title":727,"path":728,"stem":729,"access":12},"live","\u002Fservices\u002Flive","services\u002Flive",{"title":731,"path":732,"stem":733,"access":12},"lookup","\u002Fservices\u002Flookup","services\u002Flookup",{"title":735,"path":736,"stem":737,"access":12},"manifest","\u002Fservices\u002Fmanifest","services\u002Fmanifest",{"title":739,"path":740,"stem":741,"access":12},"materialized-views","\u002Fservices\u002Fmaterialized-views","services\u002Fmaterialized-views",{"title":743,"path":744,"stem":745,"access":12},"Metadata ladder","\u002Fservices\u002Fmetadata-ladder","services\u002Fmetadata-ladder",{"title":747,"path":748,"stem":749,"access":12},"Metadata riders","\u002Fservices\u002Fmetadata-riders","services\u002Fmetadata-riders",{"title":751,"path":752,"stem":753,"access":12,"badge":754},"metrics","\u002Fservices\u002Fmetrics","services\u002Fmetrics","Planned",{"title":756,"path":757,"stem":758,"access":12,"badge":754},"migrations","\u002Fservices\u002Fmigrations","services\u002Fmigrations",{"title":760,"path":761,"stem":762,"access":12},"money","\u002Fservices\u002Fmoney","services\u002Fmoney",{"title":764,"path":765,"stem":766,"access":12},"numbering","\u002Fservices\u002Fnumbering","services\u002Fnumbering",{"title":768,"path":769,"stem":770,"access":12},"overlay-views","\u002Fservices\u002Foverlay-views","services\u002Foverlay-views",{"title":772,"path":773,"stem":774,"access":12,"badge":754},"partitioning","\u002Fservices\u002Fpartitioning","services\u002Fpartitioning",{"title":776,"path":777,"stem":778,"access":12},"periods","\u002Fservices\u002Fperiods","services\u002Fperiods",{"title":780,"path":781,"stem":782,"access":12},"persisted-schemas","\u002Fservices\u002Fpersisted-schemas","services\u002Fpersisted-schemas",{"title":784,"path":785,"stem":786,"access":12},"plaintext-bypass","\u002Fservices\u002Fplaintext-bypass","services\u002Fplaintext-bypass",{"title":788,"path":789,"stem":790,"access":12},"pod-redirect","\u002Fservices\u002Fpod-redirect","services\u002Fpod-redirect",{"title":792,"path":793,"stem":794,"access":12},"pod-signature","\u002Fservices\u002Fpod-signature","services\u002Fpod-signature",{"title":796,"path":797,"stem":798,"access":12},"policy","\u002Fservices\u002Fpolicy","services\u002Fpolicy",{"title":800,"path":801,"stem":802,"access":12},"portability","\u002Fservices\u002Fportability","services\u002Fportability",{"title":804,"path":805,"stem":806,"access":12},"reduce","\u002Fservices\u002Freduce","services\u002Freduce",{"title":808,"path":809,"stem":810,"access":12},"routing","\u002Fservices\u002Frouting","services\u002Frouting",{"title":812,"path":813,"stem":814,"access":12},"satellites","\u002Fservices\u002Fsatellites","services\u002Fsatellites",{"title":816,"path":817,"stem":818,"access":12},"schema-identifiers","\u002Fservices\u002Fschema-identifiers","services\u002Fschema-identifiers",{"title":820,"path":821,"stem":822,"access":12},"schema-update","\u002Fservices\u002Fschema-update","services\u002Fschema-update",{"title":824,"path":825,"stem":826,"access":12},"sealed-record","\u002Fservices\u002Fsealed-record","services\u002Fsealed-record",{"title":828,"path":829,"stem":830,"access":12},"sealing provider id","\u002Fservices\u002Fsealing-pid-stability","services\u002Fsealing-pid-stability",{"title":832,"path":833,"stem":834,"access":12},"search — full-text","\u002Fservices\u002Fsearch","services\u002Fsearch",{"title":836,"path":837,"stem":838,"access":12},"sequence","\u002Fservices\u002Fsequence","services\u002Fsequence",{"title":840,"path":841,"stem":842,"access":12},"session","\u002Fservices\u002Fsession","services\u002Fsession",{"title":844,"path":845,"stem":846,"access":12},"session-tiers","\u002Fservices\u002Fsession-tiers","services\u002Fsession-tiers",{"title":848,"path":849,"stem":850,"access":12},"shadow","\u002Fservices\u002Fshadow","services\u002Fshadow",{"title":852,"path":853,"stem":854,"access":12},"share-link","\u002Fservices\u002Fshare-link","services\u002Fshare-link",{"title":856,"path":857,"stem":858,"access":12},"snapshots","\u002Fservices\u002Fsnapshots","services\u002Fsnapshots",{"title":860,"path":861,"stem":862,"access":12},"store capabilities","\u002Fservices\u002Fstorage-capability-matrix","services\u002Fstorage-capability-matrix",{"title":864,"path":865,"stem":866,"access":12},"sync","\u002Fservices\u002Fsync","services\u002Fsync",{"title":868,"path":869,"stem":870,"access":12},"team","\u002Fservices\u002Fteam","services\u002Fteam",{"title":872,"path":873,"stem":874,"access":12},"tiers","\u002Fservices\u002Ftiers","services\u002Ftiers",{"title":876,"path":877,"stem":878,"access":12},"transactions","\u002Fservices\u002Ftransactions","services\u002Ftransactions",{"title":880,"path":881,"stem":882,"access":12},"partitions","\u002Fservices\u002Ftransferable-partitions","services\u002Ftransferable-partitions",{"title":884,"path":885,"stem":886,"access":12},"user-envelope","\u002Fservices\u002Fuser-envelope","services\u002Fuser-envelope",{"title":888,"path":889,"stem":890,"access":12,"badge":754},"validation","\u002Fservices\u002Fvalidation","services\u002Fvalidation",{"title":892,"path":893,"stem":894,"access":12},"vault-head","\u002Fservices\u002Fvault-head","services\u002Fvault-head",{"title":896,"path":897,"stem":898,"access":12},"via","\u002Fservices\u002Fvia","services\u002Fvia",{"title":900,"path":901,"stem":902,"access":12},"withdrawal","\u002Fservices\u002Fwithdrawal","services\u002Fwithdrawal",{"title":904,"path":905,"stem":906,"children":907},"Start","\u002Fstart","start",[908,911,915,919,923],{"title":10,"path":905,"stem":909,"access":12,"icon":910},"start\u002Findex","i-lucide-flag",{"title":912,"path":913,"stem":914,"access":12},"Install","\u002Fstart\u002Finstall","start\u002F1.install",{"title":916,"path":917,"stem":918,"access":12},"Your first vault","\u002Fstart\u002Ffirst-vault","start\u002F2.first-vault",{"title":920,"path":921,"stem":922,"access":12},"Your first service","\u002Fstart\u002Ffirst-service","start\u002F3.first-service",{"title":924,"path":925,"stem":926,"access":12},"See the ciphertext","\u002Fstart\u002Fsee-the-ciphertext","start\u002F4.see-the-ciphertext",{"id":928,"title":629,"access":12,"apiToc":929,"body":930,"category":3436,"description":3437,"extension":3438,"meta":3439,"navigation":3436,"nest":3440,"path":630,"seo":3441,"sinceVersion":3436,"status":3442,"stem":631,"subtitle":3436,"tier":3443,"tocExternal":3436,"__hash__":3444},"docs\u002Fservices\u002Fbundle.md",false,{"type":931,"value":932,"toc":3410},"minimark",[933,936,940,945,972,992,996,1016,1020,1027,1080,1112,1116,1121,1428,1518,1617,1624,1766,1769,1773,1788,2017,2041,2056,2060,2064,2231,2235,2278,2283,2554,2561,2567,2734,2740,2804,2810,2884,2889,2895,3038,3045,3049,3096,3107,3121,3125,3128,3166,3170,3193,3232,3236,3239,3243,3276,3280,3339,3343,3406],[934,935,629],"h1",{"id":629},[937,938],"service-meta",{":rows":939},"[{\"label\":\"Subpath\",\"value\":\"`@noy-db\u002Fhub\u002Fpod`. The old `@noy-db\u002Fhub\u002Fbundle` alias is **gone from every published version of hub since 0.4.0-pre** — it was last present in 0.3.0, so an import of it fails on both rails today.\"},{\"label\":\"Factory\",\"value\":\"none — direct named imports\"},{\"label\":\"Cluster\",\"value\":\"F — Snapshot & Portability\"},{\"label\":\"LOC cost\",\"value\":\"~846 (off-bundle when not opted in)\"}]",[941,942,944],"h2",{"id":943},"what-it-does","What it does",[946,947,948,949,953,954,958,959,962,963,966,967,971],"p",{},"This service writes and reads ",[950,951,952],"code",{},".noydb"," files — a single-file, portable container holding a complete (or filtered) backup of a ",[955,956,957],"strong",{},"vault",", noy-db's unit of encrypted storage. ",[950,960,961],{},"vault.dump()"," serialises the vault to a JSON string — records still encrypted, plus the keyring (the wrapped decryption keys) and the audit ledger — and ",[950,964,965],{},"writePod()"," wraps that JSON in a compact binary container that is safe to park on untrusted storage (S3, Google Drive, a USB stick, an email attachment), because every record inside is already AES-256-GCM ciphertext. See ",[968,969,21],"a",{"href":970},"..\u002Fcore\u002Fnoydb\u002Fenclave"," for the key model.",[946,973,974,975,978,979,982,983,987,988,991],{},"The container layout is: a 10-byte fixed prefix (",[950,976,977],{},"NDB1"," magic, flags, compression algorithm, header length), then an ",[955,980,981],{},"unencrypted JSON header",", then the compressed body (brotli where the runtime supports it, gzip otherwise). The header is ",[984,985,986],"em",{},"minimum-disclosure"," — it carries only what a cloud-listing UI needs before downloading: the format version, the vault's ",[955,989,990],{},"handle"," (an opaque 26-character ULID identifier, generated once per vault and stable across re-exports), the body's byte count, and the body's SHA-256. The parser rejects any header key outside that allowlist, so nothing about the tenant, the exporter, or export timing leaks through cloud-storage metadata indexing.",[941,993,995],{"id":994},"when-you-need-it","When you need it",[997,998,999,1003,1006,1009],"ul",{},[1000,1001,1002],"li",{},"Backups to S3 \u002F R2 \u002F Google Drive \u002F Dropbox where you want a single file per vault",[1000,1004,1005],{},"Offline transfer (USB, email) of a complete vault snapshot",[1000,1007,1008],{},"Handing a re-keyed slice of a vault to a recipient with their own secret",[1000,1010,1011,1012,1015],{},"Bundle-as-store: backends that prefer whole-file I\u002FO over per-record operations (",[950,1013,1014],{},"wrapPodStore",")",[941,1017,1019],{"id":1018},"opt-in","Opt in",[946,1021,1022,1023,1026],{},"The service does not use a ",[950,1024,1025],{},"with*()"," strategy factory — it tree-shakes naturally via direct named imports:",[1028,1029,1034],"pre",{"className":1030,"code":1031,"language":1032,"meta":1033,"style":1033},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { writePod, readPod, readPodHeader } from '@noy-db\u002Fhub\u002Fpod'\n","ts","",[950,1035,1036],{"__ignoreMap":1033},[1037,1038,1041,1045,1049,1053,1056,1059,1061,1064,1067,1070,1073,1077],"span",{"class":1039,"line":1040},"line",1,[1037,1042,1044],{"class":1043},"s7zQu","import",[1037,1046,1048],{"class":1047},"sMK4o"," {",[1037,1050,1052],{"class":1051},"sTEyZ"," writePod",[1037,1054,1055],{"class":1047},",",[1037,1057,1058],{"class":1051}," readPod",[1037,1060,1055],{"class":1047},[1037,1062,1063],{"class":1051}," readPodHeader",[1037,1065,1066],{"class":1047}," }",[1037,1068,1069],{"class":1043}," from",[1037,1071,1072],{"class":1047}," '",[1037,1074,1076],{"class":1075},"sfazB","@noy-db\u002Fhub\u002Fpod",[1037,1078,1079],{"class":1047},"'\n",[946,1081,1082,1083,1086,1087,1086,1090,1093,1094,1097,1098,1086,1100,1086,1102,1104,1105,1107,1108,1111],{},"The former names — ",[950,1084,1085],{},"writePod",", ",[950,1088,1089],{},"readPod",[950,1091,1092],{},"readPodHeader",", and the ",[950,1095,1096],{},"WritePodOptions"," type — remain exported as deprecated aliases of ",[950,1099,1085],{},[950,1101,1089],{},[950,1103,1092],{},", and ",[950,1106,1096],{},". New code should use the ",[950,1109,1110],{},"Pod"," names.",[941,1113,1115],{"id":1114},"usage","Usage",[1117,1118,1120],"h3",{"id":1119},"backup-and-restore-round-trip","Backup and restore round-trip",[1028,1122,1124],{"className":1030,"code":1123,"language":1032,"meta":1033,"style":1033},"import { createNoydb } from '@noy-db\u002Fhub'\nimport { toMemory } from '@noy-db\u002Fto-memory'\nimport { writePod, readPod, readPodHeader } from '@noy-db\u002Fhub\u002Fpod'\n\nconst db = await createNoydb({ store: toMemory(), user: 'alice', secret: 'a-strong-secret' })\nconst vault = await db.openVault('acme')\nawait vault.collection('invoices').put('inv-1', { id: 'inv-1', amount: 100 })\n\n\u002F\u002F 1. Write the container — one Uint8Array, save it anywhere\nconst bytes = await writePod(vault)\n\n\u002F\u002F 2. Inspect the header without decompressing the body (cheap, synchronous)\nconst header = readPodHeader(bytes)\n",[950,1125,1126,1146,1167,1194,1201,1272,1304,1373,1378,1385,1402,1407,1413],{"__ignoreMap":1033},[1037,1127,1128,1130,1132,1135,1137,1139,1141,1144],{"class":1039,"line":1040},[1037,1129,1044],{"class":1043},[1037,1131,1048],{"class":1047},[1037,1133,1134],{"class":1051}," createNoydb",[1037,1136,1066],{"class":1047},[1037,1138,1069],{"class":1043},[1037,1140,1072],{"class":1047},[1037,1142,1143],{"class":1075},"@noy-db\u002Fhub",[1037,1145,1079],{"class":1047},[1037,1147,1149,1151,1153,1156,1158,1160,1162,1165],{"class":1039,"line":1148},2,[1037,1150,1044],{"class":1043},[1037,1152,1048],{"class":1047},[1037,1154,1155],{"class":1051}," toMemory",[1037,1157,1066],{"class":1047},[1037,1159,1069],{"class":1043},[1037,1161,1072],{"class":1047},[1037,1163,1164],{"class":1075},"@noy-db\u002Fto-memory",[1037,1166,1079],{"class":1047},[1037,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192],{"class":1039,"line":1169},3,[1037,1171,1044],{"class":1043},[1037,1173,1048],{"class":1047},[1037,1175,1052],{"class":1051},[1037,1177,1055],{"class":1047},[1037,1179,1058],{"class":1051},[1037,1181,1055],{"class":1047},[1037,1183,1063],{"class":1051},[1037,1185,1066],{"class":1047},[1037,1187,1069],{"class":1043},[1037,1189,1072],{"class":1047},[1037,1191,1076],{"class":1075},[1037,1193,1079],{"class":1047},[1037,1195,1197],{"class":1039,"line":1196},4,[1037,1198,1200],{"emptyLinePlaceholder":1199},true,"\n",[1037,1202,1204,1208,1211,1214,1217,1220,1223,1226,1230,1233,1235,1238,1240,1243,1245,1247,1250,1253,1255,1258,1260,1262,1265,1267,1269],{"class":1039,"line":1203},5,[1037,1205,1207],{"class":1206},"spNyl","const",[1037,1209,1210],{"class":1051}," db ",[1037,1212,1213],{"class":1047},"=",[1037,1215,1216],{"class":1043}," await",[1037,1218,1134],{"class":1219},"s2Zo4",[1037,1221,1222],{"class":1051},"(",[1037,1224,1225],{"class":1047},"{",[1037,1227,1229],{"class":1228},"swJcz"," store",[1037,1231,1232],{"class":1047},":",[1037,1234,1155],{"class":1219},[1037,1236,1237],{"class":1051},"()",[1037,1239,1055],{"class":1047},[1037,1241,1242],{"class":1228}," user",[1037,1244,1232],{"class":1047},[1037,1246,1072],{"class":1047},[1037,1248,1249],{"class":1075},"alice",[1037,1251,1252],{"class":1047},"'",[1037,1254,1055],{"class":1047},[1037,1256,1257],{"class":1228}," secret",[1037,1259,1232],{"class":1047},[1037,1261,1072],{"class":1047},[1037,1263,1264],{"class":1075},"a-strong-secret",[1037,1266,1252],{"class":1047},[1037,1268,1066],{"class":1047},[1037,1270,1271],{"class":1051},")\n",[1037,1273,1275,1277,1280,1282,1284,1287,1290,1293,1295,1297,1300,1302],{"class":1039,"line":1274},6,[1037,1276,1207],{"class":1206},[1037,1278,1279],{"class":1051}," vault ",[1037,1281,1213],{"class":1047},[1037,1283,1216],{"class":1043},[1037,1285,1286],{"class":1051}," db",[1037,1288,1289],{"class":1047},".",[1037,1291,1292],{"class":1219},"openVault",[1037,1294,1222],{"class":1051},[1037,1296,1252],{"class":1047},[1037,1298,1299],{"class":1075},"acme",[1037,1301,1252],{"class":1047},[1037,1303,1271],{"class":1051},[1037,1305,1307,1310,1313,1315,1318,1320,1322,1325,1327,1329,1331,1334,1336,1338,1341,1343,1345,1347,1350,1352,1354,1356,1358,1360,1363,1365,1369,1371],{"class":1039,"line":1306},7,[1037,1308,1309],{"class":1043},"await",[1037,1311,1312],{"class":1051}," vault",[1037,1314,1289],{"class":1047},[1037,1316,1317],{"class":1219},"collection",[1037,1319,1222],{"class":1051},[1037,1321,1252],{"class":1047},[1037,1323,1324],{"class":1075},"invoices",[1037,1326,1252],{"class":1047},[1037,1328,1015],{"class":1051},[1037,1330,1289],{"class":1047},[1037,1332,1333],{"class":1219},"put",[1037,1335,1222],{"class":1051},[1037,1337,1252],{"class":1047},[1037,1339,1340],{"class":1075},"inv-1",[1037,1342,1252],{"class":1047},[1037,1344,1055],{"class":1047},[1037,1346,1048],{"class":1047},[1037,1348,1349],{"class":1228}," id",[1037,1351,1232],{"class":1047},[1037,1353,1072],{"class":1047},[1037,1355,1340],{"class":1075},[1037,1357,1252],{"class":1047},[1037,1359,1055],{"class":1047},[1037,1361,1362],{"class":1228}," amount",[1037,1364,1232],{"class":1047},[1037,1366,1368],{"class":1367},"sbssI"," 100",[1037,1370,1066],{"class":1047},[1037,1372,1271],{"class":1051},[1037,1374,1376],{"class":1039,"line":1375},8,[1037,1377,1200],{"emptyLinePlaceholder":1199},[1037,1379,1381],{"class":1039,"line":1380},9,[1037,1382,1384],{"class":1383},"sHwdD","\u002F\u002F 1. Write the container — one Uint8Array, save it anywhere\n",[1037,1386,1388,1390,1393,1395,1397,1399],{"class":1039,"line":1387},10,[1037,1389,1207],{"class":1206},[1037,1391,1392],{"class":1051}," bytes ",[1037,1394,1213],{"class":1047},[1037,1396,1216],{"class":1043},[1037,1398,1052],{"class":1219},[1037,1400,1401],{"class":1051},"(vault)\n",[1037,1403,1405],{"class":1039,"line":1404},11,[1037,1406,1200],{"emptyLinePlaceholder":1199},[1037,1408,1410],{"class":1039,"line":1409},12,[1037,1411,1412],{"class":1383},"\u002F\u002F 2. Inspect the header without decompressing the body (cheap, synchronous)\n",[1037,1414,1416,1418,1421,1423,1425],{"class":1039,"line":1415},13,[1037,1417,1207],{"class":1206},[1037,1419,1420],{"class":1051}," header ",[1037,1422,1213],{"class":1047},[1037,1424,1063],{"class":1219},[1037,1426,1427],{"class":1051},"(bytes)\n",[1028,1429,1432],{"className":1430,"code":1431,"language":141,"meta":1033,"style":1033},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"formatVersion\": 1,\n  \"handle\": \"01J1QDX9Y3Z4A5B6C7D8E9FGHJ\",\n  \"bodyBytes\": 1874,\n  \"bodySha256\": \"9f2ce1b4a7d8036c5e12f9a0b3d47c68e51a2f90c4b7d3e6a8f1049b2c5d7e3a\"\n}\n",[950,1433,1434,1439,1458,1478,1494,1513],{"__ignoreMap":1033},[1037,1435,1436],{"class":1039,"line":1040},[1037,1437,1438],{"class":1047},"{\n",[1037,1440,1441,1444,1447,1450,1452,1455],{"class":1039,"line":1148},[1037,1442,1443],{"class":1047},"  \"",[1037,1445,1446],{"class":1206},"formatVersion",[1037,1448,1449],{"class":1047},"\"",[1037,1451,1232],{"class":1047},[1037,1453,1454],{"class":1367}," 1",[1037,1456,1457],{"class":1047},",\n",[1037,1459,1460,1462,1464,1466,1468,1471,1474,1476],{"class":1039,"line":1169},[1037,1461,1443],{"class":1047},[1037,1463,990],{"class":1206},[1037,1465,1449],{"class":1047},[1037,1467,1232],{"class":1047},[1037,1469,1470],{"class":1047}," \"",[1037,1472,1473],{"class":1075},"01J1QDX9Y3Z4A5B6C7D8E9FGHJ",[1037,1475,1449],{"class":1047},[1037,1477,1457],{"class":1047},[1037,1479,1480,1482,1485,1487,1489,1492],{"class":1039,"line":1196},[1037,1481,1443],{"class":1047},[1037,1483,1484],{"class":1206},"bodyBytes",[1037,1486,1449],{"class":1047},[1037,1488,1232],{"class":1047},[1037,1490,1491],{"class":1367}," 1874",[1037,1493,1457],{"class":1047},[1037,1495,1496,1498,1501,1503,1505,1507,1510],{"class":1039,"line":1203},[1037,1497,1443],{"class":1047},[1037,1499,1500],{"class":1206},"bodySha256",[1037,1502,1449],{"class":1047},[1037,1504,1232],{"class":1047},[1037,1506,1470],{"class":1047},[1037,1508,1509],{"class":1075},"9f2ce1b4a7d8036c5e12f9a0b3d47c68e51a2f90c4b7d3e6a8f1049b2c5d7e3a",[1037,1511,1512],{"class":1047},"\"\n",[1037,1514,1515],{"class":1039,"line":1274},[1037,1516,1517],{"class":1047},"}\n",[1028,1519,1521],{"className":1030,"code":1520,"language":1032,"meta":1033,"style":1033},"\u002F\u002F 3. Restore — readPod validates the magic, the header, and the body's\n\u002F\u002F    integrity hash, then decompresses. It takes NO secret: it is a\n\u002F\u002F    pure format layer, and the records inside dumpJson stay ciphertext.\nconst { dumpJson } = await readPod(bytes)\nawait vault.load(dumpJson)\n\nawait vault.collection('invoices').get('inv-1')\n\u002F\u002F → { id: 'inv-1', amount: 100 }\n",[950,1522,1523,1528,1533,1538,1559,1573,1577,1612],{"__ignoreMap":1033},[1037,1524,1525],{"class":1039,"line":1040},[1037,1526,1527],{"class":1383},"\u002F\u002F 3. Restore — readPod validates the magic, the header, and the body's\n",[1037,1529,1530],{"class":1039,"line":1148},[1037,1531,1532],{"class":1383},"\u002F\u002F    integrity hash, then decompresses. It takes NO secret: it is a\n",[1037,1534,1535],{"class":1039,"line":1169},[1037,1536,1537],{"class":1383},"\u002F\u002F    pure format layer, and the records inside dumpJson stay ciphertext.\n",[1037,1539,1540,1542,1544,1547,1550,1553,1555,1557],{"class":1039,"line":1196},[1037,1541,1207],{"class":1206},[1037,1543,1048],{"class":1047},[1037,1545,1546],{"class":1051}," dumpJson ",[1037,1548,1549],{"class":1047},"}",[1037,1551,1552],{"class":1047}," =",[1037,1554,1216],{"class":1043},[1037,1556,1058],{"class":1219},[1037,1558,1427],{"class":1051},[1037,1560,1561,1563,1565,1567,1570],{"class":1039,"line":1203},[1037,1562,1309],{"class":1043},[1037,1564,1312],{"class":1051},[1037,1566,1289],{"class":1047},[1037,1568,1569],{"class":1219},"load",[1037,1571,1572],{"class":1051},"(dumpJson)\n",[1037,1574,1575],{"class":1039,"line":1274},[1037,1576,1200],{"emptyLinePlaceholder":1199},[1037,1578,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1602,1604,1606,1608,1610],{"class":1039,"line":1306},[1037,1580,1309],{"class":1043},[1037,1582,1312],{"class":1051},[1037,1584,1289],{"class":1047},[1037,1586,1317],{"class":1219},[1037,1588,1222],{"class":1051},[1037,1590,1252],{"class":1047},[1037,1592,1324],{"class":1075},[1037,1594,1252],{"class":1047},[1037,1596,1015],{"class":1051},[1037,1598,1289],{"class":1047},[1037,1600,1601],{"class":1219},"get",[1037,1603,1222],{"class":1051},[1037,1605,1252],{"class":1047},[1037,1607,1340],{"class":1075},[1037,1609,1252],{"class":1047},[1037,1611,1271],{"class":1051},[1037,1613,1614],{"class":1039,"line":1375},[1037,1615,1616],{"class":1383},"\u002F\u002F → { id: 'inv-1', amount: 100 }\n",[946,1618,1619,1620,1623],{},"For local files, ",[950,1621,1622],{},"@noy-db\u002Fto-file"," ships two thin wrappers over the same primitives:",[1028,1625,1627],{"className":1030,"code":1626,"language":1032,"meta":1033,"style":1033},"import { savePod, loadPod } from '@noy-db\u002Fto-file'\n\nconst handle = await vault.getPodHandle()\nawait savePod(`.\u002Fbundles\u002F${handle}.noydb`, vault)  \u002F\u002F writePod + atomic writeFile\nconst result = await loadPod(`.\u002Fbundles\u002F${handle}.noydb`)  \u002F\u002F readFile + readPod\nresult.header\n\u002F\u002F → { formatVersion: 1, handle: '01J1QDX9Y3Z4A5B6C7D8E9FGHJ', bodyBytes: 1874, bodySha256: '9f2ce1b4a7d8036c5e12f9a0b3d47c68e51a2f90c4b7d3e6a8f1049b2c5d7e3a' }\n\u002F\u002F result.dumpJson is the same vault.dump() JSON ready for vault.load() — see PodReadResult below\n",[950,1628,1629,1653,1657,1678,1711,1746,1756,1761],{"__ignoreMap":1033},[1037,1630,1631,1633,1635,1638,1640,1643,1645,1647,1649,1651],{"class":1039,"line":1040},[1037,1632,1044],{"class":1043},[1037,1634,1048],{"class":1047},[1037,1636,1637],{"class":1051}," savePod",[1037,1639,1055],{"class":1047},[1037,1641,1642],{"class":1051}," loadPod",[1037,1644,1066],{"class":1047},[1037,1646,1069],{"class":1043},[1037,1648,1072],{"class":1047},[1037,1650,1622],{"class":1075},[1037,1652,1079],{"class":1047},[1037,1654,1655],{"class":1039,"line":1148},[1037,1656,1200],{"emptyLinePlaceholder":1199},[1037,1658,1659,1661,1664,1666,1668,1670,1672,1675],{"class":1039,"line":1169},[1037,1660,1207],{"class":1206},[1037,1662,1663],{"class":1051}," handle ",[1037,1665,1213],{"class":1047},[1037,1667,1216],{"class":1043},[1037,1669,1312],{"class":1051},[1037,1671,1289],{"class":1047},[1037,1673,1674],{"class":1219},"getPodHandle",[1037,1676,1677],{"class":1051},"()\n",[1037,1679,1680,1682,1684,1686,1689,1692,1695,1697,1699,1701,1703,1705,1708],{"class":1039,"line":1196},[1037,1681,1309],{"class":1043},[1037,1683,1637],{"class":1219},[1037,1685,1222],{"class":1051},[1037,1687,1688],{"class":1047},"`",[1037,1690,1691],{"class":1075},".\u002Fbundles\u002F",[1037,1693,1694],{"class":1047},"${",[1037,1696,990],{"class":1051},[1037,1698,1549],{"class":1047},[1037,1700,952],{"class":1075},[1037,1702,1688],{"class":1047},[1037,1704,1055],{"class":1047},[1037,1706,1707],{"class":1051}," vault)  ",[1037,1709,1710],{"class":1383},"\u002F\u002F writePod + atomic writeFile\n",[1037,1712,1713,1715,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1743],{"class":1039,"line":1203},[1037,1714,1207],{"class":1206},[1037,1716,1717],{"class":1051}," result ",[1037,1719,1213],{"class":1047},[1037,1721,1216],{"class":1043},[1037,1723,1642],{"class":1219},[1037,1725,1222],{"class":1051},[1037,1727,1688],{"class":1047},[1037,1729,1691],{"class":1075},[1037,1731,1694],{"class":1047},[1037,1733,990],{"class":1051},[1037,1735,1549],{"class":1047},[1037,1737,952],{"class":1075},[1037,1739,1688],{"class":1047},[1037,1741,1742],{"class":1051},")  ",[1037,1744,1745],{"class":1383},"\u002F\u002F readFile + readPod\n",[1037,1747,1748,1751,1753],{"class":1039,"line":1274},[1037,1749,1750],{"class":1051},"result",[1037,1752,1289],{"class":1047},[1037,1754,1755],{"class":1051},"header\n",[1037,1757,1758],{"class":1039,"line":1306},[1037,1759,1760],{"class":1383},"\u002F\u002F → { formatVersion: 1, handle: '01J1QDX9Y3Z4A5B6C7D8E9FGHJ', bodyBytes: 1874, bodySha256: '9f2ce1b4a7d8036c5e12f9a0b3d47c68e51a2f90c4b7d3e6a8f1049b2c5d7e3a' }\n",[1037,1762,1763],{"class":1039,"line":1375},[1037,1764,1765],{"class":1383},"\u002F\u002F result.dumpJson is the same vault.dump() JSON ready for vault.load() — see PodReadResult below\n",[946,1767,1768],{},"Naming files by the handle rather than the vault name avoids leaking metadata at the filesystem layer.",[1117,1770,1772],{"id":1771},"re-keyed-export-to-recipients","Re-keyed export to recipients",[946,1774,1775,1776,1779,1780,1783,1784,1787],{},"By default a bundle inherits the source vault's keyring — right for personal backup-and-restore. To hand a bundle to someone else, pass ",[950,1777,1778],{},"recipients"," (or the single-recipient ",[950,1781,1782],{},"exportSecret"," shorthand): the bundle's keyring map is ",[955,1785,1786],{},"replaced"," with one freshly derived slot per recipient, each sealed with that recipient's own secret. The source credentials never travel.",[1028,1789,1791],{"className":1030,"code":1790,"language":1032,"meta":1033,"style":1033},"const bytes = await writePod(vault, {\n  collections: ['invoices'],                    \u002F\u002F slice: only this collection\n  recipients: [\n    {\n      id: 'auditor',\n      secret: 'auditor-pw-2026',\n      role: 'viewer',\n      permissions: { invoices: 'ro' },\n      expiresAt: '2026-08-07T00:00:00Z',        \u002F\u002F slot refuses to unlock after this\n    },\n  ],\n})\n\nconst { dumpJson } = await readPod(bytes)\nObject.keys(JSON.parse(dumpJson).keyrings)\n\u002F\u002F → ['auditor']   — the source keyring is not in the bundle\n",[950,1792,1793,1813,1837,1847,1852,1868,1884,1900,1924,1943,1948,1955,1961,1965,1984,2011],{"__ignoreMap":1033},[1037,1794,1795,1797,1799,1801,1803,1805,1808,1810],{"class":1039,"line":1040},[1037,1796,1207],{"class":1206},[1037,1798,1392],{"class":1051},[1037,1800,1213],{"class":1047},[1037,1802,1216],{"class":1043},[1037,1804,1052],{"class":1219},[1037,1806,1807],{"class":1051},"(vault",[1037,1809,1055],{"class":1047},[1037,1811,1812],{"class":1047}," {\n",[1037,1814,1815,1818,1820,1823,1825,1827,1829,1832,1834],{"class":1039,"line":1148},[1037,1816,1817],{"class":1228},"  collections",[1037,1819,1232],{"class":1047},[1037,1821,1822],{"class":1051}," [",[1037,1824,1252],{"class":1047},[1037,1826,1324],{"class":1075},[1037,1828,1252],{"class":1047},[1037,1830,1831],{"class":1051},"]",[1037,1833,1055],{"class":1047},[1037,1835,1836],{"class":1383},"                    \u002F\u002F slice: only this collection\n",[1037,1838,1839,1842,1844],{"class":1039,"line":1169},[1037,1840,1841],{"class":1228},"  recipients",[1037,1843,1232],{"class":1047},[1037,1845,1846],{"class":1051}," [\n",[1037,1848,1849],{"class":1039,"line":1196},[1037,1850,1851],{"class":1047},"    {\n",[1037,1853,1854,1857,1859,1861,1864,1866],{"class":1039,"line":1203},[1037,1855,1856],{"class":1228},"      id",[1037,1858,1232],{"class":1047},[1037,1860,1072],{"class":1047},[1037,1862,1863],{"class":1075},"auditor",[1037,1865,1252],{"class":1047},[1037,1867,1457],{"class":1047},[1037,1869,1870,1873,1875,1877,1880,1882],{"class":1039,"line":1274},[1037,1871,1872],{"class":1228},"      secret",[1037,1874,1232],{"class":1047},[1037,1876,1072],{"class":1047},[1037,1878,1879],{"class":1075},"auditor-pw-2026",[1037,1881,1252],{"class":1047},[1037,1883,1457],{"class":1047},[1037,1885,1886,1889,1891,1893,1896,1898],{"class":1039,"line":1306},[1037,1887,1888],{"class":1228},"      role",[1037,1890,1232],{"class":1047},[1037,1892,1072],{"class":1047},[1037,1894,1895],{"class":1075},"viewer",[1037,1897,1252],{"class":1047},[1037,1899,1457],{"class":1047},[1037,1901,1902,1905,1907,1909,1912,1914,1916,1919,1921],{"class":1039,"line":1375},[1037,1903,1904],{"class":1228},"      permissions",[1037,1906,1232],{"class":1047},[1037,1908,1048],{"class":1047},[1037,1910,1911],{"class":1228}," invoices",[1037,1913,1232],{"class":1047},[1037,1915,1072],{"class":1047},[1037,1917,1918],{"class":1075},"ro",[1037,1920,1252],{"class":1047},[1037,1922,1923],{"class":1047}," },\n",[1037,1925,1926,1929,1931,1933,1936,1938,1940],{"class":1039,"line":1380},[1037,1927,1928],{"class":1228},"      expiresAt",[1037,1930,1232],{"class":1047},[1037,1932,1072],{"class":1047},[1037,1934,1935],{"class":1075},"2026-08-07T00:00:00Z",[1037,1937,1252],{"class":1047},[1037,1939,1055],{"class":1047},[1037,1941,1942],{"class":1383},"        \u002F\u002F slot refuses to unlock after this\n",[1037,1944,1945],{"class":1039,"line":1387},[1037,1946,1947],{"class":1047},"    },\n",[1037,1949,1950,1953],{"class":1039,"line":1404},[1037,1951,1952],{"class":1051},"  ]",[1037,1954,1457],{"class":1047},[1037,1956,1957,1959],{"class":1039,"line":1409},[1037,1958,1549],{"class":1047},[1037,1960,1271],{"class":1051},[1037,1962,1963],{"class":1039,"line":1415},[1037,1964,1200],{"emptyLinePlaceholder":1199},[1037,1966,1968,1970,1972,1974,1976,1978,1980,1982],{"class":1039,"line":1967},14,[1037,1969,1207],{"class":1206},[1037,1971,1048],{"class":1047},[1037,1973,1546],{"class":1051},[1037,1975,1549],{"class":1047},[1037,1977,1552],{"class":1047},[1037,1979,1216],{"class":1043},[1037,1981,1058],{"class":1219},[1037,1983,1427],{"class":1051},[1037,1985,1987,1990,1992,1995,1998,2000,2003,2006,2008],{"class":1039,"line":1986},15,[1037,1988,1989],{"class":1051},"Object",[1037,1991,1289],{"class":1047},[1037,1993,1994],{"class":1219},"keys",[1037,1996,1997],{"class":1051},"(JSON",[1037,1999,1289],{"class":1047},[1037,2001,2002],{"class":1219},"parse",[1037,2004,2005],{"class":1051},"(dumpJson)",[1037,2007,1289],{"class":1047},[1037,2009,2010],{"class":1051},"keyrings)\n",[1037,2012,2014],{"class":1039,"line":2013},16,[1037,2015,2016],{"class":1383},"\u002F\u002F → ['auditor']   — the source keyring is not in the bundle\n",[946,2018,2019,2022,2023,2025,2026,2029,2030,2033,2034,2037,2038,2040],{},[955,2020,2021],{},"A recipient secret must be at least 12 characters"," — ",[950,2024,1782],{}," and every string\n",[950,2027,2028],{},"recipients[].secret"," — with no opt-out, refused with ",[950,2031,2032],{},"WeakSecretError"," since hub ",[950,2035,2036],{},"0.10.0-pre.2",". Any\ncharacters qualify: a passphrase, a generated token, a password-manager string. It is deliberately\nnot the owner-phrase rule, because a ",[950,2039,952],{}," bundle is built to travel.",[946,2042,2043,2044,2047,2048,2051,2052,2055],{},"On the recipient's device, the bundle's keyrings and collections are written to the recipient's own store; ",[950,2045,2046],{},"openVault()"," then unlocks with the recipient's secret, exactly like any other vault. A slot's ",[950,2049,2050],{},"permissions"," also bound which decryption keys are wrapped into it — a ",[950,2053,2054],{},"{ invoices: 'ro' }"," slot cannot decrypt other collections even though their ciphertext may sit in the bundle.",[941,2057,2059],{"id":2058},"api","API",[1117,2061,2063],{"id":2062},"functions","Functions",[997,2065,2066,2087,2107,2120,2179,2188,2225],{},[1000,2067,2068,2071,2072,2075,2076,2078,2079,2081,2082],{},[950,2069,2070],{},"writePod(vault, options?)"," → ",[950,2073,2074],{},"Promise\u003CUint8Array>"," — dump the vault, apply re-keying and slice filters, compress, and assemble the container. Throws if ",[950,2077,1782],{}," and ",[950,2080,1778],{}," are both set. ",[984,2083,2084,2085,1015],{},"(deprecated alias: ",[950,2086,1085],{},[1000,2088,2089,2071,2092,2095,2096,2099,2100,2102,2103],{},[950,2090,2091],{},"readPod(bytes, options?)",[950,2093,2094],{},"Promise\u003CPodReadResult>"," — validate magic + header, verify the body length and SHA-256, decompress, and return the original dump JSON. Throws ",[950,2097,2098],{},"PodIntegrityError"," (importable from ",[950,2101,1143],{},") when the body was truncated, padded, or modified — distinct from format errors so you can pattern-match corrupted-in-transit vs malformed-by-producer. ",[984,2104,2084,2105,1015],{},[950,2106,1089],{},[1000,2108,2109,2071,2112,2115,2116],{},[950,2110,2111],{},"readPodHeader(bytes)",[950,2113,2114],{},"NoydbPodHeader"," — synchronous, header-only read: no body decompression, no integrity verification. Cost is O(prefix + header bytes). ",[984,2117,2084,2118,1015],{},[950,2119,1092],{},[1000,2121,2122,2125,2126,2129,2130,2133,2134,2137,2138,2125,2141,2144,2145,2148,2149,2152,2153,2156,2157,2159,2160,2125,2163,2166,2167],{},[950,2123,2124],{},"wrapPodStore(store, options?)"," \u002F ",[950,2127,2128],{},"createPodStore(impl)"," — convert a whole-file pod store (blob-oriented read\u002Fwrite with optimistic concurrency) into the standard six-method ",[950,2131,2132],{},"NoydbStore",", for backends like Google Drive, WebDAV, or iCloud Drive that work best with whole-file I\u002FO. Version conflicts re-read, merge last-write-wins per record, and retry (max 3 attempts); flushing is per-mutation by default, or deferred via ",[950,2135,2136],{},"autoFlush: false"," + ",[950,2139,2140],{},"store.flush()",[950,2142,2143],{},"store.batch()",". Types: ",[950,2146,2147],{},"WrapPodStoreOptions"," (the ",[950,2150,2151],{},"autoFlush"," bag) and ",[950,2154,2155],{},"WrappedPodNoydbStore"," (a ",[950,2158,2132],{}," plus ",[950,2161,2162],{},"flush()",[950,2164,2165],{},"batch()","). ",[984,2168,2169,2170,1086,2172,1086,2175,1086,2177,1015],{},"(deprecated aliases: ",[950,2171,1014],{},[950,2173,2174],{},"createPodStore",[950,2176,2147],{},[950,2178,2155],{},[1000,2180,2181,2125,2184,2187],{},[950,2182,2183],{},"generateULID()",[950,2185,2186],{},"isULID(value)"," — the handle format helpers.",[1000,2189,2190,2191,1086,2194,1086,2197,1086,2200,1086,2203,1086,2206,2125,2209,2125,2212,1086,2215,1086,2218,1093,2221,2224],{},"Format-level exports for tooling: ",[950,2192,2193],{},"NOYDB_POD_MAGIC",[950,2195,2196],{},"NOYDB_POD_PREFIX_BYTES",[950,2198,2199],{},"NOYDB_POD_FORMAT_VERSION",[950,2201,2202],{},"FLAG_COMPRESSED",[950,2204,2205],{},"FLAG_HAS_INTEGRITY_HASH",[950,2207,2208],{},"COMPRESSION_NONE",[950,2210,2211],{},"COMPRESSION_GZIP",[950,2213,2214],{},"COMPRESSION_BROTLI",[950,2216,2217],{},"validateBundleHeader(parsed)",[950,2219,2220],{},"encodeBundleHeader(header)",[950,2222,2223],{},"CompressionAlgo"," type.",[1000,2226,2227,2230],{},[950,2228,2229],{},"resetBrotliSupportCache()"," — test-only: reset the cached brotli feature detection.",[1117,2232,2234],{"id":2233},"vault-methods-used-with-this-service-always-on-core","Vault methods used with this service (always-on core)",[997,2236,2237,2245,2254,2266],{},[1000,2238,2239,2071,2241,2244],{},[950,2240,961],{},[950,2242,2243],{},"Promise\u003Cstring>"," — the canonical backup JSON (encrypted records + keyrings + ledger).",[1000,2246,2247,2071,2250,2253],{},[950,2248,2249],{},"vault.load(dumpJson)",[950,2251,2252],{},"Promise\u003Cvoid>"," — restore from a dump; verifies the embedded ledger head when the backup carries one.",[1000,2255,2256,2071,2259,2261,2262,2265],{},[950,2257,2258],{},"vault.getPodHandle()",[950,2260,2243],{}," — the vault's ULID handle, persisted in the vault's ",[950,2263,2264],{},"_meta\u002Fhandle"," document so it survives process restarts and repeat exports.",[1000,2267,2268,2071,2271,2274,2275,2277],{},[950,2269,2270],{},"vault.buildBundleRecipientKeyrings(recipients)",[950,2272,2273],{},"Promise\u003CRecord\u003Cstring, KeyringFile>>"," — build per-recipient keyring files without persisting anything to the source vault. This is the primitive ",[950,2276,965],{}," uses for its re-keying path; the produced files exist only in the bundle bytes.",[1117,2279,2281],{"id":2280},"writepodoptions",[950,2282,1096],{},[2284,2285,2286,2305],"table",{},[2287,2288,2289],"thead",{},[2290,2291,2292,2296,2299,2302],"tr",{},[2293,2294,2295],"th",{},"Option",[2293,2297,2298],{},"Type",[2293,2300,2301],{},"Default",[2293,2303,2304],{},"Effect",[2306,2307,2308,2339,2357,2379,2400,2421,2442,2460,2497,2518,2537],"tbody",{},[2290,2309,2310,2316,2321,2326],{},[2311,2312,2313],"td",{},[950,2314,2315],{},"compression",[2311,2317,2318],{},[950,2319,2320],{},"'auto' | 'brotli' | 'gzip' | 'none'",[2311,2322,2323],{},[950,2324,2325],{},"'auto'",[2311,2327,2328,2330,2331,2334,2335,2338],{},[950,2329,2325],{}," tries brotli, falls back to gzip. ",[950,2332,2333],{},"'brotli'"," throws if the runtime lacks support. ",[950,2336,2337],{},"'none'"," is for round-trip testing.",[2290,2340,2341,2346,2351,2354],{},[2311,2342,2343],{},[950,2344,2345],{},"collections",[2311,2347,2348],{},[950,2349,2350],{},"readonly string[]",[2311,2352,2353],{},"all",[2311,2355,2356],{},"Allowlist of user-collection names. Applies to user collections only — keyrings and ledger stay so the bundle remains unlockable.",[2290,2358,2359,2364,2369,2372],{},[2311,2360,2361],{},[950,2362,2363],{},"since",[2311,2365,2366],{},[950,2367,2368],{},"Date | string",[2311,2370,2371],{},"—",[2311,2373,2374,2375,2378],{},"Keep only records whose envelope ",[950,2376,2377],{},"_ts"," is on\u002Fafter this instant. Operates on the unencrypted envelope timestamp — no decryption needed.",[2290,2380,2381,2386,2391,2393],{},[2311,2382,2383],{},[950,2384,2385],{},"where",[2311,2387,2388],{},[950,2389,2390],{},"(record, { collection, id }) => boolean | Promise\u003Cboolean>",[2311,2392,2371],{},[2311,2394,2395,2396,2399],{},"Plaintext predicate: each record is decrypted with the vault's key to run the test, and survivors keep their ",[955,2397,2398],{},"original ciphertext"," (no re-encryption). Async predicates supported.",[2290,2401,2402,2407,2412,2414],{},[2311,2403,2404],{},[950,2405,2406],{},"tierAtMost",[2311,2408,2409],{},[950,2410,2411],{},"number",[2311,2413,2371],{},[2311,2415,2416,2417,2420],{},"Drop records whose envelope ",[950,2418,2419],{},"_tier"," is strictly greater. Envelope-level; no decryption needed.",[2290,2422,2423,2427,2432,2434],{},[2311,2424,2425],{},[950,2426,1782],{},[2311,2428,2429],{},[950,2430,2431],{},"string",[2311,2433,2371],{},[2311,2435,2436,2437,2439,2440,1289],{},"Single-recipient re-keying shorthand: one fresh keyring slot sealed with this secret, inheriting the source keyring's userId, role, and permissions. At least 12 characters (since hub ",[950,2438,2036],{},"). Mutually exclusive with ",[950,2441,1778],{},[2290,2443,2444,2448,2453,2455],{},[2311,2445,2446],{},[950,2447,1778],{},[2311,2449,2450],{},[950,2451,2452],{},"readonly PodRecipient[]",[2311,2454,2371],{},[2311,2456,2457,2458,1289],{},"Multi-recipient re-keying (see below). Mutually exclusive with ",[950,2459,1782],{},[2290,2461,2462,2467,2472,2474],{},[2311,2463,2464],{},[950,2465,2466],{},"autoCredentials",[2311,2468,2469],{},[950,2470,2471],{},"{ policy: 'public-by-design', perUser: Record\u003Cstring, AutoCredential> }",[2311,2473,2371],{},[2311,2475,2476,2477,2480,2481,2484,2485,2484,2487,2489,2490,2492,2493,2496],{},"Embed ",[955,2478,2479],{},"plaintext"," per-user credentials (",[950,2482,2483],{},"secret"," | ",[950,2486,313],{},[950,2488,317],{},") for auto-unlock. Anyone holding the bytes can read them — for demo data and sample vaults only. The explicit ",[950,2491,796],{}," discriminant is mandatory; a bare ",[950,2494,2495],{},"{ perUser }"," is rejected at write time.",[2290,2498,2499,2504,2511,2513],{},[2311,2500,2501],{},[950,2502,2503],{},"sealedCredentials",[2311,2505,2506,2507,1015],{},"self-target or recipient-target shape (see ",[968,2508,2510],{"href":2509},"#auto-unlock-credentials","Auto-unlock",[2311,2512,2371],{},[2311,2514,2515,2516,1289],{},"Embed per-user credentials sealed under a sealing-key provider. Mutually exclusive with ",[950,2517,2466],{},[2290,2519,2520,2525,2530,2532],{},[2311,2521,2522],{},[950,2523,2524],{},"autoSecrets",[2311,2526,2527],{},[984,2528,2529],{},"(deprecated)",[2311,2531,2371],{},[2311,2533,2534,2535,1289],{},"Use ",[950,2536,2466],{},[2290,2538,2539,2544,2548,2550],{},[2311,2540,2541],{},[950,2542,2543],{},"sealedSecrets",[2311,2545,2546],{},[984,2547,2529],{},[2311,2549,2371],{},[2311,2551,2534,2552,1289],{},[950,2553,2503],{},[946,2555,2556,2078,2558,2560],{},[950,2557,2345],{},[950,2559,2363],{}," intersect (AND). With no options, the bundle is a whole-vault snapshot.",[1117,2562,2564],{"id":2563},"podrecipient",[950,2565,2566],{},"PodRecipient",[2284,2568,2569,2583],{},[2287,2570,2571],{},[2290,2572,2573,2576,2578,2580],{},[2293,2574,2575],{},"Field",[2293,2577,2298],{},[2293,2579,2301],{},[2293,2581,2582],{},"Meaning",[2306,2584,2585,2602,2617,2635,2655,2672,2694,2713],{},[2290,2586,2587,2592,2596,2599],{},[2311,2588,2589],{},[950,2590,2591],{},"id",[2311,2593,2594],{},[950,2595,2431],{},[2311,2597,2598],{},"required",[2311,2600,2601],{},"User id stamped onto the keyring file in the bundle.",[2290,2603,2604,2608,2612,2614],{},[2311,2605,2606],{},[950,2607,2483],{},[2311,2609,2610],{},[950,2611,2431],{},[2311,2613,2598],{},[2311,2615,2616],{},"What the recipient will type to unlock.",[2290,2618,2619,2624,2628,2632],{},[2311,2620,2621],{},[950,2622,2623],{},"displayName",[2311,2625,2626],{},[950,2627,2431],{},[2311,2629,2630],{},[950,2631,2591],{},[2311,2633,2634],{},"Optional display name.",[2290,2636,2637,2642,2647,2652],{},[2311,2638,2639],{},[950,2640,2641],{},"role",[2311,2643,2644],{},[950,2645,2646],{},"Role",[2311,2648,2649],{},[950,2650,2651],{},"'viewer'",[2311,2653,2654],{},"Role on the destination vault.",[2290,2656,2657,2661,2666,2669],{},[2311,2658,2659],{},[950,2660,2050],{},[2311,2662,2663],{},[950,2664,2665],{},"Permissions",[2311,2667,2668],{},"role defaults",[2311,2670,2671],{},"Per-collection permissions; also bounds which DEKs are wrapped into the slot.",[2290,2673,2674,2679,2684,2687],{},[2311,2675,2676],{},[950,2677,2678],{},"exportCapability",[2311,2680,2681],{},[950,2682,2683],{},"ExportCapability",[2311,2685,2686],{},"none",[2311,2688,2689,2690,2693],{},"Optional ",[950,2691,2692],{},"as-*"," export grants on the destination vault.",[2290,2695,2696,2701,2706,2708],{},[2311,2697,2698],{},[950,2699,2700],{},"importCapability",[2311,2702,2703],{},[950,2704,2705],{},"ImportCapability",[2311,2707,2686],{},[2311,2709,2689,2710,2712],{},[950,2711,2692],{}," import grants. Default-closed.",[2290,2714,2715,2720,2725,2727],{},[2311,2716,2717],{},[950,2718,2719],{},"expiresAt",[2311,2721,2722,2724],{},[950,2723,2431],{}," (ISO 8601)",[2311,2726,2371],{},[2311,2728,2729,2730,2733],{},"Past this cutoff the slot's keyring refuses to load with ",[950,2731,2732],{},"KeyringExpiredError"," — time-boxed audit access.",[1117,2735,2737],{"id":2736},"readpodoptions",[950,2738,2739],{},"ReadPodOptions",[2284,2741,2742,2754],{},[2287,2743,2744],{},[2290,2745,2746,2748,2750,2752],{},[2293,2747,2295],{},[2293,2749,2298],{},[2293,2751,2301],{},[2293,2753,2304],{},[2306,2755,2756,2781],{},[2290,2757,2758,2763,2768,2770],{},[2311,2759,2760],{},[950,2761,2762],{},"sealingProviders",[2311,2764,2765],{},[950,2766,2767],{},"readonly NoydbSealer[]",[2311,2769,2371],{},[2311,2771,2772,2773,2776,2777,2780],{},"Recipient-side providers used to unseal sealed auto-unlock entries; matched by provider ",[950,2774,2775],{},".id"," against each entry's ",[950,2778,2779],{},"pid",". When unset, sealed entries are returned unmodified (base64 sealed bytes).",[2290,2782,2783,2788,2793,2798],{},[2311,2784,2785],{},[950,2786,2787],{},"attemptUnsealAcrossProviders",[2311,2789,2790],{},[950,2791,2792],{},"boolean",[2311,2794,2795],{},[950,2796,2797],{},"false",[2311,2799,2800,2801,2803],{},"Opt-in trial mode: when an entry's ",[950,2802,2779],{}," matches no provider, try each provider with a matching algorithm. Surfaces extra credential prompts; use deliberately.",[1117,2805,2807],{"id":2806},"podreadresult",[950,2808,2809],{},"PodReadResult",[2284,2811,2812,2822],{},[2287,2813,2814],{},[2290,2815,2816,2818,2820],{},[2293,2817,2575],{},[2293,2819,2298],{},[2293,2821,2582],{},[2306,2823,2824,2838,2858],{},[2290,2825,2826,2831,2835],{},[2311,2827,2828],{},[950,2829,2830],{},"header",[2311,2832,2833],{},[950,2834,2114],{},[2311,2836,2837],{},"The validated header.",[2290,2839,2840,2845,2849],{},[2311,2841,2842],{},[950,2843,2844],{},"dumpJson",[2311,2846,2847],{},[950,2848,2431],{},[2311,2850,2851,2852,2854,2855,1289],{},"The original ",[950,2853,961],{}," JSON, ready for ",[950,2856,2857],{},"vault.load()",[2290,2859,2860,2865,2870],{},[2311,2861,2862],{},[950,2863,2864],{},"autoUnlock?",[2311,2866,2867],{},[950,2868,2869],{},"{ kind: 'unsealed' | 'sealed', perUser: Record\u003Cstring, AutoCredential> }",[2311,2871,2872,2873,2876,2877,2880,2881,1289],{},"Present only when the header's ",[950,2874,2875],{},"autoUnlock"," flag is set. ",[950,2878,2879],{},"'sealed'"," entries read without matching providers keep the raw base64 sealed bytes in ",[950,2882,2883],{},"value",[1117,2885,2887],{"id":2886},"noydbpodheader",[950,2888,2114],{},[946,2890,2891],{},[984,2892,2084,2893,1015],{},[950,2894,2114],{},[2284,2896,2897,2907],{},[2287,2898,2899],{},[2290,2900,2901,2903,2905],{},[2293,2902,2575],{},[2293,2904,2298],{},[2293,2906,2582],{},[2306,2908,2909,2926,2939,2952,2965,2983,2997,3020],{},[2290,2910,2911,2915,2919],{},[2311,2912,2913],{},[950,2914,1446],{},[2311,2916,2917],{},[950,2918,2411],{},[2311,2920,2921,2922,2925],{},"Bumped on layout changes (currently ",[950,2923,2924],{},"1",").",[2290,2927,2928,2932,2936],{},[2311,2929,2930],{},[950,2931,990],{},[2311,2933,2934],{},[950,2935,2431],{},[2311,2937,2938],{},"The vault's opaque ULID (26-char Crockford base32).",[2290,2940,2941,2945,2949],{},[2311,2942,2943],{},[950,2944,1484],{},[2311,2946,2947],{},[950,2948,2411],{},[2311,2950,2951],{},"Compressed body length — completeness check without decompressing.",[2290,2953,2954,2958,2962],{},[2311,2955,2956],{},[950,2957,1500],{},[2311,2959,2960],{},[950,2961,2431],{},[2311,2963,2964],{},"SHA-256 of the compressed body (lowercase hex) — integrity check without decompressing.",[2290,2966,2967,2972,2977],{},[2311,2968,2969],{},[950,2970,2971],{},"cover?",[2311,2973,2974],{},[950,2975,2976],{},"Cover",[2311,2978,2979,2980,2982],{},"Owner-curated label fields (name, icon, …) — see ",[968,2981,645],{"href":645},". Untrusted hint; the encrypted body stays the source of truth.",[2290,2984,2985,2989,2994],{},[2311,2986,2987],{},[950,2988,2864],{},[2311,2990,2991],{},[950,2992,2993],{},"'unsealed' | 'sealed'",[2311,2995,2996],{},"Indicator that the body carries auto-unlock credentials — visible pre-download so listing UIs can warn.",[2290,2998,2999,3004,3009],{},[2311,3000,3001],{},[950,3002,3003],{},"bundleKind?",[2311,3005,3006],{},[950,3007,3008],{},"'snapshot' | 'extracted-partition'",[2311,3010,3011,3012,3015,3016,1289],{},"The bundle's lifecycle role; ",[950,3013,3014],{},"'extracted-partition'"," bundles are re-keyed projections awaiting adoption — see ",[968,3017,3019],{"href":3018},"transferable-partitions","transferable partitions",[2290,3021,3022,3027,3032],{},[2311,3023,3024],{},[950,3025,3026],{},"transferSeal?",[2311,3028,3029],{},[950,3030,3031],{},"{ v: 1, alg, sealId }",[2311,3033,3034,3035,1289],{},"Metadata-only indicator, present iff ",[950,3036,3037],{},"bundleKind === 'extracted-partition'",[946,3039,3040,3041,3044],{},"Any other header key causes ",[950,3042,3043],{},"validateBundleHeader"," to throw. Deliberately forbidden: vault\u002Ftenant name, exporter identity, export timestamps, and KDF parameters or salts.",[941,3046,3048],{"id":3047},"re-keying-pipeline","Re-keying pipeline",[3050,3051,3052,3057,3065,3081,3093],"ol",{},[1000,3053,3054,3056],{},[950,3055,961],{}," produces the canonical backup JSON (records + source keyring + ledger).",[1000,3058,3059,3060,3064],{},"Records in ",[968,3061,3063],{"href":3062},"..\u002Fglossary\u002Fsatellite-collections","satellite collections"," whose base row is dead are dropped unconditionally, before any other filter.",[1000,3066,3067,3068,3070,3071,3073,3074,3076,3077,3080],{},"When ",[950,3069,1778],{}," (or ",[950,3072,1782],{},") is set, the source keyring is ",[955,3075,1786],{}," with one freshly derived ",[950,3078,3079],{},"KeyringFile"," per recipient: each recipient's key-encryption key is derived from their secret + a fresh salt via PBKDF2-SHA256 (600,000 iterations); the per-collection data-encryption keys (DEKs) are unwrapped from the source keyring once and re-wrapped under each recipient's key with AES-KW.",[1000,3082,3083,3084,3086,3087,1086,3089,1086,3091,2925],{},"Plaintext filters (",[950,3085,2385],{},") run, then metadata-only slice filters (",[950,3088,2345],{},[950,3090,2363],{},[950,3092,2406],{},[1000,3094,3095],{},"The pruned, re-keyed JSON is compressed and wrapped in the container.",[946,3097,3098,3099,3102,3103,3106],{},"Record ciphertext is ",[955,3100,3101],{},"never"," rewritten — re-keying touches only the small wrapped-DEK blobs (32 bytes each), so re-keying a multi-GB bundle takes milliseconds. The privilege-escalation guard from ",[950,3104,3105],{},"grant()"," is reused: every DEK wrapped into a recipient's slot must come from the source's own DEK set.",[946,3108,3109,3110,3112,3113,3116,3117,3120],{},"After re-keying, the ",[950,3111,1778],{}," array materialises as ",[950,3114,3115],{},"Record\u003CuserId, KeyringFile>"," in the bundle's ",[950,3118,3119],{},"keyrings"," field — structurally identical to a live vault's multi-user keyring map.",[941,3122,3124],{"id":3123},"auto-unlock-credentials","Auto-unlock credentials",[946,3126,3127],{},"A bundle can carry per-user credentials so the recipient's app can open it without prompting:",[997,3129,3130,3141],{},[1000,3131,3132,3136,3137,3140],{},[955,3133,3134],{},[950,3135,2466],{}," — plaintext, ",[950,3138,3139],{},"policy: 'public-by-design'"," required. Anyone holding the file can read them; meant for demo data, sample vaults, and onboarding.",[1000,3142,3143,3151,3152,3155,3156,3158,3159,3162,3163,3165],{},[955,3144,3145,3147,3148],{},[950,3146,2503],{}," with ",[950,3149,3150],{},"mode: 'self-target'"," — each credential is sealed under a ",[950,3153,3154],{},"NoydbSealer"," you also control on the reading side (same Keychain entry, same KMS account, …). The reader supplies ",[950,3157,2762],{}," to ",[950,3160,3161],{},"readPod()","; entries are matched by provider id (",[950,3164,2779],{},") and unsealed transparently.",[1117,3167,3169],{"id":3168},"recipient-target-sealing","Recipient-target sealing",[946,3171,3172,3147,3174,3177,3178,3181,3182,2022,3185,3188,3189,3192],{},[950,3173,2503],{},[950,3175,3176],{},"mode: 'recipient-target'"," lets a sender seal credentials for a recipient whose sealing provider the sender does ",[955,3179,3180],{},"not"," hold. The recipient publishes a ",[950,3183,3184],{},"RecipientHint",[950,3186,3187],{},"{ v: 1, pid, alg: 'rsa-oaep-sha256', material: { publicKeyPem } }"," — through any out-of-band channel (email, S3, in-app message). The sender passes, per user, ",[950,3190,3191],{},"{ credential, hint }","; the hub seals each credential against the hint using a hybrid scheme (a fresh AES-256-GCM content key, RSA-OAEP-SHA256-wrapped to the recipient's public key).",[946,3194,3195,3196,3199,3200,2137,3203,3206,3207,3210,3211,2078,3214,3217,3218,3220,3221,3224,3225,1289],{},"The sender's provider must implement the ",[950,3197,3198],{},"RecipientSealer"," interface (",[950,3201,3202],{},"publishRecipientHint()",[950,3204,3205],{},"sealForRecipient()","). Handover-capable providers implement it (for example ",[950,3208,3209],{},"@noy-db\u002Fat-aws-kms"," with asymmetric keys); self-only providers such as ",[950,3212,3213],{},"@noy-db\u002Fat-macos-keychain",[950,3215,3216],{},"@noy-db\u002Fat-env"," do not — the type system rejects them at the call site. The reader side is unchanged: ",[950,3219,2779],{}," dispatch finds the matching local provider, which unseals the hybrid envelope inside the opaque ",[950,3222,3223],{},"sealed"," bytes. See the ",[968,3226,3228,3231],{"href":3227},"..\u002Ffamilies\u002Fat\u002F",[950,3229,3230],{},"at-*"," sealing-provider family",[941,3233,3235],{"id":3234},"behavior-when-not-opted-in","Behavior when NOT opted in",[946,3237,3238],{},"Not importing the symbols means they are not in your application bundle — there is nothing to gate.",[941,3240,3242],{"id":3241},"pairs-well-with","Pairs well with",[997,3244,3245,3252,3262,3269],{},[1000,3246,3247,3251],{},[955,3248,3249],{},[968,3250,621],{"href":621}," — attached binaries round-trip inside the bundle",[1000,3253,3254,3258,3259,3261],{},[955,3255,3256],{},[968,3257,697],{"href":697}," — the dump embeds the audit-ledger head; ",[950,3260,2857],{}," verifies the hash chain on restore",[1000,3263,3264,3268],{},[955,3265,3266],{},[968,3267,856],{"href":856}," — snapshot bytes are produced by this service's writer",[1000,3270,3271,3275],{},[955,3272,3273],{},[968,3274,808],{"href":808}," — pod stores as one leg of a multi-store setup",[941,3277,3279],{"id":3278},"edge-cases-limits","Edge cases & limits",[997,3281,3282,3296,3310,3316,3319,3331],{},[1000,3283,3284,3285,3288,3289,3291,3292,3295],{},"Brotli needs ",[950,3286,3287],{},"CompressionStream('br')"," (Node 22+, Chrome 124+, Firefox 122+). ",[950,3290,2325],{}," falls back to gzip; ",[950,3293,3294],{},"compression: 'brotli'"," throws where unsupported. The algorithm is encoded in the prefix byte, so readers handle either transparently.",[1000,3297,3298,3299,3301,3302,3305,3306,3309],{},"The handle is persisted on the vault's own storage (",[950,3300,2264],{},"): repeat exports of the same vault share it, but a ",[955,3303,3304],{},"restored"," vault generates its own handle on first export — the dump deliberately excludes ",[950,3307,3308],{},"_meta",", because handle stability is per vault instance, not per content.",[1000,3311,3312,3313,3315],{},"The header is normally well under 1 KB but can reach roughly 256 KB when a ",[950,3314,645],{}," with an inline icon is present — size range requests accordingly.",[1000,3317,3318],{},"The header parser rejects unknown keys — you cannot smuggle custom metadata into the header; put it in a record instead.",[1000,3320,3321,2078,3323,3325,3326,1086,3328,3330],{},[950,3322,1782],{},[950,3324,1778],{}," are mutually exclusive, as are ",[950,3327,2466],{},[950,3329,2503],{},", and their deprecated predecessors — violations throw at write time.",[1000,3332,3333,3335,3336,3338],{},[950,3334,3161],{}," never decrypts records; restoring re-keyed bundles requires opening the vault with a recipient credential, not ",[950,3337,2857],{}," under the source session.",[941,3340,3342],{"id":3341},"see-also","See also",[997,3344,3345,3350,3358,3363,3368,3388,3395],{},[1000,3346,3347,3349],{},[968,3348,856],{"href":856}," — checkpoint\u002Frestore built on this container",[1000,3351,3352,2022,3354,3357],{},[968,3353,3019],{"href":3018},[950,3355,3356],{},"extracted-partition"," bundles and adoption",[1000,3359,3360,3362],{},[968,3361,645],{"href":645}," — the owner-curated header labels",[1000,3364,3365,3367],{},[968,3366,21],{"href":970}," — KEK\u002FDEK model, AES-GCM envelopes",[1000,3369,3370,3377,3378,3380,3381,2125,3384,3387],{},[968,3371,3373,3376],{"href":3372},"..\u002Ffamilies\u002Fto\u002F",[950,3374,3375],{},"to-*"," storage family"," — includes the ",[950,3379,1622],{}," ",[950,3382,3383],{},"savePod",[950,3385,3386],{},"loadPod"," helpers",[1000,3389,3390,3394],{},[968,3391,3392,3231],{"href":3227},[950,3393,3230],{}," — sealing keys for auto-unlock",[1000,3396,3397,3398,1289],{},"Proven by showcase ",[968,3399,3403],{"href":3400,"rel":3401},"https:\u002F\u002Fgithub.com\u002Fnoy-db\u002Fdocs\u002Fblob\u002Fmain\u002Fshowcases\u002Fsrc\u002F21-with-bundle.showcase.test.ts",[3402],"nofollow",[950,3404,3405],{},"21-with-bundle",[3407,3408,3409],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":1033,"searchDepth":1169,"depth":1169,"links":3411},[3412,3413,3414,3415,3419,3428,3429,3432,3433,3434,3435],{"id":943,"depth":1148,"text":944},{"id":994,"depth":1148,"text":995},{"id":1018,"depth":1148,"text":1019},{"id":1114,"depth":1148,"text":1115,"children":3416},[3417,3418],{"id":1119,"depth":1169,"text":1120},{"id":1771,"depth":1169,"text":1772},{"id":2058,"depth":1148,"text":2059,"children":3420},[3421,3422,3423,3424,3425,3426,3427],{"id":2062,"depth":1169,"text":2063},{"id":2233,"depth":1169,"text":2234},{"id":2280,"depth":1169,"text":1096},{"id":2563,"depth":1169,"text":2566},{"id":2736,"depth":1169,"text":2739},{"id":2806,"depth":1169,"text":2809},{"id":2886,"depth":1169,"text":2114},{"id":3047,"depth":1148,"text":3048},{"id":3123,"depth":1148,"text":3124,"children":3430},[3431],{"id":3168,"depth":1169,"text":3169},{"id":3234,"depth":1148,"text":3235},{"id":3241,"depth":1148,"text":3242},{"id":3278,"depth":1148,"text":3279},{"id":3341,"depth":1148,"text":3342},null,"Write and read .noydb files — a portable single-file vault container with a minimum-disclosure header and optional re-keyed export to recipients.","md",{},"service",{"title":629,"description":3437},"stable","important","IdahF3Th6-lr85oYWXV4ndfQkqVzYTXLoVmTYv06IzY",{"data":3446,"body":3447},{},{"type":3448,"children":3449},"root",[3450],{"type":3451,"tag":946,"props":3452,"children":3453},"element",{},[3454],{"type":3455,"value":3456},"text","none — direct named imports",{"data":3458,"body":3459},{},{"type":3448,"children":3460},[3461],{"type":3451,"tag":946,"props":3462,"children":3463},{},[3464],{"type":3455,"value":3465},"F — Snapshot & Portability",{"data":3467,"body":3468},{},{"type":3448,"children":3469},[3470],{"type":3451,"tag":946,"props":3471,"children":3472},{},[3473,3478,3480,3486,3488,3493],{"type":3451,"tag":950,"props":3474,"children":3476},{"className":3475},[],[3477],{"type":3455,"value":1076},{"type":3455,"value":3479},". The old ",{"type":3451,"tag":950,"props":3481,"children":3483},{"className":3482},[],[3484],{"type":3455,"value":3485},"@noy-db\u002Fhub\u002Fbundle",{"type":3455,"value":3487}," alias is ",{"type":3451,"tag":955,"props":3489,"children":3490},{},[3491],{"type":3455,"value":3492},"gone from every published version of hub since 0.4.0-pre",{"type":3455,"value":3494}," — it was last present in 0.3.0, so an import of it fails on both rails today.",{"data":3496,"body":3497},{},{"type":3448,"children":3498},[3499],{"type":3451,"tag":946,"props":3500,"children":3501},{},[3502],{"type":3455,"value":3503},"~846 (off-bundle when not opted in)",1791896591663]