studiocms
Version:
Astro Native CMS for AstroDB. Built from the ground up by the Astro community.
192 lines (191 loc) • 5.27 kB
JavaScript
import { Effect } from "../../effect.js";
import {
AstroDB,
SDKCore_Collectors,
SDKCore_FolderTree,
SDKCore_Generators,
SDKCore_Parsers,
SDKCore_Users
} from "./effect/index.js";
import { SDKCore_AUTH } from "./modules/auth.js";
import { SDKCore_CLEAR } from "./modules/clear.js";
import { SDKCore_CONFIG } from "./modules/config.js";
import { SDKCore_DELETE } from "./modules/delete.js";
import { SDKCore_DiffTracking } from "./modules/diffTracking.js";
import { SDKCore_GET } from "./modules/get.js";
import { SDKCore_INIT } from "./modules/init.js";
import { SDKCore_MIDDLEWARES } from "./modules/middlewares.js";
import { SDKCore_NotificationSettings } from "./modules/notificationSettings.js";
import { SDKCore_PLUGINS } from "./modules/plugins.js";
import { SDKCore_POST } from "./modules/post.js";
import { SDKCore_ResetTokenBucket } from "./modules/resetTokenBucket.js";
import { SDKCore_REST_API } from "./modules/rest_api.js";
import { SDKCore_UPDATE } from "./modules/update.js";
import { CacheContext } from "./utils.js";
const pages = /* @__PURE__ */ new Map();
const siteConfig = /* @__PURE__ */ new Map();
const version = /* @__PURE__ */ new Map();
const folderTree = /* @__PURE__ */ new Map();
const pageFolderTree = /* @__PURE__ */ new Map();
const FolderList = /* @__PURE__ */ new Map();
const pluginData = /* @__PURE__ */ new Map();
class SDKCore extends Effect.Service()("studiocms/sdk/SDKCore", {
dependencies: [
SDKCore_FolderTree.Default,
SDKCore_Generators.Default,
SDKCore_Parsers.Default,
SDKCore_Users.Default,
SDKCore_Collectors.Default,
SDKCore_CLEAR.Default,
SDKCore_DELETE.Default,
SDKCore_UPDATE.Default,
SDKCore_POST.Default,
SDKCore_REST_API.Default,
SDKCore_GET.Default,
SDKCore_ResetTokenBucket.Default,
SDKCore_DiffTracking.Default,
SDKCore_NotificationSettings.Default,
SDKCore_AUTH.Default,
SDKCore_INIT.Default,
AstroDB.Default,
SDKCore_MIDDLEWARES.Default,
SDKCore_PLUGINS.Default,
SDKCore_CONFIG.Default
],
effect: Effect.gen(function* () {
const [
{
getFullPath,
findNodeByPath,
findNodesAlongPath,
findNodesAlongPathToId,
findNodeById,
addPageToFolderTree,
buildFolderTree,
getAvailableFolders
},
{ generateRandomIDNumber, generateRandomPassword, generateToken, testToken },
{ parseIdNumberArray, parseIdStringArray },
{ combineRanks, verifyRank, clearUserReferences },
{ collectCategories, collectTags, collectPageData, collectUserData },
dbService,
CLEAR,
DELETE,
UPDATE,
POST,
REST_API,
GET,
resetTokenBucket,
diffTracking,
notificationSettings,
AUTH,
INIT,
MIDDLEWARES,
PLUGINS,
CONFIG
] = yield* Effect.all([
SDKCore_FolderTree,
SDKCore_Generators,
SDKCore_Parsers,
SDKCore_Users,
SDKCore_Collectors,
AstroDB,
SDKCore_CLEAR,
SDKCore_DELETE,
SDKCore_UPDATE,
SDKCore_POST,
SDKCore_REST_API,
SDKCore_GET,
SDKCore_ResetTokenBucket,
SDKCore_DiffTracking,
SDKCore_NotificationSettings,
SDKCore_AUTH,
SDKCore_INIT,
SDKCore_MIDDLEWARES,
SDKCore_PLUGINS,
SDKCore_CONFIG
]);
const { db } = dbService;
return {
db,
dbService,
getFullPath,
findNodeByPath,
findNodesAlongPath,
findNodesAlongPathToId,
findNodeById,
addPageToFolderTree,
generateRandomIDNumber,
generateRandomPassword,
generateToken,
testToken,
parseIdNumberArray,
parseIdStringArray,
combineRanks,
verifyRank,
buildFolderTree,
getAvailableFolders,
clearUserReferences,
collectCategories,
collectTags,
collectPageData,
collectUserData,
resetTokenBucket,
diffTracking,
notificationSettings,
CLEAR,
DELETE,
REST_API,
POST,
UPDATE,
GET,
AUTH,
INIT,
MIDDLEWARES,
PLUGINS,
CONFIG
};
})
}) {
/**
* Provides the default dependencies to an Effect.
*
* This static property uses `Effect.provide` with the default configuration (`this.Default`),
* allowing consumers to inject the standard dependencies required by the SDK core.
*
* @remarks
* Typically used to wrap effects that require the default environment or services.
*
* @see {@link Effect.provide}
* @see {@link Default}
*/
static Provide = Effect.provide(this.Default);
/**
* Provides a static cache context containing various site-related data.
*
* @remarks
* The cache includes pages, folder lists, folder trees, page-folder trees,
* site configuration, and version information. It is created using
* `CacheContext.makeProvide` for efficient access throughout the SDK.
*
* @see CacheContext
* @see pages
* @see FolderList
* @see folderTree
* @see pageFolderTree
* @see siteConfig
* @see version
*/
static Cache = CacheContext.makeProvide({
pages,
FolderList,
folderTree,
pageFolderTree,
siteConfig,
version,
pluginData
});
}
export {
SDKCore
};