[{"data":1,"prerenderedAt":1518},["ShallowReactive",2],{"navigation":3,"\u002Fapi-reference\u002Flayers":193,"\u002Fapi-reference\u002Flayers-surround":1513},[4,27,49,99,149,169,183],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Existing Application","\u002Fgetting-started\u002Fexisting-application","1.getting-started\u002F4.existing-application",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Concepts","i-lucide-layers","\u002Fconcepts","2.concepts",[33,37,41,45],{"title":34,"path":35,"stem":36},"Layers","\u002Fconcepts\u002Flayers","2.concepts\u002F1.layers",{"title":38,"path":39,"stem":40},"Buckets","\u002Fconcepts\u002Fbuckets","2.concepts\u002F2.buckets",{"title":42,"path":43,"stem":44},"Boundaries","\u002Fconcepts\u002Fboundaries","2.concepts\u002F3.boundaries",{"title":46,"path":47,"stem":48},"Service Providers","\u002Fconcepts\u002Fservice-providers","2.concepts\u002F4.service-providers",{"title":50,"icon":51,"path":52,"stem":53,"children":54,"page":26},"Guides","i-lucide-book-marked","\u002Fguides","3.guides",[55,59,63,67,71,75,79,83,87,91,95],{"title":56,"path":57,"stem":58},"Add a Domain","\u002Fguides\u002Fadd-a-domain","3.guides\u002F01.add-a-domain",{"title":60,"path":61,"stem":62},"Share Code Between Layers","\u002Fguides\u002Fshare-code-between-layers","3.guides\u002F02.share-code-between-layers",{"title":64,"path":65,"stem":66},"Routes","\u002Fguides\u002Froutes","3.guides\u002F03.routes",{"title":68,"path":69,"stem":70},"Views and Components","\u002Fguides\u002Fviews-and-components","3.guides\u002F04.views-and-components",{"title":72,"path":73,"stem":74},"Seeders","\u002Fguides\u002Fseeders","3.guides\u002F05.seeders",{"title":76,"path":77,"stem":78},"Configuration","\u002Fguides\u002Fconfiguration","3.guides\u002F06.configuration",{"title":80,"path":81,"stem":82},"Events","\u002Fguides\u002Fevents","3.guides\u002F07.events",{"title":84,"path":85,"stem":86},"Tests and CI","\u002Fguides\u002Ftesting-and-ci","3.guides\u002F08.testing-and-ci",{"title":88,"path":89,"stem":90},"Production","\u002Fguides\u002Fproduction","3.guides\u002F09.production",{"title":92,"path":93,"stem":94},"Remove a Layer","\u002Fguides\u002Fremoving-a-layer","3.guides\u002F10.removing-a-layer",{"title":96,"path":97,"stem":98},"Multi-tenancy","\u002Fguides\u002Fmulti-tenancy","3.guides\u002F11.multi-tenancy",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":26},"Commands","i-lucide-terminal","\u002Fcommands","4.commands",[105,109,113,117,121,125,129,133,137,141,145],{"title":106,"path":107,"stem":108},"Overview","\u002Fcommands\u002Foverview","4.commands\u002F01.overview",{"title":110,"path":111,"stem":112},"osdd:start","\u002Fcommands\u002Fosdd-start","4.commands\u002F02.osdd-start",{"title":114,"path":115,"stem":116},"osdd:layer","\u002Fcommands\u002Fosdd-layer","4.commands\u002F03.osdd-layer",{"title":118,"path":119,"stem":120},"osdd:list","\u002Fcommands\u002Fosdd-list","4.commands\u002F04.osdd-list",{"title":122,"path":123,"stem":124},"osdd:check","\u002Fcommands\u002Fosdd-check","4.commands\u002F05.osdd-check",{"title":126,"path":127,"stem":128},"osdd:graph","\u002Fcommands\u002Fosdd-graph","4.commands\u002F06.osdd-graph",{"title":130,"path":131,"stem":132},"osdd:seed","\u002Fcommands\u002Fosdd-seed","4.commands\u002F07.osdd-seed",{"title":134,"path":135,"stem":136},"osdd:phpunit","\u002Fcommands\u002Fosdd-phpunit","4.commands\u002F08.osdd-phpunit",{"title":138,"path":139,"stem":140},"osdd:remove","\u002Fcommands\u002Fosdd-remove","4.commands\u002F09.osdd-remove",{"title":142,"path":143,"stem":144},"osdd:cache","\u002Fcommands\u002Fosdd-cache","4.commands\u002F10.osdd-cache",{"title":146,"path":147,"stem":148},"Generators","\u002Fcommands\u002Fmake-commands","4.commands\u002F11.make-commands",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":26},"API Reference","i-lucide-book-open","\u002Fapi-reference","5.api-reference",[155,159,162,166],{"title":156,"path":157,"stem":158},"LayerServiceProvider","\u002Fapi-reference\u002Flayer-service-provider","5.api-reference\u002F1.layer-service-provider",{"title":34,"path":160,"stem":161},"\u002Fapi-reference\u002Flayers","5.api-reference\u002F2.layers",{"title":163,"path":164,"stem":165},"SeederRegistry","\u002Fapi-reference\u002Fseeder-registry","5.api-reference\u002F3.seeder-registry",{"title":76,"path":167,"stem":168},"\u002Fapi-reference\u002Fconfiguration","5.api-reference\u002F4.configuration",{"title":170,"icon":171,"path":172,"stem":173,"children":174,"page":26},"Integrations","i-lucide-puzzle","\u002Fintegrations","6.integrations",[175,179],{"title":176,"path":177,"stem":178},"Laravel Boost","\u002Fintegrations\u002Flaravel-boost","6.integrations\u002F1.laravel-boost",{"title":180,"path":181,"stem":182},"Tinker and IDE Helper","\u002Fintegrations\u002Ftinker-and-ide-helper","6.integrations\u002F2.tinker-and-ide-helper",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":26},"Upgrade","i-lucide-arrow-up-circle","\u002Fupgrade","7.upgrade",[189],{"title":190,"path":191,"stem":192},"Upgrade from 2.x","\u002Fupgrade\u002Ffrom-2x","7.upgrade\u002F1.from-2x",{"id":194,"title":34,"body":195,"description":1506,"extension":1507,"links":1508,"meta":1509,"navigation":252,"path":160,"seo":1510,"sitemap":1511,"stem":161,"__hash__":1512},"docs\u002F5.api-reference\u002F2.layers.md",{"type":196,"value":197,"toc":1497},"minimark",[198,207,385,407,410,415,485,696,807,812,819,867,869,878,1023,1092,1095,1101,1185,1199,1203,1212,1308,1338,1342,1349,1493],[199,200,201,202,206],"p",{},"The commands find the layers through the ",[203,204,205],"code",{},"Lomkit\\Osdd\\Layers\\Layers"," service. Use it in your own commands, tests or tooling.",[208,209,214],"pre",{"className":210,"code":211,"language":212,"meta":213,"style":213},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use Lomkit\\Osdd\\Layers\\Layers;\n\n$layers = app(Layers::class); \u002F\u002F or inject Layers\n\n$layers->names();                    \u002F\u002F ['functional\u002Forders', 'functional\u002Fusers', 'technical\u002Fosdd']\n$orders = $layers->find('orders');   \u002F\u002F full name, or package name when it is unique\n$orders->rootNamespace;              \u002F\u002F 'Functional\\Orders\\'\n$orders->sourceDirectory;            \u002F\u002F '\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fsrc'\n","php","",[203,215,216,247,254,289,294,314,350,368],{"__ignoreMap":213},[217,218,221,225,229,233,236,238,240,242,244],"span",{"class":219,"line":220},"line",1,[217,222,224],{"class":223},"sbssI","use",[217,226,228],{"class":227},"sTEyZ"," Lomkit",[217,230,232],{"class":231},"sMK4o","\\",[217,234,235],{"class":227},"Osdd",[217,237,232],{"class":231},[217,239,34],{"class":227},[217,241,232],{"class":231},[217,243,34],{"class":227},[217,245,246],{"class":231},";\n",[217,248,250],{"class":219,"line":249},2,[217,251,253],{"emptyLinePlaceholder":252},true,"\n",[217,255,257,260,263,266,270,273,276,279,282,285],{"class":219,"line":256},3,[217,258,259],{"class":231},"$",[217,261,262],{"class":227},"layers ",[217,264,265],{"class":231},"=",[217,267,269],{"class":268},"s2Zo4"," app",[217,271,272],{"class":231},"(",[217,274,34],{"class":275},"sBMFI",[217,277,278],{"class":231},"::",[217,280,281],{"class":223},"class",[217,283,284],{"class":231},");",[217,286,288],{"class":287},"sHwdD"," \u002F\u002F or inject Layers\n",[217,290,292],{"class":219,"line":291},4,[217,293,253],{"emptyLinePlaceholder":252},[217,295,297,299,302,305,308,311],{"class":219,"line":296},5,[217,298,259],{"class":231},[217,300,301],{"class":227},"layers",[217,303,304],{"class":231},"->",[217,306,307],{"class":268},"names",[217,309,310],{"class":231},"();",[217,312,313],{"class":287},"                    \u002F\u002F ['functional\u002Forders', 'functional\u002Fusers', 'technical\u002Fosdd']\n",[217,315,317,319,322,324,327,329,331,334,336,339,343,345,347],{"class":219,"line":316},6,[217,318,259],{"class":231},[217,320,321],{"class":227},"orders ",[217,323,265],{"class":231},[217,325,326],{"class":231}," $",[217,328,301],{"class":227},[217,330,304],{"class":231},[217,332,333],{"class":268},"find",[217,335,272],{"class":231},[217,337,338],{"class":231},"'",[217,340,342],{"class":341},"sfazB","orders",[217,344,338],{"class":231},[217,346,284],{"class":231},[217,348,349],{"class":287},"   \u002F\u002F full name, or package name when it is unique\n",[217,351,353,355,357,359,362,365],{"class":219,"line":352},7,[217,354,259],{"class":231},[217,356,342],{"class":227},[217,358,304],{"class":231},[217,360,361],{"class":227},"rootNamespace",[217,363,364],{"class":231},";",[217,366,367],{"class":287},"              \u002F\u002F 'Functional\\Orders\\'\n",[217,369,371,373,375,377,380,382],{"class":219,"line":370},8,[217,372,259],{"class":231},[217,374,342],{"class":227},[217,376,304],{"class":231},[217,378,379],{"class":227},"sourceDirectory",[217,381,364],{"class":231},[217,383,384],{"class":287},"            \u002F\u002F '\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fsrc'\n",[199,386,387,388,391,392,395,396,401,402,406],{},"The layers are discovered once per process, from the folders of ",[203,389,390],{},"osdd.layers.paths",", or read from ",[203,393,394],{},"bootstrap\u002Fcache\u002Fosdd.php"," when ",[397,398,399],"a",{"href":143},[203,400,142],{}," cached them. See ",[397,403,405],{"href":404},"\u002Fconcepts\u002Fbuckets#how-layers-are-found","Discovery"," for the rules.",[408,409,34],"h2",{"id":301},[199,411,412,414],{},[203,413,205],{}," holds the discovered layers, sorted by name. It is countable and iterable:",[208,416,418],{"className":210,"code":417,"language":212,"meta":213,"style":213},"foreach (app(Layers::class) as $layer) {\n    echo $layer->name->toString(); \u002F\u002F functional\u002Forders\n}\n",[203,419,420,456,480],{"__ignoreMap":213},[217,421,422,426,429,432,434,436,438,440,443,446,448,451,453],{"class":219,"line":220},[217,423,425],{"class":424},"s7zQu","foreach",[217,427,428],{"class":231}," (",[217,430,431],{"class":268},"app",[217,433,272],{"class":231},[217,435,34],{"class":275},[217,437,278],{"class":231},[217,439,281],{"class":223},[217,441,442],{"class":231},")",[217,444,445],{"class":231}," as",[217,447,326],{"class":231},[217,449,450],{"class":227},"layer",[217,452,442],{"class":231},[217,454,455],{"class":231}," {\n",[217,457,458,461,463,465,467,470,472,475,477],{"class":219,"line":249},[217,459,460],{"class":268},"    echo",[217,462,326],{"class":231},[217,464,450],{"class":227},[217,466,304],{"class":231},[217,468,469],{"class":227},"name",[217,471,304],{"class":231},[217,473,474],{"class":268},"toString",[217,476,310],{"class":231},[217,478,479],{"class":287}," \u002F\u002F functional\u002Forders\n",[217,481,482],{"class":219,"line":256},[217,483,484],{"class":231},"}\n",[486,487,488,504],"table",{},[489,490,491],"thead",{},[492,493,494,498,501],"tr",{},[495,496,497],"th",{},"Method",[495,499,500],{},"Returns",[495,502,503],{},"Description",[505,506,507,531,548,563,585,599,613,627,642,663,682],"tbody",{},[492,508,509,515,520],{},[510,511,512],"td",{},[203,513,514],{},"find(string $name)",[510,516,517],{},[203,518,519],{},"Layer",[510,521,522,523,526,527,530],{},"The layer with this full name, or the only layer with this package name. Throws ",[203,524,525],{},"LayerNotFoundException"," or ",[203,528,529],{},"AmbiguousLayerNameException",".",[492,532,533,538,542],{},[510,534,535],{},[203,536,537],{},"findAll(array $names)",[510,539,540],{},[203,541,34],{},[510,543,544,547],{},[203,545,546],{},"find()"," for each name, without duplicates",[492,549,550,555,560],{},[510,551,552],{},[203,553,554],{},"names()",[510,556,557],{},[203,558,559],{},"list\u003Cstring>",[510,561,562],{},"The layer names",[492,564,565,570,575],{},[510,566,567],{},[203,568,569],{},"owning(string $class)",[510,571,572],{},[203,573,574],{},"?Layer",[510,576,577,578,581,582],{},"The layer whose longest ",[203,579,580],{},"psr-4"," prefix the class starts with, or ",[203,583,584],{},"null",[492,586,587,592,596],{},[510,588,589],{},[203,590,591],{},"sharingPackage(LayerName $name)",[510,593,594],{},[203,595,34],{},[510,597,598],{},"The other layers with the same package name",[492,600,601,606,610],{},[510,602,603],{},[203,604,605],{},"paths(LayerFolder $folder)",[510,607,608],{},[203,609,559],{},[510,611,612],{},"The absolute path of a folder in each layer",[492,614,615,620,624],{},[510,616,617],{},[203,618,619],{},"filter(Closure $keep)",[510,621,622],{},[203,623,34],{},[510,625,626],{},"The layers the callback keeps",[492,628,629,634,639],{},[510,630,631],{},[203,632,633],{},"map(Closure $callback)",[510,635,636],{},[203,637,638],{},"array",[510,640,641],{},"The callback's result for each layer",[492,643,644,653,661],{},[510,645,646,649,650],{},[203,647,648],{},"count()",", ",[203,651,652],{},"isEmpty()",[510,654,655,649,658],{},[203,656,657],{},"int",[203,659,660],{},"bool",[510,662],{},[492,664,665,670,675],{},[510,666,667],{},[203,668,669],{},"invalidManifests()",[510,671,672],{},[203,673,674],{},"list\u003CInvalidLayerManifestException>",[510,676,677,678,681],{},"The layer ",[203,679,680],{},"composer.json"," files that could not be read",[492,683,684,689,693],{},[510,685,686],{},[203,687,688],{},"failOnInvalidManifest()",[510,690,691],{},[203,692,34],{},[510,694,695],{},"The same layers, or throws the first invalid manifest",[208,697,699],{"className":210,"code":698,"language":212,"meta":213,"style":213},"use Functional\\Orders\\Models\\Order;\nuse Lomkit\\Osdd\\Layers\\LayerFolder;\n\n$layers->owning(Order::class)?->name->toString(); \u002F\u002F functional\u002Forders\n$layers->paths(LayerFolder::Migrations);          \u002F\u002F ['\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fdatabase\u002Fmigrations', ...]\n",[203,700,701,725,746,750,782],{"__ignoreMap":213},[217,702,703,705,708,710,713,715,718,720,723],{"class":219,"line":220},[217,704,224],{"class":223},[217,706,707],{"class":227}," Functional",[217,709,232],{"class":231},[217,711,712],{"class":227},"Orders",[217,714,232],{"class":231},[217,716,717],{"class":227},"Models",[217,719,232],{"class":231},[217,721,722],{"class":227},"Order",[217,724,246],{"class":231},[217,726,727,729,731,733,735,737,739,741,744],{"class":219,"line":249},[217,728,224],{"class":223},[217,730,228],{"class":227},[217,732,232],{"class":231},[217,734,235],{"class":227},[217,736,232],{"class":231},[217,738,34],{"class":227},[217,740,232],{"class":231},[217,742,743],{"class":227},"LayerFolder",[217,745,246],{"class":231},[217,747,748],{"class":219,"line":256},[217,749,253],{"emptyLinePlaceholder":252},[217,751,752,754,756,758,761,763,765,767,769,772,774,776,778,780],{"class":219,"line":291},[217,753,259],{"class":231},[217,755,301],{"class":227},[217,757,304],{"class":231},[217,759,760],{"class":268},"owning",[217,762,272],{"class":231},[217,764,722],{"class":275},[217,766,278],{"class":231},[217,768,281],{"class":223},[217,770,771],{"class":231},")?->",[217,773,469],{"class":227},[217,775,304],{"class":231},[217,777,474],{"class":268},[217,779,310],{"class":231},[217,781,479],{"class":287},[217,783,784,786,788,790,793,795,797,799,802,804],{"class":219,"line":296},[217,785,259],{"class":231},[217,787,301],{"class":227},[217,789,304],{"class":231},[217,791,792],{"class":268},"paths",[217,794,272],{"class":231},[217,796,743],{"class":275},[217,798,278],{"class":231},[217,800,801],{"class":227},"Migrations",[217,803,284],{"class":231},[217,805,806],{"class":287},"          \u002F\u002F ['\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fdatabase\u002Fmigrations', ...]\n",[808,809,811],"h3",{"id":810},"exceptions","Exceptions",[199,813,814,815,818],{},"All three live in ",[203,816,817],{},"Lomkit\\Osdd\\Layers",":",[486,820,821,831],{},[489,822,823],{},[492,824,825,828],{},[495,826,827],{},"Exception",[495,829,830],{},"Message",[505,832,833,844,855],{},[492,834,835,839],{},[510,836,837],{},[203,838,525],{},[510,840,841],{},[203,842,843],{},"Layer [functional\u002Foders] not found. Available layers: functional\u002Forders, functional\u002Fusers. Did you mean [functional\u002Forders]?",[492,845,846,850],{},[510,847,848],{},[203,849,529],{},[510,851,852],{},[203,853,854],{},"Layer [orders] is ambiguous: it matches functional\u002Forders, technical\u002Forders. Pass the full layer name.",[492,856,857,862],{},[510,858,859],{},[203,860,861],{},"InvalidLayerManifestException",[510,863,864],{},[203,865,866],{},"Invalid layer manifest [functional\u002Forders\u002Fcomposer.json]: it has no \"name\".",[408,868,519],{"id":450},[199,870,871,874,875,877],{},[203,872,873],{},"Lomkit\\Osdd\\Layers\\Layer"," is one discovered layer, read from its ",[203,876,680],{},". It is immutable.",[486,879,880,892],{},[489,881,882],{},[492,883,884,887,890],{},[495,885,886],{},"Property",[495,888,889],{},"Type",[495,891,503],{},[505,893,894,909,924,946,960,984,1000],{},[492,895,896,901,906],{},[510,897,898],{},[203,899,900],{},"$name",[510,902,903],{},[203,904,905],{},"LayerName",[510,907,908],{},"The layer name",[492,910,911,916,921],{},[510,912,913],{},[203,914,915],{},"$directory",[510,917,918],{},[203,919,920],{},"LayerDirectory",[510,922,923],{},"The layer folder",[492,925,926,931,936],{},[510,927,928],{},[203,929,930],{},"$rootNamespace",[510,932,933],{},[203,934,935],{},"string",[510,937,938,939,942,943],{},"The shortest ",[203,940,941],{},"autoload.psr-4"," prefix: ",[203,944,945],{},"Functional\\Orders\\",[492,947,948,953,957],{},[510,949,950],{},[203,951,952],{},"$sourceDirectory",[510,954,955],{},[203,956,935],{},[510,958,959],{},"The absolute path of that prefix's directory",[492,961,962,970,975],{},[510,963,964,649,967],{},[203,965,966],{},"$autoload",[203,968,969],{},"$devAutoload",[510,971,972],{},[203,973,974],{},"array\u003Cstring, string>",[510,976,977,979,980,983],{},[203,978,941],{}," and ",[203,981,982],{},"autoload-dev.psr-4",", prefix to directory",[492,985,986,991,995],{},[510,987,988],{},[203,989,990],{},"$providers",[510,992,993],{},[203,994,559],{},[510,996,997],{},[203,998,999],{},"extra.laravel.providers",[492,1001,1002,1010,1014],{},[510,1003,1004,649,1007],{},[203,1005,1006],{},"$requires",[203,1008,1009],{},"$devRequires",[510,1011,1012],{},[203,1013,559],{},[510,1015,1016,1017,979,1020],{},"The package names in ",[203,1018,1019],{},"require",[203,1021,1022],{},"require-dev",[486,1024,1025,1035],{},[489,1026,1027],{},[492,1028,1029,1031,1033],{},[495,1030,497],{},[495,1032,500],{},[495,1034,503],{},[505,1036,1037,1057,1074],{},[492,1038,1039,1047,1051],{},[510,1040,1041,649,1044],{},[203,1042,1043],{},"namespaces()",[203,1045,1046],{},"devNamespaces()",[510,1048,1049],{},[203,1050,559],{},[510,1052,1053,1054,1056],{},"The ",[203,1055,580],{}," prefixes",[492,1058,1059,1064,1069],{},[510,1060,1061],{},[203,1062,1063],{},"classFile(string $class)",[510,1065,1066],{},[203,1067,1068],{},"?string",[510,1070,1071,1072],{},"The file of a class under the longest matching prefix, or ",[203,1073,584],{},[492,1075,1076,1081,1085],{},[510,1077,1078],{},[203,1079,1080],{},"ownershipOf(string $class)",[510,1082,1083],{},[203,1084,657],{},[510,1086,1087,1088,1091],{},"The length of the longest matching prefix, ",[203,1089,1090],{},"0"," when the layer does not own the class",[408,1093,905],{"id":1094},"layername",[199,1096,1097,1100],{},[203,1098,1099],{},"Lomkit\\Osdd\\Layers\\LayerName"," is a validated layer name.",[208,1102,1104],{"className":210,"code":1103,"language":212,"meta":213,"style":213},"$layer->name->vendor;        \u002F\u002F functional\n$layer->name->package;       \u002F\u002F orders\n$layer->name->toString();    \u002F\u002F functional\u002Forders\n$layer->name->namespace();   \u002F\u002F Functional\\Orders\n",[203,1105,1106,1126,1146,1165],{"__ignoreMap":213},[217,1107,1108,1110,1112,1114,1116,1118,1121,1123],{"class":219,"line":220},[217,1109,259],{"class":231},[217,1111,450],{"class":227},[217,1113,304],{"class":231},[217,1115,469],{"class":227},[217,1117,304],{"class":231},[217,1119,1120],{"class":227},"vendor",[217,1122,364],{"class":231},[217,1124,1125],{"class":287},"        \u002F\u002F functional\n",[217,1127,1128,1130,1132,1134,1136,1138,1141,1143],{"class":219,"line":249},[217,1129,259],{"class":231},[217,1131,450],{"class":227},[217,1133,304],{"class":231},[217,1135,469],{"class":227},[217,1137,304],{"class":231},[217,1139,1140],{"class":227},"package",[217,1142,364],{"class":231},[217,1144,1145],{"class":287},"       \u002F\u002F orders\n",[217,1147,1148,1150,1152,1154,1156,1158,1160,1162],{"class":219,"line":256},[217,1149,259],{"class":231},[217,1151,450],{"class":227},[217,1153,304],{"class":231},[217,1155,469],{"class":227},[217,1157,304],{"class":231},[217,1159,474],{"class":268},[217,1161,310],{"class":231},[217,1163,1164],{"class":287},"    \u002F\u002F functional\u002Forders\n",[217,1166,1167,1169,1171,1173,1175,1177,1180,1182],{"class":219,"line":291},[217,1168,259],{"class":231},[217,1170,450],{"class":227},[217,1172,304],{"class":231},[217,1174,469],{"class":227},[217,1176,304],{"class":231},[217,1178,1179],{"class":268},"namespace",[217,1181,310],{"class":231},[217,1183,1184],{"class":287},"   \u002F\u002F Functional\\Orders\n",[199,1186,1187,1190,1191,1194,1195,530],{},[203,1188,1189],{},"LayerName::fromString('functional\u002Forders')"," throws ",[203,1192,1193],{},"Lomkit\\Osdd\\Layers\\InvalidLayerNameException"," for a name that is not a valid ",[397,1196,1198],{"href":1197},"\u002Fconcepts\u002Flayers#naming","layer name",[408,1200,1202],{"id":1201},"layerdirectory-and-layerfolder","LayerDirectory and LayerFolder",[199,1204,1205,1208,1209,818],{},[203,1206,1207],{},"$layer->directory"," is a ",[203,1210,1211],{},"Lomkit\\Osdd\\Layers\\LayerDirectory",[486,1213,1214,1226],{},[489,1215,1216],{},[492,1217,1218,1221,1223],{},[495,1219,1220],{},"Member",[495,1222,500],{},[495,1224,1225],{},"Example",[505,1227,1228,1244,1260,1276,1292],{},[492,1229,1230,1235,1239],{},[510,1231,1232],{},[203,1233,1234],{},"$root",[510,1236,1237],{},[203,1238,935],{},[510,1240,1241],{},[203,1242,1243],{},"\u002Fvar\u002Fwww\u002Ffunctional\u002Forders",[492,1245,1246,1251,1255],{},[510,1247,1248],{},[203,1249,1250],{},"path(LayerFolder $folder)",[510,1252,1253],{},[203,1254,935],{},[510,1256,1257],{},[203,1258,1259],{},"\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fdatabase\u002Fmigrations",[492,1261,1262,1267,1271],{},[510,1263,1264],{},[203,1265,1266],{},"pathTo(string $relativePath)",[510,1268,1269],{},[203,1270,935],{},[510,1272,1273],{},[203,1274,1275],{},"\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Froutes\u002Fweb.php",[492,1277,1278,1283,1287],{},[510,1279,1280],{},[203,1281,1282],{},"manifestFile()",[510,1284,1285],{},[203,1286,935],{},[510,1288,1289],{},[203,1290,1291],{},"\u002Fvar\u002Fwww\u002Ffunctional\u002Forders\u002Fcomposer.json",[492,1293,1294,1299,1303],{},[510,1295,1296],{},[203,1297,1298],{},"relativeTo(string $base)",[510,1300,1301],{},[203,1302,935],{},[510,1304,1305],{},[203,1306,1307],{},"functional\u002Forders",[199,1309,1310,1313,1314,649,1317,649,1320,649,1323,649,1326,649,1328,649,1330,649,1332,649,1335,530],{},[203,1311,1312],{},"Lomkit\\Osdd\\Layers\\LayerFolder"," lists the conventional folders: ",[203,1315,1316],{},"Config",[203,1318,1319],{},"Database",[203,1321,1322],{},"Factories",[203,1324,1325],{},"Lang",[203,1327,801],{},[203,1329,64],{},[203,1331,72],{},[203,1333,1334],{},"Tests",[203,1336,1337],{},"Views",[408,1339,1341],{"id":1340},"discovering-other-folders","Discovering other folders",[199,1343,1344,1345,1348],{},"To discover the layers of folders that are not in the config, build a ",[203,1346,1347],{},"LayerDiscovery"," yourself:",[208,1350,1352],{"className":210,"code":1351,"language":212,"meta":213,"style":213},"use Illuminate\\Filesystem\\Filesystem;\nuse Lomkit\\Osdd\\Layers\\LayerBuckets;\nuse Lomkit\\Osdd\\Layers\\LayerDiscovery;\n\n$layers = (new LayerDiscovery(\n    new LayerBuckets(['functional' => base_path('legacy\u002Ffunctional')]),\n    new Filesystem,\n))->discover();\n",[203,1353,1354,1372,1393,1413,1417,1436,1472,1482],{"__ignoreMap":213},[217,1355,1356,1358,1361,1363,1366,1368,1370],{"class":219,"line":220},[217,1357,224],{"class":223},[217,1359,1360],{"class":227}," Illuminate",[217,1362,232],{"class":231},[217,1364,1365],{"class":227},"Filesystem",[217,1367,232],{"class":231},[217,1369,1365],{"class":227},[217,1371,246],{"class":231},[217,1373,1374,1376,1378,1380,1382,1384,1386,1388,1391],{"class":219,"line":249},[217,1375,224],{"class":223},[217,1377,228],{"class":227},[217,1379,232],{"class":231},[217,1381,235],{"class":227},[217,1383,232],{"class":231},[217,1385,34],{"class":227},[217,1387,232],{"class":231},[217,1389,1390],{"class":227},"LayerBuckets",[217,1392,246],{"class":231},[217,1394,1395,1397,1399,1401,1403,1405,1407,1409,1411],{"class":219,"line":256},[217,1396,224],{"class":223},[217,1398,228],{"class":227},[217,1400,232],{"class":231},[217,1402,235],{"class":227},[217,1404,232],{"class":231},[217,1406,34],{"class":227},[217,1408,232],{"class":231},[217,1410,1347],{"class":227},[217,1412,246],{"class":231},[217,1414,1415],{"class":219,"line":291},[217,1416,253],{"emptyLinePlaceholder":252},[217,1418,1419,1421,1423,1425,1427,1430,1433],{"class":219,"line":296},[217,1420,259],{"class":231},[217,1422,262],{"class":227},[217,1424,265],{"class":231},[217,1426,428],{"class":231},[217,1428,1429],{"class":223},"new",[217,1431,1432],{"class":275}," LayerDiscovery",[217,1434,1435],{"class":231},"(\n",[217,1437,1438,1441,1444,1447,1449,1452,1454,1457,1460,1462,1464,1467,1469],{"class":219,"line":316},[217,1439,1440],{"class":223},"    new",[217,1442,1443],{"class":275}," LayerBuckets",[217,1445,1446],{"class":231},"([",[217,1448,338],{"class":231},[217,1450,1451],{"class":341},"functional",[217,1453,338],{"class":231},[217,1455,1456],{"class":231}," =>",[217,1458,1459],{"class":268}," base_path",[217,1461,272],{"class":231},[217,1463,338],{"class":231},[217,1465,1466],{"class":341},"legacy\u002Ffunctional",[217,1468,338],{"class":231},[217,1470,1471],{"class":231},")]),\n",[217,1473,1474,1476,1479],{"class":219,"line":352},[217,1475,1440],{"class":223},[217,1477,1478],{"class":275}," Filesystem",[217,1480,1481],{"class":231},",\n",[217,1483,1484,1487,1490],{"class":219,"line":370},[217,1485,1486],{"class":231},"))->",[217,1488,1489],{"class":268},"discover",[217,1491,1492],{"class":231},"();\n",[1494,1495,1496],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}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 .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}",{"title":213,"searchDepth":220,"depth":249,"links":1498},[1499,1502,1503,1504,1505],{"id":301,"depth":249,"text":34,"children":1500},[1501],{"id":810,"depth":256,"text":811},{"id":450,"depth":249,"text":519},{"id":1094,"depth":249,"text":905},{"id":1201,"depth":249,"text":1202},{"id":1340,"depth":249,"text":1341},"Discover and inspect the layers of the project from your own code.","md",null,{},{"title":34,"description":1506},{"loc":160},"UDTNuQIJNQiSGrqz-dax0mlJTi6Exy7Q3inv5duOLuI",[1514,1516],{"title":156,"path":157,"stem":158,"description":1515,"children":-1},"The base class of every layer's service provider.",{"title":163,"path":164,"stem":165,"description":1517,"children":-1},"The registry that collects the seeders of every layer, and the seeder that runs them.",1794437212499]