view loader.lua @ 14185:e23b9651145d 13.0

util.pubsub: Ensure deleted node stays in memory store deletion failed This looks like a copy/paste fail. The in-memory representation could get out of sync if the storage failed to delete the node (it would report an error, but would no longer be listed until a server restart re-read it from storage).
author Matthew Wild <mwild1@gmail.com>
date Mon, 25 May 2026 16:23:45 +0100
parents ef586363d90f
children 76ece4dd9782
line wrap: on
line source

-- Allow for both require"util.foo" and require"prosody.util.foo" for a
-- transition period while we update all require calls.

if (...) == "prosody.loader" then
	-- For require"util.foo" also look in paths equivalent to "prosody.util.foo"
	package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
	package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2");
else
	-- When requiring "prosody.x", also look for "x"
	for i = #package.searchers, 1, -1 do
		local search = package.searchers[i];
		table.insert(package.searchers, i, function(module_name)
			local lib = module_name:match("^prosody%.(.*)$");
			if lib then
				return search(lib);
			end
		end)
	end
end

-- Look for already loaded module with or without prefix
setmetatable(package.loaded, {
	__index = function(loaded, module_name)
		local suffix = module_name:match("^prosody%.(.*)$");
		if suffix then
			return rawget(loaded, suffix);
		end
		local prefixed = rawget(loaded, "prosody." .. module_name);
		if prefixed ~= nil then
			return prefixed;
		end
	end;
})