@junobuild/core-peer 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +3 -3
- package/dist/node/index.mjs +1 -1
- package/dist/node/index.mjs.map +3 -3
- package/dist/types/index.d.ts +1 -1
- package/dist/types/services/auth.services.d.ts +13 -0
- package/dist/types/services/storage.services.d.ts +24 -7
- package/package.json +1 -1
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts", "../../src/services/auth-timout.services.ts", "../../src/stores/store.ts", "../../src/stores/auth.store.ts", "../../src/utils/events.utils.ts", "../../src/services/auth.services.ts", "../../src/constants/auth.constants.ts", "../../src/providers/auth.providers.ts", "../../src/constants/container.constants.ts", "../../src/stores/env.store.ts", "../../src/utils/window.utils.ts", "../../../utils/src/utils/did.utils.ts", "../../../utils/src/utils/env.utils.ts", "../../src/stores/actor.store.ts", "../../src/stores/agent.store.ts", "../../src/types/errors.types.ts", "../../src/utils/auth.utils.ts", "../../src/services/user.services.ts", "../../../errors/src/utils.ts", "../../../errors/src/constants/cdn.constants.ts", "../../../errors/src/constants/collections.constants.ts", "../../../errors/src/constants/satellite.constants.ts", "../../../errors/src/constants/shared.constants.ts", "../../src/api/doc.api.ts", "../../src/utils/data.utils.ts", "../../src/utils/doc.utils.ts", "../../src/utils/list.utils.ts", "../../src/api/actor.api.ts", "../../declarations/satellite/satellite.factory.did.js", "../../src/utils/env.utils.ts", "../../src/services/identity.services.ts", "../../src/services/doc.services.ts", "../../src/utils/window.env.utils.ts", "../../src/services/factory.services.ts", "../../src/services/storage.services.ts", "../../src/api/storage.api.ts", "../../../storage/src/api/storage.api.ts", "../../src/utils/crypto.utils.ts"],
|
|
4
|
-
"sourcesContent": ["import {assertNonNullish} from '@dfinity/utils';\nimport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage} from '@junobuild/storage';\nimport {initAuthTimeoutWorker} from './services/auth-timout.services';\nimport {initAuth} from './services/auth.services';\nimport {AuthStore} from './stores/auth.store';\nimport {EnvStore} from './stores/env.store';\nimport type {User} from './types/auth.types';\nimport type {Environment, UserEnvironment} from './types/env.types';\nimport type {Unsubscribe} from './types/subscription.types';\nimport {envContainer, envSatelliteId} from './utils/window.env.utils';\nexport * from './providers/auth.providers';\nexport {signIn, signOut, unsafeIdentity} from './services/auth.services';\nexport * from './services/doc.services';\nexport * from './services/factory.services';\nexport * from './services/storage.services';\nexport type * from './types/auth.types';\nexport type * from './types/doc.types';\nexport type * from './types/env.types';\nexport * from './types/errors.types';\nexport {ListOrder, ListPaginate, ListParams, ListResults} from './types/list.types';\nexport type * from './types/satellite.types';\nexport type * from './types/storage.types';\nexport type * from './types/subscription.types';\nexport type * from './types/utility.types';\nexport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage};\n\nconst parseEnv = (userEnv?: UserEnvironment): Environment => {\n const satelliteId = userEnv?.satelliteId ?? envSatelliteId();\n\n assertNonNullish(satelliteId, 'Satellite ID is not configured. Juno cannot be initialized.');\n\n const container = userEnv?.container ?? envContainer();\n\n return {\n satelliteId,\n internetIdentityId: userEnv?.internetIdentityId,\n workers: userEnv?.workers,\n container\n };\n};\n\n/**\n * Initializes Juno with the provided optional environment parameters.\n * If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @deprecated Use {@link initSatellite} instead.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration.\n * @returns {Promise<Unsubscribe[]>} A promise that resolves to an array of unsubscribe functions.\n */\nexport const initJuno = (userEnv?: UserEnvironment): Promise<Unsubscribe[]> =>\n initSatellite(userEnv);\n\n/**\n * Initializes a Juno satellite with the provided optional environment parameters.\n * If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration.\n * @returns {Promise<Unsubscribe[]>} A promise that resolves to an array of unsubscribe functions.\n */\nexport const initSatellite = async (userEnv?: UserEnvironment): Promise<Unsubscribe[]> => {\n const env = parseEnv(userEnv);\n\n EnvStore.getInstance().set(env);\n\n await initAuth();\n\n const authSubscribe =\n env.workers?.auth !== undefined ? initAuthTimeoutWorker(env.workers.auth) : undefined;\n\n return [...(authSubscribe ? [authSubscribe] : [])];\n};\n\n/**\n * Subscribes to authentication state changes. i.e. each time a user signs in or signs out, the callback will be triggered.\n * @param {function(User | null): void} callback - The callback function to execute when the authentication state changes.\n * @returns {Unsubscribe} A function to unsubscribe from the authentication state changes.\n */\nexport const authSubscribe = (callback: (authUser: User | null) => void): Unsubscribe =>\n AuthStore.getInstance().subscribe(callback);\n", "import {isNullish} from '@dfinity/utils';\nimport {AuthStore} from '../stores/auth.store';\nimport type {User} from '../types/auth.types';\nimport type {EnvironmentWorker} from '../types/env.types';\nimport type {PostMessage, PostMessageDataResponseAuth} from '../types/post-message';\nimport type {Unsubscribe} from '../types/subscription.types';\nimport {emit} from '../utils/events.utils';\nimport {signOut} from './auth.services';\n\nexport const initAuthTimeoutWorker = (auth: EnvironmentWorker): Unsubscribe => {\n const workerUrl = auth === true ? './workers/auth.worker.js' : auth;\n const worker = new Worker(workerUrl);\n\n const timeoutSignOut = async () => {\n emit({message: 'junoSignOutAuthTimer'});\n await signOut();\n };\n\n worker.onmessage = async ({data}: MessageEvent<PostMessage<PostMessageDataResponseAuth>>) => {\n const {msg, data: value} = data;\n\n switch (msg) {\n case 'junoSignOutAuthTimer':\n await timeoutSignOut();\n return;\n case 'junoDelegationRemainingTime':\n emit({message: 'junoDelegationRemainingTime', detail: value?.authRemainingTime});\n return;\n }\n };\n\n return AuthStore.getInstance().subscribe((user: User | null) => {\n if (isNullish(user)) {\n worker.postMessage({msg: 'junoStopAuthTimer'});\n return;\n }\n\n worker.postMessage({msg: 'junoStartAuthTimer'});\n });\n};\n", "export abstract class Store<T> {\n private callbacks: {id: symbol; callback: (data: T | null) => void}[] = [];\n\n protected populate(data: T | null) {\n this.callbacks.forEach(({callback}: {id: symbol; callback: (data: T | null) => void}) =>\n callback(data)\n );\n }\n\n subscribe(callback: (data: T | null) => void): () => void {\n const callbackId = Symbol();\n this.callbacks.push({id: callbackId, callback});\n\n return () =>\n (this.callbacks = this.callbacks.filter(\n ({id}: {id: symbol; callback: (data: T | null) => void}) => id !== callbackId\n ));\n }\n}\n", "import type {User} from '../types/auth.types';\nimport type {Unsubscribe} from '../types/subscription.types';\nimport {Store} from './store';\n\nexport class AuthStore extends Store<User | null> {\n private static instance: AuthStore;\n\n private authUser: User | null = null;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!AuthStore.instance) {\n AuthStore.instance = new AuthStore();\n }\n return AuthStore.instance;\n }\n\n set(authUser: User | null) {\n this.authUser = authUser;\n\n this.populate(authUser);\n }\n\n get(): User | null {\n return this.authUser;\n }\n\n override subscribe(callback: (data: User | null) => void): Unsubscribe {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.authUser);\n\n return unsubscribe;\n }\n\n reset() {\n this.authUser = null;\n\n this.populate(this.authUser);\n }\n}\n", "export const emit = <T>({message, detail}: {message: string; detail?: T | undefined}) => {\n const $event: CustomEvent<T> = new CustomEvent<T>(message, {detail, bubbles: true});\n document.dispatchEvent($event);\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {type AuthClient, ERROR_USER_INTERRUPT} from '@dfinity/auth-client';\nimport {isNullish} from '@dfinity/utils';\nimport {\n ALLOW_PIN_AUTHENTICATION,\n DELEGATION_IDENTITY_EXPIRATION\n} from '../constants/auth.constants';\nimport {InternetIdentityProvider} from '../providers/auth.providers';\nimport {ActorStore} from '../stores/actor.store';\nimport {AgentStore} from '../stores/agent.store';\nimport {AuthStore} from '../stores/auth.store';\nimport type {Provider, SignInOptions} from '../types/auth.types';\nimport {SignInError, SignInInitError, SignInUserInterruptError} from '../types/errors.types';\nimport {createAuthClient} from '../utils/auth.utils';\nimport {initUser} from './user.services';\n\nlet authClient: AuthClient | undefined | null;\n\nexport const initAuth = async (provider?: Provider) => {\n authClient = authClient ?? (await createAuthClient());\n\n const isAuthenticated: boolean = (await authClient?.isAuthenticated()) ?? false;\n\n if (!isAuthenticated) {\n return;\n }\n\n const user = await initUser(provider);\n AuthStore.getInstance().set(user);\n};\n\n/**\n * Signs in a user with the specified options.\n *\n * @param {SignInOptions} [options] - The options for signing in.\n * @returns {Promise<void>} A promise that resolves when the sign-in process is complete and the authenticated user is initialized.\n * @throws {SignInError} If the sign-in process fails or no authentication client is available.\n */\nexport const signIn = (options?: SignInOptions): Promise<void> =>\n /* eslint-disable no-async-promise-executor */\n new Promise<void>(async (resolve, reject) => {\n if (isNullish(authClient)) {\n reject(\n new SignInInitError(\n 'No client is ready to perform a sign-in. Have you initialized the Satellite?'\n )\n );\n return;\n }\n\n const provider = options?.provider ?? new InternetIdentityProvider({});\n\n await authClient.login({\n onSuccess: async () => {\n await initAuth(provider.id);\n resolve();\n },\n onError: (error?: string) => {\n if (error === ERROR_USER_INTERRUPT) {\n reject(new SignInUserInterruptError(error));\n return;\n }\n\n reject(new SignInError(error));\n },\n maxTimeToLive: options?.maxTimeToLive ?? DELEGATION_IDENTITY_EXPIRATION,\n allowPinAuthentication: options?.allowPin ?? ALLOW_PIN_AUTHENTICATION,\n ...(options?.derivationOrigin !== undefined && {derivationOrigin: options.derivationOrigin}),\n ...provider.signInOptions({\n windowed: options?.windowed\n })\n });\n });\n\n/**\n * Signs out the current user.\n * @returns {Promise<void>} A promise that resolves when the sign-out process is complete.\n */\nexport const signOut = async (): Promise<void> => {\n await authClient?.logout();\n\n // Reset local object otherwise next sign in (sign in - sign out - sign in) might not work out - i.e. agent-js might not recreate the delegation or identity if not resetted\n // Technically we do not need this since we recreate the agent below. We just keep it to make the reset explicit.\n authClient = null;\n\n AuthStore.getInstance().reset();\n\n ActorStore.getInstance().reset();\n AgentStore.getInstance().reset();\n\n // Recreate an HttpClient immediately because next sign-in, if window is not reloaded, would fail if the agent is created within the process.\n // For example, Safari blocks the Internet Identity (II) window if the agent is created during the interaction.\n // Agent-js must be created either globally or at least before performing a sign-in.\n authClient = await createAuthClient();\n};\n\nexport const getIdentity = (): Identity | undefined => authClient?.getIdentity();\n\n/**\n * Returns the identity of a signed-in user or an anonymous identity.\n * This function is useful for loading an identity in web workers.\n * Used to imperatively get the identity. Please be certain before using it.\n * @returns {Promise<Identity>} A promise that resolves to the identity of the user or an anonymous identity.\n */\nexport const unsafeIdentity = async (): Promise<Identity> =>\n (authClient ?? (await createAuthClient())).getIdentity();\n", "// How long the delegation identity should remain valid?\n// e.g. BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000) = 7 days in nanoseconds\n// For Juno: 4 hours\nexport const DELEGATION_IDENTITY_EXPIRATION = BigInt(4 * 60 * 60 * 1000 * 1000 * 1000);\n\n// We consider PIN authentication as \"insecure\" because users can easily lose their PIN if they do not register a passphrase, especially since Safari clears the browser cache every two weeks in cases of inactivity.\n// That's why we disable it by default.\nexport const ALLOW_PIN_AUTHENTICATION = false;\n\nexport const II_POPUP: {width: number; height: number} = {width: 576, height: 576};\nexport const NFID_POPUP: {width: number; height: number} = {width: 505, height: 705};\n\nexport const INTERNET_COMPUTER_ORG = 'internetcomputer.org';\n\n// Worker\nexport const AUTH_TIMER_INTERVAL = 1000;\n", "import {isNullish, nonNullish} from '@dfinity/utils';\nimport {II_POPUP, INTERNET_COMPUTER_ORG, NFID_POPUP} from '../constants/auth.constants';\nimport {DOCKER_CONTAINER_URL, DOCKER_INTERNET_IDENTITY_ID} from '../constants/container.constants';\nimport {EnvStore} from '../stores/env.store';\nimport type {\n InternetIdentityConfig,\n InternetIdentityDomain,\n NFIDConfig,\n Provider,\n SignInOptions\n} from '../types/auth.types';\nimport {popupCenter} from '../utils/window.utils';\n\n/**\n * Options for signing in with an authentication provider.\n * @interface AuthProviderSignInOptions\n */\nexport interface AuthProviderSignInOptions {\n /**\n * The URL of the identity provider - commonly Internet Identity.\n */\n identityProvider: string;\n /**\n * Optional features for the window opener.\n */\n windowOpenerFeatures?: string;\n}\n\n/**\n * Common traits for all authentication providers\n * @interface AuthProvider\n */\nexport interface AuthProvider {\n /**\n * The unique identifier of the provider.\n */\n readonly id: Provider;\n /**\n * Method to get the sign-in options for the provider.\n * @param options - The sign-in options.\n * @returns The sign-in options for the provider that can be use to effectively perform a sign-in.\n */\n signInOptions: (options: Pick<SignInOptions, 'windowed'>) => AuthProviderSignInOptions;\n}\n\n/**\n * Internet Identity authentication provider.\n * @class InternetIdentityProvider\n * @implements {AuthProvider}\n */\nexport class InternetIdentityProvider implements AuthProvider {\n #domain?: InternetIdentityDomain;\n\n /**\n * Creates an instance of InternetIdentityProvider.\n * @param {InternetIdentityConfig} config - The configuration for Internet Identity.\n */\n constructor({domain}: InternetIdentityConfig) {\n this.#domain = domain;\n }\n\n /**\n * Gets the identifier of the provider.\n * @returns {Provider} The identifier of the provider - `internet_identity`.\n */\n get id(): Provider {\n return 'internet_identity';\n }\n\n /**\n * Gets the sign-in options for Internet Identity.\n * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.\n * @returns {AuthProviderSignInOptions} The sign-in options for Internet Identity.\n */\n signInOptions({windowed}: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions {\n const identityProviderUrl = (): string => {\n const container = EnvStore.getInstance().get()?.container;\n\n // Production\n if (isNullish(container) || container === false) {\n return `https://identity.${this.#domain ?? INTERNET_COMPUTER_ORG}`;\n }\n\n const env = EnvStore.getInstance().get();\n\n const internetIdentityId =\n nonNullish(env) && nonNullish(env?.internetIdentityId)\n ? env.internetIdentityId\n : DOCKER_INTERNET_IDENTITY_ID;\n\n const {host: containerHost, protocol} = new URL(\n container === true ? DOCKER_CONTAINER_URL : container\n );\n\n return /apple/i.test(navigator?.vendor)\n ? `${protocol}//${containerHost}?canisterId=${internetIdentityId}`\n : `${protocol}//${internetIdentityId}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n };\n\n return {\n ...(windowed !== false && {\n windowOpenerFeatures: popupCenter(II_POPUP)\n }),\n identityProvider: identityProviderUrl()\n };\n }\n}\n\n/**\n * NFID authentication provider.\n * @class NFIDProvider\n * @implements {AuthProvider}\n */\nexport class NFIDProvider implements AuthProvider {\n #appName: string;\n #logoUrl: string;\n\n /**\n * Creates an instance of NFIDProvider.\n * @param {NFIDConfig} config - The configuration for NFID.\n */\n constructor({appName, logoUrl}: NFIDConfig) {\n this.#appName = appName;\n this.#logoUrl = logoUrl;\n }\n\n /**\n * Gets the identifier of the provider.\n * @returns {Provider} The identifier of the provider- nfid.\n */\n get id(): Provider {\n return 'nfid';\n }\n\n /**\n * Gets the sign-in options for NFID.\n * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.\n * @returns {AuthProviderSignInOptions} The sign-in options to effectively sign-in with NFID.\n */\n signInOptions({windowed}: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions {\n return {\n ...(windowed !== false && {\n windowOpenerFeatures: popupCenter(NFID_POPUP)\n }),\n identityProvider: `https://nfid.one/authenticate/?applicationName=${encodeURI(\n this.#appName\n )}&applicationLogo=${encodeURI(this.#logoUrl)}`\n };\n }\n}\n", "export const DOCKER_CONTAINER_URL = 'http://127.0.0.1:5987';\nexport const DOCKER_INTERNET_IDENTITY_ID = 'rdmx6-jaaaa-aaaaa-aaadq-cai';\n", "import type {Environment} from '../types/env.types';\nimport {Store} from './store';\n\nexport class EnvStore extends Store<Environment | undefined> {\n private static instance: EnvStore;\n\n private env: Environment | undefined;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!EnvStore.instance) {\n EnvStore.instance = new EnvStore();\n }\n return EnvStore.instance;\n }\n\n set(env: Environment | undefined) {\n this.env = env;\n\n this.populate(env);\n }\n\n get(): Environment | undefined {\n return this.env;\n }\n\n override subscribe(callback: (data: Environment | null | undefined) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.env);\n\n return unsubscribe;\n }\n}\n", "import {isNullish} from '@dfinity/utils';\nimport {isBrowser} from '@junobuild/utils';\n\nexport const popupCenter = ({\n width,\n height\n}: {\n width: number;\n height: number;\n}): string | undefined => {\n if (!isBrowser()) {\n return undefined;\n }\n\n if (isNullish(window) || isNullish(window.top)) {\n return undefined;\n }\n\n const {\n top: {innerWidth, innerHeight}\n } = window;\n\n const y = innerHeight / 2 + screenY - height / 2;\n const x = innerWidth / 2 + screenX - width / 2;\n\n return `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=${width}, height=${height}, top=${y}, left=${x}`;\n};\n", "import {jsonReplacer, jsonReviver} from '@dfinity/utils';\n\n/**\n * Converts data to a Uint8Array for transmission or storage.\n * @template T\n * @param {T} data - The data to convert.\n * @returns {Promise<Uint8Array>} A promise that resolves to a Uint8Array representation of the data.\n */\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data, jsonReplacer)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\n/**\n * Converts a Uint8Array or number array back to the original data type.\n * @template T\n * @param {(Uint8Array | number[])} data - The array to convert.\n * @returns {Promise<T>} A promise that resolves to the original data.\n */\nexport const fromArray = async <T>(data: Uint8Array | number[]): Promise<T> => {\n const blob: Blob = new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text(), jsonReviver);\n};\n", "/**\n * Checks if the current environment is a browser.\n * @returns {boolean} True if the current environment is a browser, false otherwise.\n */\nexport const isBrowser = (): boolean => typeof window !== `undefined`;\n", "import {Actor, type ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {isNullish} from '@dfinity/utils';\nimport type {BuildType} from '../types/build.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {AgentStore} from './agent.store';\n\ntype ActorParams = {\n idlFactory: IDL.InterfaceFactory;\n} & Required<Pick<Satellite, 'satelliteId' | 'identity'>> &\n Pick<Satellite, 'container'>;\n\ntype ActorRecord = Record<string, ActorMethod>;\n\nexport class ActorStore {\n private static instance: ActorStore;\n\n #actors: Record<string, ActorSubclass<ActorRecord>> | undefined | null = undefined;\n\n private constructor() {}\n\n static getInstance() {\n if (isNullish(ActorStore.instance)) {\n ActorStore.instance = new ActorStore();\n }\n return ActorStore.instance;\n }\n\n async getActor<T = ActorRecord>({\n satelliteId,\n identity,\n buildType,\n ...rest\n }: ActorParams & {buildType: BuildType}): Promise<ActorSubclass<T>> {\n const key = `${buildType}#${identity.getPrincipal().toText()}#${satelliteId};`;\n\n if (isNullish(this.#actors) || isNullish(this.#actors[key])) {\n const actor = await this.createActor({satelliteId, identity, ...rest});\n\n this.#actors = {\n ...(this.#actors ?? {}),\n [key]: actor\n };\n\n return actor as ActorSubclass<T>;\n }\n\n return this.#actors[key] as ActorSubclass<T>;\n }\n\n reset() {\n this.#actors = null;\n }\n\n private async createActor<T = ActorRecord>({\n idlFactory,\n satelliteId: canisterId,\n ...rest\n }: ActorParams): Promise<ActorSubclass<T>> {\n const agent = await AgentStore.getInstance().getAgent(rest);\n\n return Actor.createActor(idlFactory, {\n agent,\n canisterId\n });\n }\n}\n", "import {HttpAgent, type Agent} from '@dfinity/agent';\nimport {isNullish, nonNullish} from '@dfinity/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport type {Satellite} from '../types/satellite.types';\n\ntype AgentParams = Required<Pick<Satellite, 'identity'>> & Pick<Satellite, 'container'>;\n\nexport class AgentStore {\n private static instance: AgentStore;\n\n #agents: Record<string, HttpAgent> | undefined | null = undefined;\n\n private constructor() {}\n\n static getInstance() {\n if (isNullish(AgentStore.instance)) {\n AgentStore.instance = new AgentStore();\n }\n return AgentStore.instance;\n }\n\n async getAgent({identity, ...rest}: AgentParams): Promise<Agent> {\n const key = identity.getPrincipal().toText();\n\n if (isNullish(this.#agents) || isNullish(this.#agents[key])) {\n const agent = await this.createAgent({identity, ...rest});\n\n this.#agents = {\n ...(this.#agents ?? {}),\n [key]: agent\n };\n\n return agent;\n }\n\n return this.#agents[key];\n }\n\n reset() {\n this.#agents = null;\n }\n\n private async createAgent({identity, container}: AgentParams): Promise<HttpAgent> {\n const localActor = nonNullish(container) && container !== false;\n\n const host = localActor\n ? container === true\n ? DOCKER_CONTAINER_URL\n : container\n : 'https://icp-api.io';\n\n const shouldFetchRootKey = nonNullish(container);\n\n return await HttpAgent.create({\n identity,\n shouldFetchRootKey,\n host\n });\n }\n}\n", "export class SignInError extends Error {}\nexport class SignInInitError extends Error {}\nexport class SignInUserInterruptError extends Error {}\n\nexport class InitError extends Error {}\n\nexport class ListError extends Error {}\n", "import {AuthClient} from '@dfinity/auth-client';\n\nexport const createAuthClient = (): Promise<AuthClient> =>\n AuthClient.create({\n idleOptions: {\n disableIdle: true,\n disableDefaultIdleCallback: true\n }\n });\n", "import type {Identity} from '@dfinity/agent';\nimport {isNullish, nonNullish} from '@dfinity/utils';\nimport {isSatelliteError, JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE} from '@junobuild/errors';\nimport type {Provider, User, UserData} from '../types/auth.types';\nimport {InitError} from '../types/errors.types';\nimport {getIdentity} from './auth.services';\nimport {getDoc, setDoc} from './doc.services';\n\nexport const initUser = async (provider?: Provider): Promise<User> => {\n const identity: Identity | undefined = getIdentity();\n\n if (isNullish(identity)) {\n throw new InitError('No identity to initialize the user. Have you initialized Juno?');\n }\n\n const userId = identity.getPrincipal().toText();\n\n const loadUser = (): Promise<User | undefined> =>\n getDoc<UserData>({\n collection: `#user`,\n key: userId\n });\n\n const user = await loadUser();\n\n if (nonNullish(user)) {\n return user;\n }\n\n try {\n return await createUser({userId, provider});\n } catch (error: unknown) {\n // When a user signs in for the first time and get user returns `undefined`,\n // a new user entry is created. If the browser is reloaded and get user\n // still returns `undefined`, another try is made to create user entry, which is not\n // allowed since only the controller can update users, assuming the entry has been\n // created in the meantime. To prevent errors, we reload the user data,\n // as the issue indicates the user entity exists.\n if (isSatelliteError({error, type: JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE})) {\n const userOnCreateError = await loadUser();\n\n if (nonNullish(userOnCreateError)) {\n return userOnCreateError;\n }\n }\n\n throw error;\n }\n};\n\nconst createUser = ({\n userId,\n ...rest\n}: {\n userId: string;\n} & UserData): Promise<User> =>\n setDoc<UserData>({\n collection: `#user`,\n doc: {\n key: userId,\n data: rest\n }\n });\n", "export const isSatelliteError = ({error, type}: {error: unknown; type: string}): boolean => {\n if (typeof error === 'string') {\n return error.includes(type);\n }\n\n if (error instanceof Error) {\n return error.message.includes(type);\n }\n\n return false;\n};\n", "export const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT = 'juno.cdn.proposals.error.cannot_submit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_submit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT = 'juno.cdn.proposals.error.cannot_reject';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_reject_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT = 'juno.cdn.proposals.error.cannot_commit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_commit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_INVALID_HASH = 'juno.cdn.proposals.error.invalid_hash';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_UNKNOWN_TYPE = 'juno.cdn.proposals.error.unknown_type';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_EMPTY_CONTENT_CHUNKS =\n 'juno.cdn.proposals.error.empty_content_chunks';\nexport const JUNO_CDN_PROPOSALS_ERROR_NOT_CONTENT_CHUNKS_AT_INDEX =\n 'juno.cdn.proposals.error.no_content_chunks_at_index';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_EMPTY_ASSETS = 'juno.cdn.proposals.error.empty_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS =\n 'juno.cdn.proposals.error.cannot_delete_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_delete_assets_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_CONVERT = 'juno.cdn.proposals.error.next_id_convert';\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_OVERFLOW =\n 'juno.cdn.proposals.error.next_id_overflow';\n\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_insert_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_GET_ASSET_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_get_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_ENCODING_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_insert_asset_encoding_unknown_reference_id';\n\nexport const JUNO_CDN_STORAGE_ERROR_NO_PROPOSAL_FOUND = 'juno.cdn.storage.error.no_proposal_found';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_PATH =\n 'juno.cdn.storage.error.invalid_releases_path';\n\nexport const JUNO_CDN_STORAGE_ERROR_MISSING_RELEASES_DESCRIPTION =\n 'juno.cdn.storage.error.missing_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_DESCRIPTION =\n 'juno.cdn.storage.error.invalid_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_COLLECTION =\n 'juno.cdn.storage.error.invalid_collection';\n", "export const JUNO_COLLECTIONS_ERROR_MODIFY_RESERVED_COLLECTION =\n 'juno.collections.error.modify_reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_NAME = 'juno.collections.error.reserved_name';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_COLLECTION =\n 'juno.collections.error.reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RATE_CONFIG_ENABLED =\n 'juno.collections.error.rate_config_enabled';\nexport const JUNO_COLLECTIONS_ERROR_DELETE_PREFIX_RESERVED =\n 'juno.collections.error.prefix_deletion';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_EMPTY = 'juno.collections.error.not_empty';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_FOUND = 'juno.collections.error.not_found';\nexport const JUNO_COLLECTIONS_ERROR_PREFIX_RESERVED = 'juno.collections.error.prefix_reserved';\n", "export const JUNO_ERROR_NO_TIMESTAMP_PROVIDED = 'juno.error.no_timestamp_provided';\nexport const JUNO_ERROR_TIMESTAMP_OUTDATED_OR_FUTURE = 'juno.error.timestamp_outdated_or_future';\nexport const JUNO_ERROR_NO_VERSION_PROVIDED = 'juno.error.no_version_provided';\nexport const JUNO_ERROR_VERSION_OUTDATED_OR_FUTURE = 'juno.error.version_outdated_or_future';\n\nexport const JUNO_DATASTORE_ERROR_CANNOT_WRITE = 'juno.datastore.error.cannot_write';\nexport const JUNO_DATASTORE_ERROR_CANNOT_READ = 'juno.datastore.error.cannot_read';\n\nexport const JUNO_STORAGE_ERROR_UPLOAD_NOT_ALLOWED = 'juno.storage.error.upload_not_allowed';\nexport const JUNO_STORAGE_ERROR_SET_NOT_ALLOWED = 'juno.storage.error.set_not_allowed';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_INVALID_COLLECTION =\n 'juno.storage.error.cannot_commit_invalid_collection';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_BATCH = 'juno.storage.error.cannot_commit_batch';\nexport const JUNO_STORAGE_ERROR_ASSET_NOT_FOUND = 'juno.storage.error.asset_not_found';\nexport const JUNO_STORAGE_ERROR_CANNOT_READ_ASSET = 'juno.storage.error.cannot_read_asset';\nexport const JUNO_STORAGE_ERROR_UPLOAD_PATH_COLLECTION_PREFIX =\n 'juno.storage.error.upload_path_collection_prefix';\nexport const JUNO_STORAGE_ERROR_RESERVED_ASSET = 'juno.storage.error.reserved_asset';\nexport const JUNO_STORAGE_ERROR_BATCH_NOT_FOUND = 'juno.storage.error.batch_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_FOUND = 'juno.storage.error.chunk_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_INCLUDED_IN_BATCH =\n 'juno.storage.error.chunk_not_included_in_batch';\nexport const JUNO_STORAGE_ERROR_CHUNK_TO_COMMIT_NOT_FOUND =\n 'juno.storage.error.chunk_to_commit_not_found';\nexport const JUNO_STORAGE_ERROR_ASSET_MAX_ALLOWED_SIZE =\n 'juno.storage.error.asset_max_allowed_size';\n\nexport const JUNO_AUTH_ERROR_NOT_ADMIN_CONTROLLER = 'juno.auth.error.not_admin_controller';\nexport const JUNO_AUTH_ERROR_INVALID_ORIGIN = 'juno.auth.error.invalid_origin';\nexport const JUNO_AUTH_ERROR_NOT_WRITE_CONTROLLER = 'juno.auth.error.not_write_controller';\nexport const JUNO_AUTH_ERROR_NOT_CONTROLLER = 'juno.auth.error.not_controller';\n\nexport const JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE = 'juno.datastore.error.user.cannot_update';\nexport const JUNO_DATASTORE_ERROR_USER_INVALID_DATA = 'juno.datastore.error.user.invalid_data';\nexport const JUNO_DATASTORE_ERROR_USER_CALLER_KEY = 'juno.datastore.error.user.caller_key';\nexport const JUNO_DATASTORE_ERROR_USER_KEY_NO_PRINCIPAL =\n 'juno.datastore.error.user.key_no_principal';\nexport const JUNO_DATASTORE_ERROR_USER_NOT_ALLOWED = 'juno.datastore.error.user.not_allowed';\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_CHANGE_LIMIT_REACHED =\n 'juno.datastore.error.user.usage.change_limit_reached';\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_INVALID_DATA =\n 'juno.datastore.error.user.usage.invalid_data';\n", "export const JUNO_ERROR_CONTROLLERS_MAX_NUMBER = 'juno.error.controllers.max_number';\nexport const JUNO_ERROR_CONTROLLERS_ANONYMOUS_NOT_ALLOWED =\n 'juno.error.controllers.anonymous_not_allowed';\nexport const JUNO_ERROR_CONTROLLERS_REVOKED_NOT_ALLOWED =\n 'juno.error.controllers.revoked_not_allowed';\n\nexport const JUNO_ERROR_MEMORY_STABLE_EXCEEDED = 'juno.error.memory.stable_exceeded';\nexport const JUNO_ERROR_MEMORY_HEAP_EXCEEDED = 'juno.error.memory.heap_exceeded';\n\nexport const JUNO_ERROR_CYCLES_DEPOSIT_BALANCE_LOW = 'juno.error.cycles.deposit_balance_low';\nexport const JUNO_ERROR_CYCLES_DEPOSIT_FAILED = 'juno.error.cycles.deposit_failed';\n\nexport const JUNO_ERROR_CANISTER_CREATE_FAILED = 'juno.error.canister.create_failed';\nexport const JUNO_ERROR_CANISTER_INSTALL_CODE_FAILED = 'juno.error.canister.install_code_failed';\n\nexport const JUNO_ERROR_SEGMENT_STOP_FAILED = 'juno.error.segment.stop_failed';\nexport const JUNO_ERROR_SEGMENT_DELETE_FAILED = 'juno.error.segment.delete_failed';\n\nexport const JUNO_ERROR_CMC_CALL_LEDGER_FAILED = 'juno.error.cmc.call_ledger_failed';\nexport const JUNO_ERROR_CMC_LEDGER_TRANSFER_FAILED = 'juno.error.cmc.ledger_transfer_failed';\nexport const JUNO_ERROR_CMC_TOP_UP_FAILED = 'juno.error.cmc.top_up_failed';\nexport const JUNO_ERROR_CMC_CALL_CREATE_CANISTER_FAILED =\n 'juno.error.cmc.call_create_canister_failed';\nexport const JUNO_ERROR_CMC_CREATE_CANISTER_FAILED = 'juno.error.cmc.create_canister_failed';\nexport const JUNO_ERROR_CMC_INSTALL_CODE_FAILED = 'juno.error.cmc.install_code_failed';\n\nexport const JUNO_ERROR_INVALID_REGEX = 'juno.error.invalid_regex';\n", "import {fromNullable, isNullish, nonNullish} from '@dfinity/utils';\nimport type {DelDoc, SetDoc} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport type {ExcludeDate} from '../types/utility.types';\nimport {mapData} from '../utils/data.utils';\nimport {fromDoc, toDelDoc, toSetDoc} from '../utils/doc.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const getDoc = async <D>({\n collection,\n key,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const {get_doc} = await getSatelliteActor(satellite);\n\n const doc = fromNullable(await get_doc(collection, key));\n\n if (isNullish(doc)) {\n return undefined;\n }\n\n return fromDoc({doc, key});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n docs,\n satellite\n}: {\n docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n satellite: Satellite;\n}): Promise<(Doc<any> | undefined)[]> => {\n const {get_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = docs.map(({collection, key}) => [collection, key]);\n\n const resultsDocs = await get_many_docs(payload);\n\n const results: (Doc<any> | undefined)[] = [];\n for (const [key, resultDoc] of resultsDocs) {\n const doc = fromNullable(resultDoc);\n results.push(nonNullish(doc) ? await fromDoc({key, doc}) : undefined);\n }\n\n return results;\n};\n/* eslint-enable */\n\nexport const setDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<Doc<D>> => {\n const {set_doc} = await getSatelliteActor(satellite);\n\n const {key} = doc;\n\n const setDoc = await toSetDoc(doc);\n\n const updatedDoc = await set_doc(collection, key, setDoc);\n\n return await fromDoc({key, doc: updatedDoc});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n docs,\n satellite\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite: Satellite;\n}): Promise<Doc<any>[]> => {\n const {set_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string, SetDoc][] = [];\n for (const {collection, doc} of docs) {\n const {key} = doc;\n payload.push([collection, key, await toSetDoc(doc)]);\n }\n\n const updatedDocs = await set_many_docs(payload);\n\n const results: Doc<any>[] = [];\n for (const [key, updatedDoc] of updatedDocs) {\n results.push(await fromDoc({key, doc: updatedDoc}));\n }\n\n return results;\n};\n/* eslint-enable */\n\nexport const deleteDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<void> => {\n const {del_doc} = await getSatelliteActor(satellite);\n\n const {key} = doc;\n\n return del_doc(collection, key, toDelDoc(doc));\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n docs,\n satellite\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite: Satellite;\n}): Promise<void> => {\n const {del_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string, DelDoc][] = docs.map(({collection, doc}) => [\n collection,\n doc.key,\n toDelDoc(doc)\n ]);\n\n await del_many_docs(payload);\n};\n/* eslint-enable */\n\nexport const deleteFilteredDocs = async ({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<void> => {\n const {del_filtered_docs} = await getSatelliteActor(satellite);\n\n return del_filtered_docs(collection, toListParams(filter));\n};\n\nexport const listDocs = async <D>({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<ListResults<Doc<D>>> => {\n const {list_docs} = await getSatelliteActor(satellite);\n\n const {items, items_page, items_length, matches_length, matches_pages} = await list_docs(\n collection,\n toListParams(filter)\n );\n\n const docs: Doc<D>[] = [];\n\n for (const [key, item] of items) {\n const {data: dataArray, owner, description, version, ...rest} = item;\n\n docs.push({\n key,\n description: fromNullable(description),\n owner: owner.toText(),\n data: await mapData<ExcludeDate<D>>({data: dataArray}),\n version: fromNullable(version),\n ...rest\n });\n }\n\n return {\n items: docs,\n items_length,\n items_page: fromNullable(items_page),\n matches_length,\n matches_pages: fromNullable(matches_pages)\n };\n};\n\nexport const countDocs = async ({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<bigint> => {\n const {count_docs} = await getSatelliteActor(satellite);\n\n return count_docs(collection, toListParams(filter));\n};\n", "import {fromArray} from '@junobuild/utils';\nimport type {Doc} from '../../declarations/satellite/satellite.did';\n\nexport const mapData = async <D>({data}: Pick<Doc, 'data'>): Promise<D> => {\n try {\n return await fromArray<D>(data);\n } catch (err: unknown) {\n console.error('The data parsing has failed, mapping to undefined as a fallback.', err);\n return undefined as D;\n }\n};\n", "import {fromNullable, toNullable} from '@dfinity/utils';\nimport {fromArray, toArray} from '@junobuild/utils';\nimport type {DelDoc, Doc as DocApi, SetDoc} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ExcludeDate} from '../types/utility.types';\n\nexport const toSetDoc = async <D>(doc: Doc<D>): Promise<SetDoc> => {\n const {data, version, description} = doc;\n\n return {\n description: toNullable(description),\n data: await toArray<ExcludeDate<D>>(data),\n version: toNullable(version)\n };\n};\n\nexport const toDelDoc = <D>(doc: Doc<D>): DelDoc => {\n const {version} = doc;\n\n return {\n version: toNullable(version)\n };\n};\n\nexport const fromDoc = async <D>({doc, key}: {doc: DocApi; key: string}): Promise<Doc<D>> => {\n const {owner, version, description: docDescription, data, ...rest} = doc;\n\n return {\n key,\n description: fromNullable(docDescription),\n owner: owner.toText(),\n data: await fromArray<ExcludeDate<D>>(data),\n version: fromNullable(version),\n ...rest\n };\n};\n", "import {Principal} from '@dfinity/principal';\nimport {isNullish, toNullable} from '@dfinity/utils';\nimport type {\n ListParams as ListParamsApi,\n TimestampMatcher\n} from '../../declarations/satellite/satellite.did';\nimport {ListError} from '../types/errors.types';\nimport type {ListParams, ListTimestampMatcher} from '../types/list.types';\n\nconst toListMatcherTimestamp = (matcher?: ListTimestampMatcher): [] | [TimestampMatcher] => {\n if (isNullish(matcher)) {\n return toNullable();\n }\n\n switch (matcher.matcher) {\n case 'equal':\n return toNullable({Equal: matcher.timestamp});\n case 'greaterThan':\n return toNullable({GreaterThan: matcher.timestamp});\n case 'lessThan':\n return toNullable({LessThan: matcher.timestamp});\n case 'between':\n return toNullable({Between: [matcher.timestamps.start, matcher.timestamps.end]});\n default:\n throw new ListError('Invalid list matcher for timestamp', matcher);\n }\n};\n\nexport const toListParams = ({matcher, paginate, order, owner}: ListParams): ListParamsApi => ({\n matcher: isNullish(matcher)\n ? []\n : [\n {\n key: toNullable(matcher.key),\n description: toNullable(matcher.description),\n created_at: toListMatcherTimestamp(matcher.createdAt),\n updated_at: toListMatcherTimestamp(matcher.updatedAt)\n }\n ],\n paginate: toNullable(\n isNullish(paginate)\n ? undefined\n : {\n start_after: toNullable(paginate.startAfter),\n limit: toNullable(isNullish(paginate.limit) ? undefined : BigInt(paginate.limit))\n }\n ),\n order: toNullable(\n isNullish(order)\n ? undefined\n : {\n desc: order.desc,\n field:\n order.field === 'created_at'\n ? {CreatedAt: null}\n : order.field === 'updated_at'\n ? {UpdatedAt: null}\n : {Keys: null}\n }\n ),\n owner: toNullable(\n isNullish(owner) ? undefined : typeof owner === 'string' ? Principal.fromText(owner) : owner\n )\n});\n", "import type {ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {assertNonNullish} from '@dfinity/utils';\nimport type {_SERVICE as SatelliteActor} from '../../declarations/satellite/satellite.did';\n// eslint-disable-next-line import/no-relative-parent-imports\nimport {idlFactory as stockIdlFactory} from '../../declarations/satellite/satellite.factory.did.js';\nimport {ActorStore} from '../stores/actor.store';\nimport type {BuildType} from '../types/build.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {customOrEnvContainer, customOrEnvSatelliteId} from '../utils/env.utils';\n\nexport const getSatelliteActor = (satellite: Satellite): Promise<SatelliteActor> =>\n getActor({\n idlFactory: stockIdlFactory,\n buildType: 'stock',\n ...satellite\n });\n\nexport const getSatelliteExtendedActor = <T = Record<string, ActorMethod>>({\n idlFactory,\n ...rest\n}: Satellite & {idlFactory: IDL.InterfaceFactory}): Promise<ActorSubclass<T>> =>\n getActor({\n idlFactory,\n buildType: 'extended',\n ...rest\n });\n\nconst getActor = async <T = Record<string, ActorMethod>>({\n satelliteId: customSatelliteId,\n container: customContainer,\n ...rest\n}: Satellite & {idlFactory: IDL.InterfaceFactory; buildType: BuildType}): Promise<\n ActorSubclass<T>\n> => {\n const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n\n assertNonNullish(satelliteId, 'No satellite ID defined. Did you initialize Juno?');\n\n const {container} = customOrEnvContainer({container: customContainer});\n\n return await ActorStore.getInstance().getActor({\n satelliteId,\n container,\n ...rest\n });\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n const CommitBatch = IDL.Record({\n batch_id: IDL.Nat,\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n chunk_ids: IDL.Vec(IDL.Nat)\n });\n const CommitProposal = IDL.Record({\n sha256: IDL.Vec(IDL.Nat8),\n proposal_id: IDL.Nat\n });\n const ListOrderField = IDL.Variant({\n UpdatedAt: IDL.Null,\n Keys: IDL.Null,\n CreatedAt: IDL.Null\n });\n const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n const TimestampMatcher = IDL.Variant({\n Equal: IDL.Nat64,\n Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n GreaterThan: IDL.Nat64,\n LessThan: IDL.Nat64\n });\n const ListMatcher = IDL.Record({\n key: IDL.Opt(IDL.Text),\n updated_at: IDL.Opt(TimestampMatcher),\n description: IDL.Opt(IDL.Text),\n created_at: IDL.Opt(TimestampMatcher)\n });\n const ListPaginate = IDL.Record({\n start_after: IDL.Opt(IDL.Text),\n limit: IDL.Opt(IDL.Nat64)\n });\n const ListParams = IDL.Record({\n order: IDL.Opt(ListOrder),\n owner: IDL.Opt(IDL.Principal),\n matcher: IDL.Opt(ListMatcher),\n paginate: IDL.Opt(ListPaginate)\n });\n const DeleteControllersArgs = IDL.Record({\n controllers: IDL.Vec(IDL.Principal)\n });\n const ControllerScope = IDL.Variant({\n Write: IDL.Null,\n Admin: IDL.Null,\n Submit: IDL.Null\n });\n const Controller = IDL.Record({\n updated_at: IDL.Nat64,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64,\n scope: ControllerScope,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n const DeleteProposalAssets = IDL.Record({\n proposal_ids: IDL.Vec(IDL.Nat)\n });\n const DepositCyclesArgs = IDL.Record({\n cycles: IDL.Nat,\n destination_id: IDL.Principal\n });\n const AssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n owner: IDL.Principal,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const AssetEncodingNoContent = IDL.Record({\n modified: IDL.Nat64,\n sha256: IDL.Vec(IDL.Nat8),\n total_length: IDL.Nat\n });\n const AssetNoContent = IDL.Record({\n key: AssetKey,\n updated_at: IDL.Nat64,\n encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64)\n });\n const AuthenticationConfigInternetIdentity = IDL.Record({\n derivation_origin: IDL.Opt(IDL.Text),\n external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n });\n const AuthenticationConfig = IDL.Record({\n internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity)\n });\n const ConfigMaxMemorySize = IDL.Record({\n stable: IDL.Opt(IDL.Nat64),\n heap: IDL.Opt(IDL.Nat64)\n });\n const DbConfig = IDL.Record({\n max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n });\n const StorageConfigIFrame = IDL.Variant({\n Deny: IDL.Null,\n AllowAny: IDL.Null,\n SameOrigin: IDL.Null\n });\n const StorageConfigRawAccess = IDL.Variant({\n Deny: IDL.Null,\n Allow: IDL.Null\n });\n const StorageConfigRedirect = IDL.Record({\n status_code: IDL.Nat16,\n location: IDL.Text\n });\n const StorageConfig = IDL.Record({\n iframe: IDL.Opt(StorageConfigIFrame),\n rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n raw_access: IDL.Opt(StorageConfigRawAccess),\n redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n });\n const Config = IDL.Record({\n db: IDL.Opt(DbConfig),\n authentication: IDL.Opt(AuthenticationConfig),\n storage: StorageConfig\n });\n const Doc = IDL.Record({\n updated_at: IDL.Nat64,\n owner: IDL.Principal,\n data: IDL.Vec(IDL.Nat8),\n description: IDL.Opt(IDL.Text),\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64)\n });\n const ProposalStatus = IDL.Variant({\n Initialized: IDL.Null,\n Failed: IDL.Null,\n Open: IDL.Null,\n Rejected: IDL.Null,\n Executed: IDL.Null,\n Accepted: IDL.Null\n });\n const AssetsUpgradeOptions = IDL.Record({\n clear_existing_assets: IDL.Opt(IDL.Bool)\n });\n const SegmentsDeploymentOptions = IDL.Record({\n orbiter: IDL.Opt(IDL.Text),\n mission_control_version: IDL.Opt(IDL.Text),\n satellite_version: IDL.Opt(IDL.Text)\n });\n const ProposalType = IDL.Variant({\n AssetsUpgrade: AssetsUpgradeOptions,\n SegmentsDeployment: SegmentsDeploymentOptions\n });\n const Proposal = IDL.Record({\n status: ProposalStatus,\n updated_at: IDL.Nat64,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n executed_at: IDL.Opt(IDL.Nat64),\n owner: IDL.Principal,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n proposal_type: ProposalType\n });\n const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n const Permission = IDL.Variant({\n Controllers: IDL.Null,\n Private: IDL.Null,\n Public: IDL.Null,\n Managed: IDL.Null\n });\n const RateConfig = IDL.Record({\n max_tokens: IDL.Nat64,\n time_per_token_ns: IDL.Nat64\n });\n const Rule = IDL.Record({\n max_capacity: IDL.Opt(IDL.Nat32),\n memory: IDL.Opt(Memory),\n updated_at: IDL.Nat64,\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n mutable_permissions: IDL.Opt(IDL.Bool),\n rate_config: IDL.Opt(RateConfig),\n write: Permission,\n max_changes_per_user: IDL.Opt(IDL.Nat32)\n });\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n certificate_version: IDL.Opt(IDL.Nat16)\n });\n const StreamingCallbackToken = IDL.Record({\n memory: Memory,\n token: IDL.Opt(IDL.Text),\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n index: IDL.Nat64,\n encoding_type: IDL.Text,\n full_path: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], ['query'])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const InitAssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n encoding_type: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n const ListResults = IDL.Record({\n matches_pages: IDL.Opt(IDL.Nat64),\n matches_length: IDL.Nat64,\n items_page: IDL.Opt(IDL.Nat64),\n items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n items_length: IDL.Nat64\n });\n const CustomDomain = IDL.Record({\n updated_at: IDL.Nat64,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n bn_id: IDL.Opt(IDL.Text)\n });\n const ListResults_1 = IDL.Record({\n matches_pages: IDL.Opt(IDL.Nat64),\n matches_length: IDL.Nat64,\n items_page: IDL.Opt(IDL.Nat64),\n items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n items_length: IDL.Nat64\n });\n const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n const ListProposalsPaginate = IDL.Record({\n start_after: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const ListProposalsParams = IDL.Record({\n order: IDL.Opt(ListProposalsOrder),\n paginate: IDL.Opt(ListProposalsPaginate)\n });\n const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n const ListProposalResults = IDL.Record({\n matches_length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n items_length: IDL.Nat64\n });\n const ListRulesMatcher = IDL.Record({include_system: IDL.Bool});\n const ListRulesParams = IDL.Record({matcher: IDL.Opt(ListRulesMatcher)});\n const ListRulesResults = IDL.Record({\n matches_length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, Rule)),\n items_length: IDL.Nat64\n });\n const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n const SetController = IDL.Record({\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n scope: ControllerScope,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const SetControllersArgs = IDL.Record({\n controller: SetController,\n controllers: IDL.Vec(IDL.Principal)\n });\n const SetDoc = IDL.Record({\n data: IDL.Vec(IDL.Nat8),\n description: IDL.Opt(IDL.Text),\n version: IDL.Opt(IDL.Nat64)\n });\n const SetRule = IDL.Record({\n max_capacity: IDL.Opt(IDL.Nat32),\n memory: IDL.Opt(Memory),\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n version: IDL.Opt(IDL.Nat64),\n mutable_permissions: IDL.Opt(IDL.Bool),\n rate_config: IDL.Opt(RateConfig),\n write: Permission,\n max_changes_per_user: IDL.Opt(IDL.Nat32)\n });\n const UploadChunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat,\n order_id: IDL.Opt(IDL.Nat)\n });\n const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n return IDL.Service({\n commit_asset_upload: IDL.Func([CommitBatch], [], []),\n commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n count_proposals: IDL.Func([], [IDL.Nat64], ['query']),\n del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n del_assets: IDL.Func([IDL.Text], [], []),\n del_controllers: IDL.Func(\n [DeleteControllersArgs],\n [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n []\n ),\n del_custom_domain: IDL.Func([IDL.Text], [], []),\n del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n del_docs: IDL.Func([IDL.Text], [], []),\n del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], ['query']),\n get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n get_config: IDL.Func([], [Config], []),\n get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], ['query']),\n get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n get_many_assets: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n ['query']\n ),\n get_many_docs: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n ['query']\n ),\n get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], ['query']),\n get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], ['query']),\n get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n http_request_streaming_callback: IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query']\n ),\n init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))], ['query']),\n list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], ['query']),\n list_rules: IDL.Func([CollectionType, ListRulesParams], [ListRulesResults], ['query']),\n memory_size: IDL.Func([], [MemorySize], ['query']),\n reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n set_auth_config: IDL.Func([AuthenticationConfig], [], []),\n set_controllers: IDL.Func(\n [SetControllersArgs],\n [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n []\n ),\n set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n set_db_config: IDL.Func([DbConfig], [], []),\n set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n set_many_docs: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n []\n ),\n set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n set_storage_config: IDL.Func([StorageConfig], [], []),\n submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n return [];\n};\n", "import {nonNullish} from '@dfinity/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\n\nexport const satelliteUrl = ({\n satelliteId: customSatelliteId,\n container: customContainer\n}: Satellite): string => {\n const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n const {container} = customOrEnvContainer({container: customContainer});\n\n if (nonNullish(container) && container !== false) {\n const {host: containerHost, protocol} = new URL(\n container === true ? DOCKER_CONTAINER_URL : container\n );\n return `${protocol}//${satelliteId ?? 'unknown'}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n }\n\n return `https://${satelliteId ?? 'unknown'}.icp0.io`;\n};\n\nexport const customOrEnvSatelliteId = ({\n satelliteId\n}: Pick<Satellite, 'satelliteId'>): Pick<Satellite, 'satelliteId'> =>\n nonNullish(satelliteId)\n ? {satelliteId}\n : (EnvStore.getInstance().get() ?? {satelliteId: undefined});\n\nexport const customOrEnvContainer = ({\n container: customContainer\n}: Pick<Satellite, 'container'>): Pick<Satellite, 'container'> =>\n nonNullish(customContainer)\n ? {container: customContainer}\n : (EnvStore.getInstance().get() ?? {container: undefined});\n", "import {AnonymousIdentity, type Identity} from '@dfinity/agent';\nimport {getIdentity as getAuthIdentity} from './auth.services';\n\nexport const getIdentity = (identity?: Identity): Identity => {\n if (identity !== undefined) {\n return identity;\n }\n\n const authIdentity: Identity | undefined = getAuthIdentity();\n\n return authIdentity ?? new AnonymousIdentity();\n};\n", "import {\n countDocs as countDocsApi,\n deleteDoc as deleteDocApi,\n deleteFilteredDocs as deleteFilteredDocsApi,\n deleteManyDocs as deleteManyDocsApi,\n getDoc as getDocApi,\n getManyDocs as getManyDocsApi,\n listDocs as listDocsApi,\n setDoc as setDocApi,\n setManyDocs as setManyDocsApi\n} from '../api/doc.api';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\n/**\n * Retrieves a single document from a collection.\n * @template D\n * @param {Object} params - The parameters for retrieving the document.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @param {string} params.key - The key of the document to retrieve.\n * @returns {Promise<Doc<D> | undefined>} A promise that resolves to the document or undefined if not found.\n */\nexport const getDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Retrieves multiple documents from a single or different collections in a single call.\n * @param {Object} params - The parameters for retrieving the documents.\n * @param {Array} params.docs - The list of documents with their collections and keys.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Array<Doc<any> | undefined>>} A promise that resolves to an array of documents or undefined if not found.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n satellite?: SatelliteOptions;\n}): Promise<(Doc<any> | undefined)[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Adds or updates a single document in a collection.\n * @template D\n * @param {Object} params - The parameters for adding or updating the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to add or update.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Doc<D>>} A promise that resolves to the added or updated document.\n */\nexport const setDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<Doc<D>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await setDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Adds or updates multiple documents in a or different collections.\n * @param {Object} params - The parameters for adding or updating the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Array<Doc<any>>>} A promise that resolves to an array of added or updated documents.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite?: SatelliteOptions;\n}): Promise<Doc<any>[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await setManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Deletes a single document from a collection.\n * @template D\n * @param {Object} params - The parameters for deleting the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to delete.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<void>} A promise that resolves when the document is deleted.\n */\nexport const deleteDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Deletes multiple documents from a or different collections.\n * @param {Object} params - The parameters for deleting the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Deletes documents from a collection with optional filtering.\n *\n * @param {Object} params - The parameters for deleting documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - The filter criteria to match documents for deletion.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n *\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\nexport const deleteFilteredDocs = async ({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteFilteredDocsApi({\n ...rest,\n filter: filter ?? {},\n satellite: {...satellite, identity}\n });\n};\n\n/**\n * Lists documents in a collection with optional filtering.\n * @template D\n * @param {Object} params - The parameters for listing the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<ListResults<Doc<D>>>} A promise that resolves to the list of documents.\n */\nexport const listDocs = async <D>({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<ListResults<Doc<D>>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await listDocsApi<D>({...rest, filter: filter ?? {}, satellite: {...satellite, identity}});\n};\n\n/**\n * Counts documents in a collection with optional filtering.\n * @param {Object} params - The parameters for counting the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<bigint>} A promise that resolves to the count of documents as a bigint.\n */\nexport const countDocs = async ({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<bigint> => {\n const identity = getIdentity(satellite?.identity);\n\n return await countDocsApi({...rest, filter: filter ?? {}, satellite: {...satellite, identity}});\n};\n", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ninterface ImportMeta {\n env: Record<string, string> | undefined;\n}\n\nexport const envSatelliteId = (): string | undefined => {\n const viteEnvSatelliteId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_SATELLITE_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_SATELLITE_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_SATELLITE_ID ?? viteEnvSatelliteId())\n : viteEnvSatelliteId();\n};\n\nexport const envContainer = (): string | undefined => {\n const viteEnvContainer = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_CONTAINER ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_CONTAINER)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_CONTAINER ?? viteEnvContainer())\n : viteEnvContainer();\n};\n", "import type {ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {getSatelliteExtendedActor as getSatelliteExtendedActorApi} from '../api/actor.api';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\nexport const getSatelliteExtendedActor = async <T = Record<string, ActorMethod>>({\n idlFactory,\n satellite\n}: {\n idlFactory: IDL.InterfaceFactory;\n satellite?: SatelliteOptions;\n}): Promise<ActorSubclass<T>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getSatelliteExtendedActorApi({\n idlFactory,\n ...satellite,\n identity\n });\n};\n", "import {fromNullable, nonNullish} from '@dfinity/utils';\nimport type {Asset, AssetEncoding, AssetKey, Storage} from '@junobuild/storage';\nimport type {AssetNoContent} from '../../declarations/satellite/satellite.did';\nimport {\n countAssets as countAssetsApi,\n deleteAsset as deleteAssetApi,\n deleteFilteredAssets as deleteFilteredAssetsApi,\n deleteManyAssets as deleteManyAssetsApi,\n getAsset as getAssetApi,\n getManyAssets as getManyAssetsApi,\n listAssets as listAssetsApi,\n uploadAsset as uploadAssetApi\n} from '../api/storage.api';\nimport type {ListParams} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport type {Assets} from '../types/storage.types';\nimport {sha256ToBase64String} from '../utils/crypto.utils';\nimport {satelliteUrl} from '../utils/env.utils';\nimport {getIdentity} from './identity.services';\n\n/**\n * Uploads a blob to the storage.\n * @param {Storage & {satellite?: SatelliteOptions}} params - The storage parameters. Satellite options are required only in NodeJS environment.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadBlob = (params: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> =>\n uploadAssetIC(params);\n\n/**\n * Uploads a file to the storage.\n * @param {Partial<Pick<Storage, 'filename'>> & Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}} params - The storage parameters. Satellite options are required only in NodeJS environment.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadFile = (\n params: Partial<Pick<Storage, 'filename'>> &\n Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}\n): Promise<AssetKey> =>\n uploadAssetIC({\n filename: params.data.name,\n ...params\n });\n\nconst uploadAssetIC = async ({\n filename: storageFilename,\n data,\n collection,\n headers = [],\n fullPath: storagePath,\n token,\n satellite: satelliteOptions,\n encoding,\n description\n}: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> => {\n const identity = getIdentity(satelliteOptions?.identity);\n\n // The IC certification does not currently support encoding\n const filename: string = decodeURI(storageFilename);\n const fullPath: string = storagePath ?? `/${collection}/${filename}`;\n\n const satellite = {...satelliteOptions, identity};\n\n await uploadAssetApi({\n data,\n filename,\n collection,\n token,\n headers,\n fullPath,\n encoding,\n satellite,\n description\n });\n\n return {\n downloadUrl: downloadUrl({\n satellite,\n assetKey: {\n fullPath,\n token\n }\n }),\n fullPath,\n name: filename\n };\n};\n\n/**\n * Lists assets in a collection with optional filtering.\n * @param {Object} params - The parameters for listing the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter parameters.\n * @returns {Promise<Assets>} A promise that resolves to the list of assets.\n */\nexport const listAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<Assets> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n const {items, ...rest} = await listAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n\n const assets = items.map(\n ({\n key: {full_path: fullPath, token: t, name, owner, description},\n headers,\n encodings,\n created_at,\n updated_at\n }: AssetNoContent) => {\n const token = fromNullable(t);\n\n return {\n fullPath,\n description: fromNullable(description),\n name,\n downloadUrl: downloadUrl({\n satellite,\n assetKey: {fullPath, token}\n }),\n token,\n headers,\n encodings: encodings.reduce<Record<string, AssetEncoding>>(\n (acc, [type, {modified, sha256, total_length}]) => ({\n ...acc,\n [type]: {\n modified,\n sha256: sha256ToBase64String(sha256),\n total_length\n }\n }),\n {}\n ),\n owner: owner.toText(),\n created_at,\n updated_at\n } as Asset;\n }\n );\n\n return {\n items: assets,\n assets,\n ...rest\n };\n};\n\n/**\n * Counts assets in a collection with optional filtering.\n * @param {Object} params - The parameters for counting the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter parameters for narrowing down the count.\n * @returns {Promise<bigint>} A promise that resolves to the count of assets as a bigint.\n */\nexport const countAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<bigint> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return await countAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n};\n\n/**\n * Deletes an asset from the storage.\n * @param {Object} params - The parameters for deleting the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {string} params.fullPath - The full path of the asset.\n * @returns {Promise<void>} A promise that resolves when the asset is deleted.\n */\nexport const deleteAsset = ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n deleteAssetApi({\n collection,\n fullPath,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\n/**\n * Deletes multiple assets from the storage.\n * @param {Object} params - The parameters for deleting the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @returns {Promise<void>} A promise that resolves when the assets are deleted.\n */\nexport const deleteManyAssets = ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n deleteManyAssetsApi({\n assets,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\n/**\n * Deletes multiple assets from a collection based on filtering criteria.\n *\n * @param {Object} params - The parameters for deleting the assets.\n * @param {string} params.collection - The name of the collection from which to delete assets.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter criteria to match assets for deletion.\n *\n * @returns {Promise<void>} A promise that resolves when the assets matching the filter criteria are deleted.\n */\nexport const deleteFilteredAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<void> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return await deleteFilteredAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n};\n\n/**\n * Retrieves an asset from the storage.\n * @param {Object} params - The parameters for retrieving the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {string} params.fullPath - The full path of the asset.\n * @returns {Promise<AssetNoContent | undefined>} A promise that resolves to the asset or undefined if not found.\n */\nexport const getAsset = async ({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<AssetNoContent | undefined> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getAssetApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Retrieves multiple assets from the storage.\n * @param {Object} params - The parameters for retrieving the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @returns {Promise<Array<AssetNoContent | undefined>>} A promise that resolves to an array of assets or undefined if not found.\n */\nexport const getManyAssets = async ({\n satellite,\n ...rest\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite?: SatelliteOptions;\n}): Promise<(AssetNoContent | undefined)[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getManyAssetsApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Generates a download URL for a given asset.\n *\n * @param {Object} params - The parameters for generating the download URL.\n * @param {Object} params.assetKey - The key details of the asset.\n * @param {string} params.assetKey.fullPath - The full path of the asset.\n * @param {string} params.assetKey.token - The access token for the asset.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n *\n * @returns {string} The generated download URL.\n */\nexport const downloadUrl = ({\n assetKey: {fullPath, token},\n satellite: satelliteOptions\n}: {\n assetKey: Pick<Asset, 'fullPath' | 'token'>;\n} & {satellite?: SatelliteOptions}): string => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return `${satelliteUrl(satellite)}${fullPath}${nonNullish(token) ? `?token=${token}` : ''}`;\n};\n", "import {fromNullable} from '@dfinity/utils';\nimport {\n uploadAsset as uploadAssetStorage,\n type AssetKey,\n type UploadAsset\n} from '@junobuild/storage';\nimport type {\n AssetNoContent,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const uploadAsset = async ({\n satellite,\n ...asset\n}: UploadAsset & {satellite: Satellite}): Promise<void> => {\n const actor = await getSatelliteActor(satellite);\n\n await uploadAssetStorage({\n actor,\n asset\n });\n};\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<ListResults<AssetNoContent>> => {\n const {list_assets} = await getSatelliteActor(satellite);\n\n const {\n items: assets,\n items_length,\n items_page,\n matches_length,\n matches_pages\n } = await list_assets(collection, toListParams(filter));\n\n return {\n items: assets.map(([_, asset]) => asset),\n items_length,\n items_page: fromNullable(items_page),\n matches_length,\n matches_pages: fromNullable(matches_pages)\n };\n};\n\nexport const countAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<bigint> => {\n const {count_assets} = await getSatelliteActor(satellite);\n\n return count_assets(collection, toListParams(filter));\n};\n\nexport const deleteAsset = async ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n return actor.del_asset(collection, fullPath);\n};\n\nexport const deleteManyAssets = async ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite: Satellite;\n}): Promise<void> => {\n const {del_many_assets} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n collection,\n fullPath\n ]);\n\n await del_many_assets(payload);\n};\n\nexport const deleteFilteredAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<void> => {\n const {del_filtered_assets} = await getSatelliteActor(satellite);\n\n return del_filtered_assets(collection, toListParams(filter));\n};\n\nexport const getAsset = async ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<AssetKey, 'fullPath'>): Promise<AssetNoContent | undefined> => {\n const {get_asset} = await getSatelliteActor(satellite);\n return fromNullable(await get_asset(collection, fullPath));\n};\n\nexport const getManyAssets = async ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite: Satellite;\n}): Promise<(AssetNoContent | undefined)[]> => {\n const {get_many_assets} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n collection,\n fullPath\n ]);\n\n const resultsAssets = await get_many_assets(payload);\n\n return resultsAssets.map(([_, resultAsset]) => fromNullable(resultAsset));\n};\n", "import {toNullable} from '@dfinity/utils';\nimport {isBrowser} from '@junobuild/utils';\nimport type {\n _SERVICE as ConsoleActor,\n CommitBatch as ConsoleCommitBatch,\n InitAssetKey as ConsoleInitAssetKey,\n UploadChunk as ConsoleUploadChunk\n} from '../../declarations/console/console.did';\nimport type {\n _SERVICE as SatelliteActor,\n CommitBatch as SatelliteCommitBatch,\n InitAssetKey as SatelliteInitAssetKey,\n UploadChunk as SatelliteUploadChunk\n} from '../../declarations/satellite/satellite.did';\nimport type {EncodingType, Storage} from '../types/storage.types';\n\nexport type UploadAsset = Required<Omit<Storage, 'token' | 'encoding' | 'description'>> &\n Pick<Storage, 'token' | 'encoding' | 'description'>;\n\nexport type UploadAssetActor = SatelliteActor;\nexport type UploadAssetWithProposalActor = ConsoleActor | SatelliteActor;\n\ntype InitAssetKey = SatelliteInitAssetKey | ConsoleInitAssetKey;\ntype UploadChunk = SatelliteUploadChunk | ConsoleUploadChunk;\ntype CommitBatch = SatelliteCommitBatch | ConsoleCommitBatch;\n\nexport const uploadAsset = async ({\n asset: {data, headers, ...restAsset},\n actor\n}: {\n asset: UploadAsset;\n actor: UploadAssetActor;\n}): Promise<void> => {\n const {init_asset_upload, upload_asset_chunk, commit_asset_upload} = actor;\n\n const {batch_id: batchId} = await init_asset_upload(mapInitAssetUploadParams(restAsset));\n\n const {chunkIds} = await uploadChunks({data, uploadFn: upload_asset_chunk, batchId});\n\n await commitAsset({\n commitFn: commit_asset_upload,\n batchId,\n data,\n headers,\n chunkIds\n });\n};\n\nexport const uploadAssetWithProposal = async ({\n asset: {data, headers, ...restAsset},\n proposalId,\n actor\n}: {\n asset: UploadAsset;\n proposalId: bigint;\n actor: UploadAssetWithProposalActor;\n}): Promise<void> => {\n const {init_proposal_asset_upload, upload_proposal_asset_chunk, commit_proposal_asset_upload} =\n actor;\n\n const {batch_id: batchId} = await init_proposal_asset_upload(\n mapInitAssetUploadParams(restAsset),\n proposalId\n );\n\n const {chunkIds} = await uploadChunks({data, uploadFn: upload_proposal_asset_chunk, batchId});\n\n await commitAsset({\n commitFn: commit_proposal_asset_upload,\n batchId,\n data,\n headers,\n chunkIds\n });\n};\n\nconst mapInitAssetUploadParams = ({\n filename,\n collection,\n token,\n fullPath,\n encoding,\n description\n}: Omit<UploadAsset, 'headers' | 'data'>): InitAssetKey => ({\n collection,\n full_path: fullPath,\n name: filename,\n token: toNullable<string>(token),\n encoding_type: toNullable<EncodingType>(encoding),\n description: toNullable(description)\n});\n\nconst commitAsset = async ({\n commitFn,\n batchId,\n chunkIds,\n headers,\n data\n}: {\n commitFn: (commitBatch: CommitBatch) => Promise<void>;\n batchId: bigint;\n chunkIds: UploadChunkResult[];\n} & Pick<UploadAsset, 'headers' | 'data'>) => {\n const contentType: [[string, string]] | undefined =\n headers.find(([type, _]) => type.toLowerCase() === 'content-type') === undefined &&\n data.type !== undefined &&\n data.type !== ''\n ? [['Content-Type', data.type]]\n : undefined;\n\n await commitFn({\n batch_id: batchId,\n chunk_ids: chunkIds.map(({chunk_id}: UploadChunkResult) => chunk_id),\n headers: [...headers, ...(contentType ?? [])]\n });\n};\n\nconst uploadChunks = async ({\n data,\n uploadFn,\n batchId\n}: {\n batchId: bigint;\n} & Pick<UploadAsset, 'data'> &\n Pick<UploadChunkParams, 'uploadFn'>): Promise<{chunkIds: UploadChunkResult[]}> => {\n // https://forum.dfinity.org/t/optimal-upload-chunk-size/20444/23?u=peterparker\n const chunkSize = 1900000;\n\n const uploadChunks: UploadChunkParams[] = [];\n\n // Prevent transforming chunk to arrayBuffer error: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.\n const clone: Blob = isBrowser() ? new Blob([await data.arrayBuffer()]) : data;\n\n // Split data into chunks\n let orderId = 0n;\n for (let start = 0; start < clone.size; start += chunkSize) {\n const chunk: Blob = clone.slice(start, start + chunkSize);\n\n uploadChunks.push({\n batchId,\n chunk,\n uploadFn,\n orderId\n });\n\n orderId++;\n }\n\n // Upload chunks to the IC in batch - i.e. 12 chunks uploaded at a time.\n let chunkIds: UploadChunkResult[] = [];\n for await (const results of batchUploadChunks({uploadChunks})) {\n chunkIds = [...chunkIds, ...results];\n }\n\n return {chunkIds};\n};\n\nasync function* batchUploadChunks({\n uploadChunks,\n limit = 12\n}: {\n uploadChunks: UploadChunkParams[];\n limit?: number;\n}): AsyncGenerator<UploadChunkResult[], void> {\n for (let i = 0; i < uploadChunks.length; i = i + limit) {\n const batch = uploadChunks.slice(i, i + limit);\n const result = await Promise.all(batch.map((params) => uploadChunk(params)));\n yield result;\n }\n}\n\ninterface UploadChunkResult {\n chunk_id: bigint;\n}\n\ninterface UploadChunkParams {\n batchId: bigint;\n chunk: Blob;\n uploadFn: (uploadChunk: UploadChunk) => Promise<UploadChunkResult>;\n orderId: bigint;\n}\n\nconst uploadChunk = async ({\n batchId,\n chunk,\n uploadFn,\n orderId\n}: UploadChunkParams): Promise<UploadChunkResult> =>\n uploadFn({\n batch_id: batchId,\n content: new Uint8Array(await chunk.arrayBuffer()),\n order_id: toNullable(orderId)\n });\n", "export const sha256ToBase64String = (sha256: Iterable<number>): string =>\n btoa([...sha256].map((c) => String.fromCharCode(c)).join(''));\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["assertNonNullish", "isNullish", "Store", "data", "callback", "callbackId", "id", "AuthStore", "_AuthStore", "Store", "authUser", "callback", "unsubscribe", "emit", "message", "detail", "$event", "ERROR_USER_INTERRUPT", "isNullish", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "II_POPUP", "NFID_POPUP", "INTERNET_COMPUTER_ORG", "isNullish", "nonNullish", "DOCKER_CONTAINER_URL", "DOCKER_INTERNET_IDENTITY_ID", "EnvStore", "_EnvStore", "Store", "env", "callback", "unsubscribe", "isNullish", "jsonReplacer", "jsonReviver", "toArray", "data", "blob", "fromArray", "isBrowser", "popupCenter", "width", "height", "p", "isNullish", "innerWidth", "innerHeight", "y", "x", "InternetIdentityProvider", "#domain", "domain", "windowed", "identityProviderUrl", "container", "EnvStore", "isNullish", "INTERNET_COMPUTER_ORG", "env", "internetIdentityId", "nonNullish", "DOCKER_INTERNET_IDENTITY_ID", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "popupCenter", "II_POPUP", "NFIDProvider", "#appName", "#logoUrl", "appName", "logoUrl", "NFID_POPUP", "Actor", "isNullish", "HttpAgent", "isNullish", "nonNullish", "AgentStore", "_AgentStore", "#agents", "isNullish", "identity", "rest", "key", "agent", "container", "host", "nonNullish", "DOCKER_CONTAINER_URL", "shouldFetchRootKey", "HttpAgent", "ActorStore", "_ActorStore", "#actors", "isNullish", "satelliteId", "identity", "buildType", "rest", "key", "actor", "idlFactory", "canisterId", "agent", "AgentStore", "Actor", "SignInError", "SignInInitError", "SignInUserInterruptError", "InitError", "ListError", "AuthClient", "createAuthClient", "isNullish", "nonNullish", "isSatelliteError", "error", "type", "JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE", "fromNullable", "isNullish", "nonNullish", "mapData", "data", "i", "err", "fromNullable", "toNullable", "toSetDoc", "doc", "data", "version", "description", "toNullable", "a", "toDelDoc", "fromDoc", "key", "owner", "docDescription", "rest", "fromNullable", "i", "Principal", "isNullish", "toNullable", "toListMatcherTimestamp", "matcher", "isNullish", "toNullable", "ListError", "toListParams", "paginate", "order", "owner", "Principal", "assertNonNullish", "idlFactory", "IDL", "CommitBatch", "CommitProposal", "ListOrderField", "ListOrder", "TimestampMatcher", "ListMatcher", "ListPaginate", "ListParams", "DeleteControllersArgs", "ControllerScope", "Controller", "DelDoc", "CollectionType", "DelRule", "DeleteProposalAssets", "DepositCyclesArgs", "AssetKey", "AssetEncodingNoContent", "AssetNoContent", "AuthenticationConfigInternetIdentity", "AuthenticationConfig", "ConfigMaxMemorySize", "DbConfig", "StorageConfigIFrame", "StorageConfigRawAccess", "StorageConfigRedirect", "StorageConfig", "Config", "Doc", "ProposalStatus", "AssetsUpgradeOptions", "SegmentsDeploymentOptions", "ProposalType", "Proposal", "Memory", "Permission", "RateConfig", "Rule", "HttpRequest", "StreamingCallbackToken", "StreamingStrategy", "HttpResponse", "StreamingCallbackHttpResponse", "InitAssetKey", "InitUploadResult", "ListResults", "CustomDomain", "ListResults_1", "ListProposalsOrder", "ListProposalsPaginate", "ListProposalsParams", "ProposalKey", "ListProposalResults", "ListRulesMatcher", "ListRulesParams", "ListRulesResults", "MemorySize", "SetController", "SetControllersArgs", "SetDoc", "SetRule", "UploadChunk", "UploadChunkResult", "nonNullish", "satelliteUrl", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "container", "customOrEnvContainer", "nonNullish", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "EnvStore", "getSatelliteActor", "satellite", "getActor", "idlFactory", "getSatelliteExtendedActor", "rest", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "assertNonNullish", "container", "customOrEnvContainer", "ActorStore", "getDoc", "collection", "key", "satellite", "get_doc", "getSatelliteActor", "doc", "fromNullable", "isNullish", "fromDoc", "getManyDocs", "docs", "get_many_docs", "payload", "resultsDocs", "results", "resultDoc", "nonNullish", "setDoc", "set_doc", "toSetDoc", "updatedDoc", "setManyDocs", "set_many_docs", "updatedDocs", "deleteDoc", "del_doc", "toDelDoc", "deleteManyDocs", "del_many_docs", "deleteFilteredDocs", "filter", "del_filtered_docs", "toListParams", "listDocs", "list_docs", "items", "items_page", "items_length", "matches_length", "matches_pages", "item", "dataArray", "owner", "description", "version", "rest", "mapData", "countDocs", "count_docs", "AnonymousIdentity", "getIdentity", "identity", "AnonymousIdentity", "getDoc", "satellite", "rest", "identity", "getIdentity", "getManyDocs", "setDoc", "setManyDocs", "deleteDoc", "deleteManyDocs", "deleteFilteredDocs", "filter", "listDocs", "countDocs", "initUser", "provider", "identity", "getIdentity", "isNullish", "InitError", "userId", "loadUser", "getDoc", "user", "nonNullish", "createUser", "error", "t", "e_", "userOnCreateError", "rest", "setDoc", "authClient", "initAuth", "provider", "createAuthClient", "user", "initUser", "AuthStore", "signIn", "options", "resolve", "reject", "isNullish", "SignInInitError", "InternetIdentityProvider", "error", "ERROR_USER_INTERRUPT", "SignInUserInterruptError", "SignInError", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "signOut", "ActorStore", "AgentStore", "getIdentity", "unsafeIdentity", "initAuthTimeoutWorker", "auth", "workerUrl", "worker", "timeoutSignOut", "emit", "signOut", "data", "msg", "value", "AuthStore", "user", "isNullish", "envSatelliteId", "viteEnvSatelliteId", "envContainer", "viteEnvContainer", "getSatelliteExtendedActor", "idlFactory", "satellite", "identity", "getIdentity", "fromNullable", "nonNullish", "fromNullable", "toNullable", "uploadAsset", "data", "headers", "restAsset", "actor", "init_asset_upload", "upload_asset_chunk", "commit_asset_upload", "batchId", "mapInitAssetUploadParams", "chunkIds", "uploadChunks", "commitAsset", "mapInitAssetUploadParams", "filename", "collection", "token", "fullPath", "encoding", "description", "toNullable", "commitAsset", "commitFn", "batchId", "chunkIds", "headers", "data", "contentType", "type", "_", "chunk_id", "uploadChunks", "uploadFn", "clone", "isBrowser", "orderId", "start", "chunk", "results", "batchUploadChunks", "limit", "i", "batch", "params", "uploadChunk", "uploadAsset", "satellite", "asset", "actor", "getSatelliteActor", "A", "listAssets", "collection", "filter", "list_assets", "assets", "items_length", "items_page", "matches_length", "matches_pages", "toListParams", "_", "fromNullable", "countAssets", "count_assets", "deleteAsset", "fullPath", "deleteManyAssets", "del_many_assets", "payload", "deleteFilteredAssets", "del_filtered_assets", "getAsset", "get_asset", "getManyAssets", "get_many_assets", "resultAsset", "sha256ToBase64String", "sha256", "c", "uploadBlob", "params", "uploadAssetIC", "uploadFile", "storageFilename", "data", "collection", "headers", "storagePath", "token", "satelliteOptions", "encoding", "description", "identity", "getIdentity", "filename", "fullPath", "satellite", "uploadAsset", "downloadUrl", "listAssets", "filter", "items", "rest", "assets", "t", "name", "owner", "encodings", "created_at", "updated_at", "fromNullable", "acc", "type", "modified", "sha256", "total_length", "sha256ToBase64String", "countAssets", "deleteAsset", "deleteManyAssets", "deleteFilteredAssets", "getAsset", "getManyAssets", "satelliteUrl", "nonNullish", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "assertNonNullish", "container", "envContainer", "initJuno", "initSatellite", "env", "EnvStore", "initAuth", "authSubscribe", "initAuthTimeoutWorker", "callback", "AuthStore"]
|
|
4
|
+
"sourcesContent": ["import {assertNonNullish} from '@dfinity/utils';\nimport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage} from '@junobuild/storage';\nimport {initAuthTimeoutWorker} from './services/auth-timout.services';\nimport {initAuth} from './services/auth.services';\nimport {AuthStore} from './stores/auth.store';\nimport {EnvStore} from './stores/env.store';\nimport type {User} from './types/auth.types';\nimport type {Environment, UserEnvironment} from './types/env.types';\nimport type {Unsubscribe} from './types/subscription.types';\nimport {envContainer, envSatelliteId} from './utils/window.env.utils';\nexport * from './providers/auth.providers';\nexport {getIdentityOnce, signIn, signOut, unsafeIdentity} from './services/auth.services';\nexport * from './services/doc.services';\nexport * from './services/factory.services';\nexport * from './services/storage.services';\nexport type * from './types/auth.types';\nexport type * from './types/doc.types';\nexport type * from './types/env.types';\nexport * from './types/errors.types';\nexport {ListOrder, ListPaginate, ListParams, ListResults} from './types/list.types';\nexport type * from './types/satellite.types';\nexport type * from './types/storage.types';\nexport type * from './types/subscription.types';\nexport type * from './types/utility.types';\nexport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage};\n\nconst parseEnv = (userEnv?: UserEnvironment): Environment => {\n const satelliteId = userEnv?.satelliteId ?? envSatelliteId();\n\n assertNonNullish(satelliteId, 'Satellite ID is not configured. Juno cannot be initialized.');\n\n const container = userEnv?.container ?? envContainer();\n\n return {\n satelliteId,\n internetIdentityId: userEnv?.internetIdentityId,\n workers: userEnv?.workers,\n container\n };\n};\n\n/**\n * Initializes Juno with the provided optional environment parameters.\n * If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @deprecated Use {@link initSatellite} instead.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration.\n * @returns {Promise<Unsubscribe[]>} A promise that resolves to an array of unsubscribe functions.\n */\nexport const initJuno = (userEnv?: UserEnvironment): Promise<Unsubscribe[]> =>\n initSatellite(userEnv);\n\n/**\n * Initializes a Juno satellite with the provided optional environment parameters.\n * If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration.\n * @returns {Promise<Unsubscribe[]>} A promise that resolves to an array of unsubscribe functions.\n */\nexport const initSatellite = async (userEnv?: UserEnvironment): Promise<Unsubscribe[]> => {\n const env = parseEnv(userEnv);\n\n EnvStore.getInstance().set(env);\n\n await initAuth();\n\n const authSubscribe =\n env.workers?.auth !== undefined ? initAuthTimeoutWorker(env.workers.auth) : undefined;\n\n return [...(authSubscribe ? [authSubscribe] : [])];\n};\n\n/**\n * Subscribes to authentication state changes. i.e. each time a user signs in or signs out, the callback will be triggered.\n * @param {function(User | null): void} callback - The callback function to execute when the authentication state changes.\n * @returns {Unsubscribe} A function to unsubscribe from the authentication state changes.\n */\nexport const authSubscribe = (callback: (authUser: User | null) => void): Unsubscribe =>\n AuthStore.getInstance().subscribe(callback);\n", "import {isNullish} from '@dfinity/utils';\nimport {AuthStore} from '../stores/auth.store';\nimport type {User} from '../types/auth.types';\nimport type {EnvironmentWorker} from '../types/env.types';\nimport type {PostMessage, PostMessageDataResponseAuth} from '../types/post-message';\nimport type {Unsubscribe} from '../types/subscription.types';\nimport {emit} from '../utils/events.utils';\nimport {signOut} from './auth.services';\n\nexport const initAuthTimeoutWorker = (auth: EnvironmentWorker): Unsubscribe => {\n const workerUrl = auth === true ? './workers/auth.worker.js' : auth;\n const worker = new Worker(workerUrl);\n\n const timeoutSignOut = async () => {\n emit({message: 'junoSignOutAuthTimer'});\n await signOut();\n };\n\n worker.onmessage = async ({data}: MessageEvent<PostMessage<PostMessageDataResponseAuth>>) => {\n const {msg, data: value} = data;\n\n switch (msg) {\n case 'junoSignOutAuthTimer':\n await timeoutSignOut();\n return;\n case 'junoDelegationRemainingTime':\n emit({message: 'junoDelegationRemainingTime', detail: value?.authRemainingTime});\n return;\n }\n };\n\n return AuthStore.getInstance().subscribe((user: User | null) => {\n if (isNullish(user)) {\n worker.postMessage({msg: 'junoStopAuthTimer'});\n return;\n }\n\n worker.postMessage({msg: 'junoStartAuthTimer'});\n });\n};\n", "export abstract class Store<T> {\n private callbacks: {id: symbol; callback: (data: T | null) => void}[] = [];\n\n protected populate(data: T | null) {\n this.callbacks.forEach(({callback}: {id: symbol; callback: (data: T | null) => void}) =>\n callback(data)\n );\n }\n\n subscribe(callback: (data: T | null) => void): () => void {\n const callbackId = Symbol();\n this.callbacks.push({id: callbackId, callback});\n\n return () =>\n (this.callbacks = this.callbacks.filter(\n ({id}: {id: symbol; callback: (data: T | null) => void}) => id !== callbackId\n ));\n }\n}\n", "import type {User} from '../types/auth.types';\nimport type {Unsubscribe} from '../types/subscription.types';\nimport {Store} from './store';\n\nexport class AuthStore extends Store<User | null> {\n private static instance: AuthStore;\n\n private authUser: User | null = null;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!AuthStore.instance) {\n AuthStore.instance = new AuthStore();\n }\n return AuthStore.instance;\n }\n\n set(authUser: User | null) {\n this.authUser = authUser;\n\n this.populate(authUser);\n }\n\n get(): User | null {\n return this.authUser;\n }\n\n override subscribe(callback: (data: User | null) => void): Unsubscribe {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.authUser);\n\n return unsubscribe;\n }\n\n reset() {\n this.authUser = null;\n\n this.populate(this.authUser);\n }\n}\n", "export const emit = <T>({message, detail}: {message: string; detail?: T | undefined}) => {\n const $event: CustomEvent<T> = new CustomEvent<T>(message, {detail, bubbles: true});\n document.dispatchEvent($event);\n};\n", "import type {Identity} from '@dfinity/agent';\nimport {type AuthClient, ERROR_USER_INTERRUPT} from '@dfinity/auth-client';\nimport {isNullish} from '@dfinity/utils';\nimport {\n ALLOW_PIN_AUTHENTICATION,\n DELEGATION_IDENTITY_EXPIRATION\n} from '../constants/auth.constants';\nimport {InternetIdentityProvider} from '../providers/auth.providers';\nimport {ActorStore} from '../stores/actor.store';\nimport {AgentStore} from '../stores/agent.store';\nimport {AuthStore} from '../stores/auth.store';\nimport type {Provider, SignInOptions} from '../types/auth.types';\nimport {SignInError, SignInInitError, SignInUserInterruptError} from '../types/errors.types';\nimport {createAuthClient} from '../utils/auth.utils';\nimport {initUser} from './user.services';\n\nlet authClient: AuthClient | undefined | null;\n\nexport const initAuth = async (provider?: Provider) => {\n authClient = authClient ?? (await createAuthClient());\n\n const isAuthenticated: boolean = (await authClient?.isAuthenticated()) ?? false;\n\n if (!isAuthenticated) {\n return;\n }\n\n const user = await initUser(provider);\n AuthStore.getInstance().set(user);\n};\n\n/**\n * Signs in a user with the specified options.\n *\n * @param {SignInOptions} [options] - The options for signing in.\n * @returns {Promise<void>} A promise that resolves when the sign-in process is complete and the authenticated user is initialized.\n * @throws {SignInError} If the sign-in process fails or no authentication client is available.\n */\nexport const signIn = (options?: SignInOptions): Promise<void> =>\n /* eslint-disable no-async-promise-executor */\n new Promise<void>(async (resolve, reject) => {\n if (isNullish(authClient)) {\n reject(\n new SignInInitError(\n 'No client is ready to perform a sign-in. Have you initialized the Satellite?'\n )\n );\n return;\n }\n\n const provider = options?.provider ?? new InternetIdentityProvider({});\n\n await authClient.login({\n onSuccess: async () => {\n await initAuth(provider.id);\n resolve();\n },\n onError: (error?: string) => {\n if (error === ERROR_USER_INTERRUPT) {\n reject(new SignInUserInterruptError(error));\n return;\n }\n\n reject(new SignInError(error));\n },\n maxTimeToLive: options?.maxTimeToLive ?? DELEGATION_IDENTITY_EXPIRATION,\n allowPinAuthentication: options?.allowPin ?? ALLOW_PIN_AUTHENTICATION,\n ...(options?.derivationOrigin !== undefined && {derivationOrigin: options.derivationOrigin}),\n ...provider.signInOptions({\n windowed: options?.windowed\n })\n });\n });\n\n/**\n * Signs out the current user.\n * @returns {Promise<void>} A promise that resolves when the sign-out process is complete.\n */\nexport const signOut = async (): Promise<void> => {\n await authClient?.logout();\n\n // Reset local object otherwise next sign in (sign in - sign out - sign in) might not work out - i.e. agent-js might not recreate the delegation or identity if not resetted\n // Technically we do not need this since we recreate the agent below. We just keep it to make the reset explicit.\n authClient = null;\n\n AuthStore.getInstance().reset();\n\n ActorStore.getInstance().reset();\n AgentStore.getInstance().reset();\n\n // Recreate an HttpClient immediately because next sign-in, if window is not reloaded, would fail if the agent is created within the process.\n // For example, Safari blocks the Internet Identity (II) window if the agent is created during the interaction.\n // Agent-js must be created either globally or at least before performing a sign-in.\n authClient = await createAuthClient();\n};\n\nexport const getIdentity = (): Identity | undefined => authClient?.getIdentity();\n\n/**\n * Returns the identity of a signed-in user or an anonymous identity.\n * This function is useful for loading an identity in web workers.\n * Used to imperatively get the identity. Please be certain before using it.\n * @returns {Promise<Identity>} A promise that resolves to the identity of the user or an anonymous identity.\n */\nexport const unsafeIdentity = async (): Promise<Identity> =>\n (authClient ?? (await createAuthClient())).getIdentity();\n\n/**\n * Returns the current identity if the user is authenticated.\n *\n * \u26A0\uFE0F Use this function imperatively only. Do **not** persist the identity in global state.\n * It is intended for short-lived or one-time operations.\n *\n * Typical use case is to enable developers to implement custom features for the Internet Computer:\n * - Passing the identity to temporarily create an actor or agent to call a canister\n * - Signing a message or making a one-time authenticated call\n *\n * @returns The authenticated identity, or null if unavailable.\n */\nexport const getIdentityOnce = async (): Promise<Identity | null> => {\n const user = AuthStore.getInstance().get();\n\n if (isNullish(user)) {\n return null;\n }\n\n const authenticated = (await authClient?.isAuthenticated()) ?? false;\n\n if (!authenticated) {\n return null;\n }\n\n return authClient?.getIdentity() ?? null;\n};\n", "// How long the delegation identity should remain valid?\n// e.g. BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000) = 7 days in nanoseconds\n// For Juno: 4 hours\nexport const DELEGATION_IDENTITY_EXPIRATION = BigInt(4 * 60 * 60 * 1000 * 1000 * 1000);\n\n// We consider PIN authentication as \"insecure\" because users can easily lose their PIN if they do not register a passphrase, especially since Safari clears the browser cache every two weeks in cases of inactivity.\n// That's why we disable it by default.\nexport const ALLOW_PIN_AUTHENTICATION = false;\n\nexport const II_POPUP: {width: number; height: number} = {width: 576, height: 576};\nexport const NFID_POPUP: {width: number; height: number} = {width: 505, height: 705};\n\nexport const INTERNET_COMPUTER_ORG = 'internetcomputer.org';\n\n// Worker\nexport const AUTH_TIMER_INTERVAL = 1000;\n", "import {isNullish, nonNullish} from '@dfinity/utils';\nimport {II_POPUP, INTERNET_COMPUTER_ORG, NFID_POPUP} from '../constants/auth.constants';\nimport {DOCKER_CONTAINER_URL, DOCKER_INTERNET_IDENTITY_ID} from '../constants/container.constants';\nimport {EnvStore} from '../stores/env.store';\nimport type {\n InternetIdentityConfig,\n InternetIdentityDomain,\n NFIDConfig,\n Provider,\n SignInOptions\n} from '../types/auth.types';\nimport {popupCenter} from '../utils/window.utils';\n\n/**\n * Options for signing in with an authentication provider.\n * @interface AuthProviderSignInOptions\n */\nexport interface AuthProviderSignInOptions {\n /**\n * The URL of the identity provider - commonly Internet Identity.\n */\n identityProvider: string;\n /**\n * Optional features for the window opener.\n */\n windowOpenerFeatures?: string;\n}\n\n/**\n * Common traits for all authentication providers\n * @interface AuthProvider\n */\nexport interface AuthProvider {\n /**\n * The unique identifier of the provider.\n */\n readonly id: Provider;\n /**\n * Method to get the sign-in options for the provider.\n * @param options - The sign-in options.\n * @returns The sign-in options for the provider that can be use to effectively perform a sign-in.\n */\n signInOptions: (options: Pick<SignInOptions, 'windowed'>) => AuthProviderSignInOptions;\n}\n\n/**\n * Internet Identity authentication provider.\n * @class InternetIdentityProvider\n * @implements {AuthProvider}\n */\nexport class InternetIdentityProvider implements AuthProvider {\n #domain?: InternetIdentityDomain;\n\n /**\n * Creates an instance of InternetIdentityProvider.\n * @param {InternetIdentityConfig} config - The configuration for Internet Identity.\n */\n constructor({domain}: InternetIdentityConfig) {\n this.#domain = domain;\n }\n\n /**\n * Gets the identifier of the provider.\n * @returns {Provider} The identifier of the provider - `internet_identity`.\n */\n get id(): Provider {\n return 'internet_identity';\n }\n\n /**\n * Gets the sign-in options for Internet Identity.\n * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.\n * @returns {AuthProviderSignInOptions} The sign-in options for Internet Identity.\n */\n signInOptions({windowed}: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions {\n const identityProviderUrl = (): string => {\n const container = EnvStore.getInstance().get()?.container;\n\n // Production\n if (isNullish(container) || container === false) {\n return `https://identity.${this.#domain ?? INTERNET_COMPUTER_ORG}`;\n }\n\n const env = EnvStore.getInstance().get();\n\n const internetIdentityId =\n nonNullish(env) && nonNullish(env?.internetIdentityId)\n ? env.internetIdentityId\n : DOCKER_INTERNET_IDENTITY_ID;\n\n const {host: containerHost, protocol} = new URL(\n container === true ? DOCKER_CONTAINER_URL : container\n );\n\n return /apple/i.test(navigator?.vendor)\n ? `${protocol}//${containerHost}?canisterId=${internetIdentityId}`\n : `${protocol}//${internetIdentityId}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n };\n\n return {\n ...(windowed !== false && {\n windowOpenerFeatures: popupCenter(II_POPUP)\n }),\n identityProvider: identityProviderUrl()\n };\n }\n}\n\n/**\n * NFID authentication provider.\n * @class NFIDProvider\n * @implements {AuthProvider}\n */\nexport class NFIDProvider implements AuthProvider {\n #appName: string;\n #logoUrl: string;\n\n /**\n * Creates an instance of NFIDProvider.\n * @param {NFIDConfig} config - The configuration for NFID.\n */\n constructor({appName, logoUrl}: NFIDConfig) {\n this.#appName = appName;\n this.#logoUrl = logoUrl;\n }\n\n /**\n * Gets the identifier of the provider.\n * @returns {Provider} The identifier of the provider- nfid.\n */\n get id(): Provider {\n return 'nfid';\n }\n\n /**\n * Gets the sign-in options for NFID.\n * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.\n * @returns {AuthProviderSignInOptions} The sign-in options to effectively sign-in with NFID.\n */\n signInOptions({windowed}: Pick<SignInOptions, 'windowed'>): AuthProviderSignInOptions {\n return {\n ...(windowed !== false && {\n windowOpenerFeatures: popupCenter(NFID_POPUP)\n }),\n identityProvider: `https://nfid.one/authenticate/?applicationName=${encodeURI(\n this.#appName\n )}&applicationLogo=${encodeURI(this.#logoUrl)}`\n };\n }\n}\n", "export const DOCKER_CONTAINER_URL = 'http://127.0.0.1:5987';\nexport const DOCKER_INTERNET_IDENTITY_ID = 'rdmx6-jaaaa-aaaaa-aaadq-cai';\n", "import type {Environment} from '../types/env.types';\nimport {Store} from './store';\n\nexport class EnvStore extends Store<Environment | undefined> {\n private static instance: EnvStore;\n\n private env: Environment | undefined;\n\n private constructor() {\n super();\n }\n\n static getInstance() {\n if (!EnvStore.instance) {\n EnvStore.instance = new EnvStore();\n }\n return EnvStore.instance;\n }\n\n set(env: Environment | undefined) {\n this.env = env;\n\n this.populate(env);\n }\n\n get(): Environment | undefined {\n return this.env;\n }\n\n override subscribe(callback: (data: Environment | null | undefined) => void): () => void {\n const unsubscribe: () => void = super.subscribe(callback);\n\n callback(this.env);\n\n return unsubscribe;\n }\n}\n", "import {isNullish} from '@dfinity/utils';\nimport {isBrowser} from '@junobuild/utils';\n\nexport const popupCenter = ({\n width,\n height\n}: {\n width: number;\n height: number;\n}): string | undefined => {\n if (!isBrowser()) {\n return undefined;\n }\n\n if (isNullish(window) || isNullish(window.top)) {\n return undefined;\n }\n\n const {\n top: {innerWidth, innerHeight}\n } = window;\n\n const y = innerHeight / 2 + screenY - height / 2;\n const x = innerWidth / 2 + screenX - width / 2;\n\n return `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=${width}, height=${height}, top=${y}, left=${x}`;\n};\n", "import {jsonReplacer, jsonReviver} from '@dfinity/utils';\n\n/**\n * Converts data to a Uint8Array for transmission or storage.\n * @template T\n * @param {T} data - The data to convert.\n * @returns {Promise<Uint8Array>} A promise that resolves to a Uint8Array representation of the data.\n */\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data, jsonReplacer)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\n/**\n * Converts a Uint8Array or number array back to the original data type.\n * @template T\n * @param {(Uint8Array | number[])} data - The array to convert.\n * @returns {Promise<T>} A promise that resolves to the original data.\n */\nexport const fromArray = async <T>(data: Uint8Array | number[]): Promise<T> => {\n const blob: Blob = new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text(), jsonReviver);\n};\n", "/**\n * Checks if the current environment is a browser.\n * @returns {boolean} True if the current environment is a browser, false otherwise.\n */\nexport const isBrowser = (): boolean => typeof window !== `undefined`;\n", "import {Actor, type ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {isNullish} from '@dfinity/utils';\nimport type {BuildType} from '../types/build.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {AgentStore} from './agent.store';\n\ntype ActorParams = {\n idlFactory: IDL.InterfaceFactory;\n} & Required<Pick<Satellite, 'satelliteId' | 'identity'>> &\n Pick<Satellite, 'container'>;\n\ntype ActorRecord = Record<string, ActorMethod>;\n\nexport class ActorStore {\n private static instance: ActorStore;\n\n #actors: Record<string, ActorSubclass<ActorRecord>> | undefined | null = undefined;\n\n private constructor() {}\n\n static getInstance() {\n if (isNullish(ActorStore.instance)) {\n ActorStore.instance = new ActorStore();\n }\n return ActorStore.instance;\n }\n\n async getActor<T = ActorRecord>({\n satelliteId,\n identity,\n buildType,\n ...rest\n }: ActorParams & {buildType: BuildType}): Promise<ActorSubclass<T>> {\n const key = `${buildType}#${identity.getPrincipal().toText()}#${satelliteId};`;\n\n if (isNullish(this.#actors) || isNullish(this.#actors[key])) {\n const actor = await this.createActor({satelliteId, identity, ...rest});\n\n this.#actors = {\n ...(this.#actors ?? {}),\n [key]: actor\n };\n\n return actor as ActorSubclass<T>;\n }\n\n return this.#actors[key] as ActorSubclass<T>;\n }\n\n reset() {\n this.#actors = null;\n }\n\n private async createActor<T = ActorRecord>({\n idlFactory,\n satelliteId: canisterId,\n ...rest\n }: ActorParams): Promise<ActorSubclass<T>> {\n const agent = await AgentStore.getInstance().getAgent(rest);\n\n return Actor.createActor(idlFactory, {\n agent,\n canisterId\n });\n }\n}\n", "import {HttpAgent, type Agent} from '@dfinity/agent';\nimport {isNullish, nonNullish} from '@dfinity/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport type {Satellite} from '../types/satellite.types';\n\ntype AgentParams = Required<Pick<Satellite, 'identity'>> & Pick<Satellite, 'container'>;\n\nexport class AgentStore {\n private static instance: AgentStore;\n\n #agents: Record<string, HttpAgent> | undefined | null = undefined;\n\n private constructor() {}\n\n static getInstance() {\n if (isNullish(AgentStore.instance)) {\n AgentStore.instance = new AgentStore();\n }\n return AgentStore.instance;\n }\n\n async getAgent({identity, ...rest}: AgentParams): Promise<Agent> {\n const key = identity.getPrincipal().toText();\n\n if (isNullish(this.#agents) || isNullish(this.#agents[key])) {\n const agent = await this.createAgent({identity, ...rest});\n\n this.#agents = {\n ...(this.#agents ?? {}),\n [key]: agent\n };\n\n return agent;\n }\n\n return this.#agents[key];\n }\n\n reset() {\n this.#agents = null;\n }\n\n private async createAgent({identity, container}: AgentParams): Promise<HttpAgent> {\n const localActor = nonNullish(container) && container !== false;\n\n const host = localActor\n ? container === true\n ? DOCKER_CONTAINER_URL\n : container\n : 'https://icp-api.io';\n\n const shouldFetchRootKey = nonNullish(container);\n\n return await HttpAgent.create({\n identity,\n shouldFetchRootKey,\n host\n });\n }\n}\n", "export class SignInError extends Error {}\nexport class SignInInitError extends Error {}\nexport class SignInUserInterruptError extends Error {}\n\nexport class InitError extends Error {}\n\nexport class ListError extends Error {}\n", "import {AuthClient} from '@dfinity/auth-client';\n\nexport const createAuthClient = (): Promise<AuthClient> =>\n AuthClient.create({\n idleOptions: {\n disableIdle: true,\n disableDefaultIdleCallback: true\n }\n });\n", "import type {Identity} from '@dfinity/agent';\nimport {isNullish, nonNullish} from '@dfinity/utils';\nimport {isSatelliteError, JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE} from '@junobuild/errors';\nimport type {Provider, User, UserData} from '../types/auth.types';\nimport {InitError} from '../types/errors.types';\nimport {getIdentity} from './auth.services';\nimport {getDoc, setDoc} from './doc.services';\n\nexport const initUser = async (provider?: Provider): Promise<User> => {\n const identity: Identity | undefined = getIdentity();\n\n if (isNullish(identity)) {\n throw new InitError('No identity to initialize the user. Have you initialized Juno?');\n }\n\n const userId = identity.getPrincipal().toText();\n\n const loadUser = (): Promise<User | undefined> =>\n getDoc<UserData>({\n collection: `#user`,\n key: userId\n });\n\n const user = await loadUser();\n\n if (nonNullish(user)) {\n return user;\n }\n\n try {\n return await createUser({userId, provider});\n } catch (error: unknown) {\n // When a user signs in for the first time and get user returns `undefined`,\n // a new user entry is created. If the browser is reloaded and get user\n // still returns `undefined`, another try is made to create user entry, which is not\n // allowed since only the controller can update users, assuming the entry has been\n // created in the meantime. To prevent errors, we reload the user data,\n // as the issue indicates the user entity exists.\n if (isSatelliteError({error, type: JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE})) {\n const userOnCreateError = await loadUser();\n\n if (nonNullish(userOnCreateError)) {\n return userOnCreateError;\n }\n }\n\n throw error;\n }\n};\n\nconst createUser = ({\n userId,\n ...rest\n}: {\n userId: string;\n} & UserData): Promise<User> =>\n setDoc<UserData>({\n collection: `#user`,\n doc: {\n key: userId,\n data: rest\n }\n });\n", "export const isSatelliteError = ({error, type}: {error: unknown; type: string}): boolean => {\n if (typeof error === 'string') {\n return error.includes(type);\n }\n\n if (error instanceof Error) {\n return error.message.includes(type);\n }\n\n return false;\n};\n", "export const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT = 'juno.cdn.proposals.error.cannot_submit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_submit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT = 'juno.cdn.proposals.error.cannot_reject';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_reject_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT = 'juno.cdn.proposals.error.cannot_commit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_commit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_INVALID_HASH = 'juno.cdn.proposals.error.invalid_hash';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_UNKNOWN_TYPE = 'juno.cdn.proposals.error.unknown_type';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_EMPTY_CONTENT_CHUNKS =\n 'juno.cdn.proposals.error.empty_content_chunks';\nexport const JUNO_CDN_PROPOSALS_ERROR_NOT_CONTENT_CHUNKS_AT_INDEX =\n 'juno.cdn.proposals.error.no_content_chunks_at_index';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_EMPTY_ASSETS = 'juno.cdn.proposals.error.empty_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS =\n 'juno.cdn.proposals.error.cannot_delete_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS_INVALID_STATUS =\n 'juno.cdn.proposals.error.cannot_delete_assets_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_CONVERT = 'juno.cdn.proposals.error.next_id_convert';\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_OVERFLOW =\n 'juno.cdn.proposals.error.next_id_overflow';\n\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_insert_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_GET_ASSET_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_get_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_ENCODING_UNKNOWN_REFERENCE_ID =\n 'juno.cdn.storage.error.cannot_insert_asset_encoding_unknown_reference_id';\n\nexport const JUNO_CDN_STORAGE_ERROR_NO_PROPOSAL_FOUND = 'juno.cdn.storage.error.no_proposal_found';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_PATH =\n 'juno.cdn.storage.error.invalid_releases_path';\n\nexport const JUNO_CDN_STORAGE_ERROR_MISSING_RELEASES_DESCRIPTION =\n 'juno.cdn.storage.error.missing_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_DESCRIPTION =\n 'juno.cdn.storage.error.invalid_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_COLLECTION =\n 'juno.cdn.storage.error.invalid_collection';\n", "export const JUNO_COLLECTIONS_ERROR_MODIFY_RESERVED_COLLECTION =\n 'juno.collections.error.modify_reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_NAME = 'juno.collections.error.reserved_name';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_COLLECTION =\n 'juno.collections.error.reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RATE_CONFIG_ENABLED =\n 'juno.collections.error.rate_config_enabled';\nexport const JUNO_COLLECTIONS_ERROR_DELETE_PREFIX_RESERVED =\n 'juno.collections.error.prefix_deletion';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_EMPTY = 'juno.collections.error.not_empty';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_FOUND = 'juno.collections.error.not_found';\nexport const JUNO_COLLECTIONS_ERROR_PREFIX_RESERVED = 'juno.collections.error.prefix_reserved';\n", "export const JUNO_ERROR_NO_TIMESTAMP_PROVIDED = 'juno.error.no_timestamp_provided';\nexport const JUNO_ERROR_TIMESTAMP_OUTDATED_OR_FUTURE = 'juno.error.timestamp_outdated_or_future';\nexport const JUNO_ERROR_NO_VERSION_PROVIDED = 'juno.error.no_version_provided';\nexport const JUNO_ERROR_VERSION_OUTDATED_OR_FUTURE = 'juno.error.version_outdated_or_future';\n\nexport const JUNO_DATASTORE_ERROR_CANNOT_WRITE = 'juno.datastore.error.cannot_write';\nexport const JUNO_DATASTORE_ERROR_CANNOT_READ = 'juno.datastore.error.cannot_read';\n\nexport const JUNO_STORAGE_ERROR_UPLOAD_NOT_ALLOWED = 'juno.storage.error.upload_not_allowed';\nexport const JUNO_STORAGE_ERROR_SET_NOT_ALLOWED = 'juno.storage.error.set_not_allowed';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_INVALID_COLLECTION =\n 'juno.storage.error.cannot_commit_invalid_collection';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_BATCH = 'juno.storage.error.cannot_commit_batch';\nexport const JUNO_STORAGE_ERROR_ASSET_NOT_FOUND = 'juno.storage.error.asset_not_found';\nexport const JUNO_STORAGE_ERROR_CANNOT_READ_ASSET = 'juno.storage.error.cannot_read_asset';\nexport const JUNO_STORAGE_ERROR_UPLOAD_PATH_COLLECTION_PREFIX =\n 'juno.storage.error.upload_path_collection_prefix';\nexport const JUNO_STORAGE_ERROR_RESERVED_ASSET = 'juno.storage.error.reserved_asset';\nexport const JUNO_STORAGE_ERROR_BATCH_NOT_FOUND = 'juno.storage.error.batch_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_FOUND = 'juno.storage.error.chunk_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_INCLUDED_IN_BATCH =\n 'juno.storage.error.chunk_not_included_in_batch';\nexport const JUNO_STORAGE_ERROR_CHUNK_TO_COMMIT_NOT_FOUND =\n 'juno.storage.error.chunk_to_commit_not_found';\nexport const JUNO_STORAGE_ERROR_ASSET_MAX_ALLOWED_SIZE =\n 'juno.storage.error.asset_max_allowed_size';\n\nexport const JUNO_AUTH_ERROR_NOT_ADMIN_CONTROLLER = 'juno.auth.error.not_admin_controller';\nexport const JUNO_AUTH_ERROR_INVALID_ORIGIN = 'juno.auth.error.invalid_origin';\nexport const JUNO_AUTH_ERROR_NOT_WRITE_CONTROLLER = 'juno.auth.error.not_write_controller';\nexport const JUNO_AUTH_ERROR_NOT_CONTROLLER = 'juno.auth.error.not_controller';\n\nexport const JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE = 'juno.datastore.error.user.cannot_update';\nexport const JUNO_DATASTORE_ERROR_USER_INVALID_DATA = 'juno.datastore.error.user.invalid_data';\nexport const JUNO_DATASTORE_ERROR_USER_CALLER_KEY = 'juno.datastore.error.user.caller_key';\nexport const JUNO_DATASTORE_ERROR_USER_KEY_NO_PRINCIPAL =\n 'juno.datastore.error.user.key_no_principal';\nexport const JUNO_DATASTORE_ERROR_USER_NOT_ALLOWED = 'juno.datastore.error.user.not_allowed';\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_CHANGE_LIMIT_REACHED =\n 'juno.datastore.error.user.usage.change_limit_reached';\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_INVALID_DATA =\n 'juno.datastore.error.user.usage.invalid_data';\n", "export const JUNO_ERROR_CONTROLLERS_MAX_NUMBER = 'juno.error.controllers.max_number';\nexport const JUNO_ERROR_CONTROLLERS_ANONYMOUS_NOT_ALLOWED =\n 'juno.error.controllers.anonymous_not_allowed';\nexport const JUNO_ERROR_CONTROLLERS_REVOKED_NOT_ALLOWED =\n 'juno.error.controllers.revoked_not_allowed';\n\nexport const JUNO_ERROR_MEMORY_STABLE_EXCEEDED = 'juno.error.memory.stable_exceeded';\nexport const JUNO_ERROR_MEMORY_HEAP_EXCEEDED = 'juno.error.memory.heap_exceeded';\n\nexport const JUNO_ERROR_CYCLES_DEPOSIT_BALANCE_LOW = 'juno.error.cycles.deposit_balance_low';\nexport const JUNO_ERROR_CYCLES_DEPOSIT_FAILED = 'juno.error.cycles.deposit_failed';\n\nexport const JUNO_ERROR_CANISTER_CREATE_FAILED = 'juno.error.canister.create_failed';\nexport const JUNO_ERROR_CANISTER_INSTALL_CODE_FAILED = 'juno.error.canister.install_code_failed';\n\nexport const JUNO_ERROR_SEGMENT_STOP_FAILED = 'juno.error.segment.stop_failed';\nexport const JUNO_ERROR_SEGMENT_DELETE_FAILED = 'juno.error.segment.delete_failed';\n\nexport const JUNO_ERROR_CMC_CALL_LEDGER_FAILED = 'juno.error.cmc.call_ledger_failed';\nexport const JUNO_ERROR_CMC_LEDGER_TRANSFER_FAILED = 'juno.error.cmc.ledger_transfer_failed';\nexport const JUNO_ERROR_CMC_TOP_UP_FAILED = 'juno.error.cmc.top_up_failed';\nexport const JUNO_ERROR_CMC_CALL_CREATE_CANISTER_FAILED =\n 'juno.error.cmc.call_create_canister_failed';\nexport const JUNO_ERROR_CMC_CREATE_CANISTER_FAILED = 'juno.error.cmc.create_canister_failed';\nexport const JUNO_ERROR_CMC_INSTALL_CODE_FAILED = 'juno.error.cmc.install_code_failed';\n\nexport const JUNO_ERROR_INVALID_REGEX = 'juno.error.invalid_regex';\n", "import {fromNullable, isNullish, nonNullish} from '@dfinity/utils';\nimport type {DelDoc, SetDoc} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport type {ExcludeDate} from '../types/utility.types';\nimport {mapData} from '../utils/data.utils';\nimport {fromDoc, toDelDoc, toSetDoc} from '../utils/doc.utils';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const getDoc = async <D>({\n collection,\n key,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const {get_doc} = await getSatelliteActor(satellite);\n\n const doc = fromNullable(await get_doc(collection, key));\n\n if (isNullish(doc)) {\n return undefined;\n }\n\n return fromDoc({doc, key});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n docs,\n satellite\n}: {\n docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n satellite: Satellite;\n}): Promise<(Doc<any> | undefined)[]> => {\n const {get_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = docs.map(({collection, key}) => [collection, key]);\n\n const resultsDocs = await get_many_docs(payload);\n\n const results: (Doc<any> | undefined)[] = [];\n for (const [key, resultDoc] of resultsDocs) {\n const doc = fromNullable(resultDoc);\n results.push(nonNullish(doc) ? await fromDoc({key, doc}) : undefined);\n }\n\n return results;\n};\n/* eslint-enable */\n\nexport const setDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<Doc<D>> => {\n const {set_doc} = await getSatelliteActor(satellite);\n\n const {key} = doc;\n\n const setDoc = await toSetDoc(doc);\n\n const updatedDoc = await set_doc(collection, key, setDoc);\n\n return await fromDoc({key, doc: updatedDoc});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n docs,\n satellite\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite: Satellite;\n}): Promise<Doc<any>[]> => {\n const {set_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string, SetDoc][] = [];\n for (const {collection, doc} of docs) {\n const {key} = doc;\n payload.push([collection, key, await toSetDoc(doc)]);\n }\n\n const updatedDocs = await set_many_docs(payload);\n\n const results: Doc<any>[] = [];\n for (const [key, updatedDoc] of updatedDocs) {\n results.push(await fromDoc({key, doc: updatedDoc}));\n }\n\n return results;\n};\n/* eslint-enable */\n\nexport const deleteDoc = async <D>({\n collection,\n doc,\n satellite\n}: {\n collection: string;\n doc: Doc<D>;\n satellite: Satellite;\n}): Promise<void> => {\n const {del_doc} = await getSatelliteActor(satellite);\n\n const {key} = doc;\n\n return del_doc(collection, key, toDelDoc(doc));\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n docs,\n satellite\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite: Satellite;\n}): Promise<void> => {\n const {del_many_docs} = await getSatelliteActor(satellite);\n\n const payload: [string, string, DelDoc][] = docs.map(({collection, doc}) => [\n collection,\n doc.key,\n toDelDoc(doc)\n ]);\n\n await del_many_docs(payload);\n};\n/* eslint-enable */\n\nexport const deleteFilteredDocs = async ({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<void> => {\n const {del_filtered_docs} = await getSatelliteActor(satellite);\n\n return del_filtered_docs(collection, toListParams(filter));\n};\n\nexport const listDocs = async <D>({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<ListResults<Doc<D>>> => {\n const {list_docs} = await getSatelliteActor(satellite);\n\n const {items, items_page, items_length, matches_length, matches_pages} = await list_docs(\n collection,\n toListParams(filter)\n );\n\n const docs: Doc<D>[] = [];\n\n for (const [key, item] of items) {\n const {data: dataArray, owner, description, version, ...rest} = item;\n\n docs.push({\n key,\n description: fromNullable(description),\n owner: owner.toText(),\n data: await mapData<ExcludeDate<D>>({data: dataArray}),\n version: fromNullable(version),\n ...rest\n });\n }\n\n return {\n items: docs,\n items_length,\n items_page: fromNullable(items_page),\n matches_length,\n matches_pages: fromNullable(matches_pages)\n };\n};\n\nexport const countDocs = async ({\n collection,\n filter,\n satellite\n}: {\n collection: string;\n filter: ListParams;\n satellite: Satellite;\n}): Promise<bigint> => {\n const {count_docs} = await getSatelliteActor(satellite);\n\n return count_docs(collection, toListParams(filter));\n};\n", "import {fromArray} from '@junobuild/utils';\nimport type {Doc} from '../../declarations/satellite/satellite.did';\n\nexport const mapData = async <D>({data}: Pick<Doc, 'data'>): Promise<D> => {\n try {\n return await fromArray<D>(data);\n } catch (err: unknown) {\n console.error('The data parsing has failed, mapping to undefined as a fallback.', err);\n return undefined as D;\n }\n};\n", "import {fromNullable, toNullable} from '@dfinity/utils';\nimport {fromArray, toArray} from '@junobuild/utils';\nimport type {DelDoc, Doc as DocApi, SetDoc} from '../../declarations/satellite/satellite.did';\nimport type {Doc} from '../types/doc.types';\nimport type {ExcludeDate} from '../types/utility.types';\n\nexport const toSetDoc = async <D>(doc: Doc<D>): Promise<SetDoc> => {\n const {data, version, description} = doc;\n\n return {\n description: toNullable(description),\n data: await toArray<ExcludeDate<D>>(data),\n version: toNullable(version)\n };\n};\n\nexport const toDelDoc = <D>(doc: Doc<D>): DelDoc => {\n const {version} = doc;\n\n return {\n version: toNullable(version)\n };\n};\n\nexport const fromDoc = async <D>({doc, key}: {doc: DocApi; key: string}): Promise<Doc<D>> => {\n const {owner, version, description: docDescription, data, ...rest} = doc;\n\n return {\n key,\n description: fromNullable(docDescription),\n owner: owner.toText(),\n data: await fromArray<ExcludeDate<D>>(data),\n version: fromNullable(version),\n ...rest\n };\n};\n", "import {Principal} from '@dfinity/principal';\nimport {isNullish, toNullable} from '@dfinity/utils';\nimport type {\n ListParams as ListParamsApi,\n TimestampMatcher\n} from '../../declarations/satellite/satellite.did';\nimport {ListError} from '../types/errors.types';\nimport type {ListParams, ListTimestampMatcher} from '../types/list.types';\n\nconst toListMatcherTimestamp = (matcher?: ListTimestampMatcher): [] | [TimestampMatcher] => {\n if (isNullish(matcher)) {\n return toNullable();\n }\n\n switch (matcher.matcher) {\n case 'equal':\n return toNullable({Equal: matcher.timestamp});\n case 'greaterThan':\n return toNullable({GreaterThan: matcher.timestamp});\n case 'lessThan':\n return toNullable({LessThan: matcher.timestamp});\n case 'between':\n return toNullable({Between: [matcher.timestamps.start, matcher.timestamps.end]});\n default:\n throw new ListError('Invalid list matcher for timestamp', matcher);\n }\n};\n\nexport const toListParams = ({matcher, paginate, order, owner}: ListParams): ListParamsApi => ({\n matcher: isNullish(matcher)\n ? []\n : [\n {\n key: toNullable(matcher.key),\n description: toNullable(matcher.description),\n created_at: toListMatcherTimestamp(matcher.createdAt),\n updated_at: toListMatcherTimestamp(matcher.updatedAt)\n }\n ],\n paginate: toNullable(\n isNullish(paginate)\n ? undefined\n : {\n start_after: toNullable(paginate.startAfter),\n limit: toNullable(isNullish(paginate.limit) ? undefined : BigInt(paginate.limit))\n }\n ),\n order: toNullable(\n isNullish(order)\n ? undefined\n : {\n desc: order.desc,\n field:\n order.field === 'created_at'\n ? {CreatedAt: null}\n : order.field === 'updated_at'\n ? {UpdatedAt: null}\n : {Keys: null}\n }\n ),\n owner: toNullable(\n isNullish(owner) ? undefined : typeof owner === 'string' ? Principal.fromText(owner) : owner\n )\n});\n", "import type {ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {assertNonNullish} from '@dfinity/utils';\nimport type {_SERVICE as SatelliteActor} from '../../declarations/satellite/satellite.did';\n// eslint-disable-next-line import/no-relative-parent-imports\nimport {idlFactory as stockIdlFactory} from '../../declarations/satellite/satellite.factory.did.js';\nimport {ActorStore} from '../stores/actor.store';\nimport type {BuildType} from '../types/build.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {customOrEnvContainer, customOrEnvSatelliteId} from '../utils/env.utils';\n\nexport const getSatelliteActor = (satellite: Satellite): Promise<SatelliteActor> =>\n getActor({\n idlFactory: stockIdlFactory,\n buildType: 'stock',\n ...satellite\n });\n\nexport const getSatelliteExtendedActor = <T = Record<string, ActorMethod>>({\n idlFactory,\n ...rest\n}: Satellite & {idlFactory: IDL.InterfaceFactory}): Promise<ActorSubclass<T>> =>\n getActor({\n idlFactory,\n buildType: 'extended',\n ...rest\n });\n\nconst getActor = async <T = Record<string, ActorMethod>>({\n satelliteId: customSatelliteId,\n container: customContainer,\n ...rest\n}: Satellite & {idlFactory: IDL.InterfaceFactory; buildType: BuildType}): Promise<\n ActorSubclass<T>\n> => {\n const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n\n assertNonNullish(satelliteId, 'No satellite ID defined. Did you initialize Juno?');\n\n const {container} = customOrEnvContainer({container: customContainer});\n\n return await ActorStore.getInstance().getActor({\n satelliteId,\n container,\n ...rest\n });\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n const CommitBatch = IDL.Record({\n batch_id: IDL.Nat,\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n chunk_ids: IDL.Vec(IDL.Nat)\n });\n const CommitProposal = IDL.Record({\n sha256: IDL.Vec(IDL.Nat8),\n proposal_id: IDL.Nat\n });\n const ListOrderField = IDL.Variant({\n UpdatedAt: IDL.Null,\n Keys: IDL.Null,\n CreatedAt: IDL.Null\n });\n const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n const TimestampMatcher = IDL.Variant({\n Equal: IDL.Nat64,\n Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n GreaterThan: IDL.Nat64,\n LessThan: IDL.Nat64\n });\n const ListMatcher = IDL.Record({\n key: IDL.Opt(IDL.Text),\n updated_at: IDL.Opt(TimestampMatcher),\n description: IDL.Opt(IDL.Text),\n created_at: IDL.Opt(TimestampMatcher)\n });\n const ListPaginate = IDL.Record({\n start_after: IDL.Opt(IDL.Text),\n limit: IDL.Opt(IDL.Nat64)\n });\n const ListParams = IDL.Record({\n order: IDL.Opt(ListOrder),\n owner: IDL.Opt(IDL.Principal),\n matcher: IDL.Opt(ListMatcher),\n paginate: IDL.Opt(ListPaginate)\n });\n const DeleteControllersArgs = IDL.Record({\n controllers: IDL.Vec(IDL.Principal)\n });\n const ControllerScope = IDL.Variant({\n Write: IDL.Null,\n Admin: IDL.Null,\n Submit: IDL.Null\n });\n const Controller = IDL.Record({\n updated_at: IDL.Nat64,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64,\n scope: ControllerScope,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n const DeleteProposalAssets = IDL.Record({\n proposal_ids: IDL.Vec(IDL.Nat)\n });\n const DepositCyclesArgs = IDL.Record({\n cycles: IDL.Nat,\n destination_id: IDL.Principal\n });\n const AssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n owner: IDL.Principal,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const AssetEncodingNoContent = IDL.Record({\n modified: IDL.Nat64,\n sha256: IDL.Vec(IDL.Nat8),\n total_length: IDL.Nat\n });\n const AssetNoContent = IDL.Record({\n key: AssetKey,\n updated_at: IDL.Nat64,\n encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64)\n });\n const AuthenticationConfigInternetIdentity = IDL.Record({\n derivation_origin: IDL.Opt(IDL.Text),\n external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n });\n const AuthenticationConfig = IDL.Record({\n internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity)\n });\n const ConfigMaxMemorySize = IDL.Record({\n stable: IDL.Opt(IDL.Nat64),\n heap: IDL.Opt(IDL.Nat64)\n });\n const DbConfig = IDL.Record({\n max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n });\n const StorageConfigIFrame = IDL.Variant({\n Deny: IDL.Null,\n AllowAny: IDL.Null,\n SameOrigin: IDL.Null\n });\n const StorageConfigRawAccess = IDL.Variant({\n Deny: IDL.Null,\n Allow: IDL.Null\n });\n const StorageConfigRedirect = IDL.Record({\n status_code: IDL.Nat16,\n location: IDL.Text\n });\n const StorageConfig = IDL.Record({\n iframe: IDL.Opt(StorageConfigIFrame),\n rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n raw_access: IDL.Opt(StorageConfigRawAccess),\n redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n });\n const Config = IDL.Record({\n db: IDL.Opt(DbConfig),\n authentication: IDL.Opt(AuthenticationConfig),\n storage: StorageConfig\n });\n const Doc = IDL.Record({\n updated_at: IDL.Nat64,\n owner: IDL.Principal,\n data: IDL.Vec(IDL.Nat8),\n description: IDL.Opt(IDL.Text),\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64)\n });\n const ProposalStatus = IDL.Variant({\n Initialized: IDL.Null,\n Failed: IDL.Null,\n Open: IDL.Null,\n Rejected: IDL.Null,\n Executed: IDL.Null,\n Accepted: IDL.Null\n });\n const AssetsUpgradeOptions = IDL.Record({\n clear_existing_assets: IDL.Opt(IDL.Bool)\n });\n const SegmentsDeploymentOptions = IDL.Record({\n orbiter: IDL.Opt(IDL.Text),\n mission_control_version: IDL.Opt(IDL.Text),\n satellite_version: IDL.Opt(IDL.Text)\n });\n const ProposalType = IDL.Variant({\n AssetsUpgrade: AssetsUpgradeOptions,\n SegmentsDeployment: SegmentsDeploymentOptions\n });\n const Proposal = IDL.Record({\n status: ProposalStatus,\n updated_at: IDL.Nat64,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n executed_at: IDL.Opt(IDL.Nat64),\n owner: IDL.Principal,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n proposal_type: ProposalType\n });\n const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n const Permission = IDL.Variant({\n Controllers: IDL.Null,\n Private: IDL.Null,\n Public: IDL.Null,\n Managed: IDL.Null\n });\n const RateConfig = IDL.Record({\n max_tokens: IDL.Nat64,\n time_per_token_ns: IDL.Nat64\n });\n const Rule = IDL.Record({\n max_capacity: IDL.Opt(IDL.Nat32),\n memory: IDL.Opt(Memory),\n updated_at: IDL.Nat64,\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n mutable_permissions: IDL.Opt(IDL.Bool),\n rate_config: IDL.Opt(RateConfig),\n write: Permission,\n max_changes_per_user: IDL.Opt(IDL.Nat32)\n });\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n certificate_version: IDL.Opt(IDL.Nat16)\n });\n const StreamingCallbackToken = IDL.Record({\n memory: Memory,\n token: IDL.Opt(IDL.Text),\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n index: IDL.Nat64,\n encoding_type: IDL.Text,\n full_path: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], ['query'])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const InitAssetKey = IDL.Record({\n token: IDL.Opt(IDL.Text),\n collection: IDL.Text,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n encoding_type: IDL.Opt(IDL.Text),\n full_path: IDL.Text\n });\n const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n const ListResults = IDL.Record({\n matches_pages: IDL.Opt(IDL.Nat64),\n matches_length: IDL.Nat64,\n items_page: IDL.Opt(IDL.Nat64),\n items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n items_length: IDL.Nat64\n });\n const CustomDomain = IDL.Record({\n updated_at: IDL.Nat64,\n created_at: IDL.Nat64,\n version: IDL.Opt(IDL.Nat64),\n bn_id: IDL.Opt(IDL.Text)\n });\n const ListResults_1 = IDL.Record({\n matches_pages: IDL.Opt(IDL.Nat64),\n matches_length: IDL.Nat64,\n items_page: IDL.Opt(IDL.Nat64),\n items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n items_length: IDL.Nat64\n });\n const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n const ListProposalsPaginate = IDL.Record({\n start_after: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const ListProposalsParams = IDL.Record({\n order: IDL.Opt(ListProposalsOrder),\n paginate: IDL.Opt(ListProposalsPaginate)\n });\n const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n const ListProposalResults = IDL.Record({\n matches_length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n items_length: IDL.Nat64\n });\n const ListRulesMatcher = IDL.Record({include_system: IDL.Bool});\n const ListRulesParams = IDL.Record({matcher: IDL.Opt(ListRulesMatcher)});\n const ListRulesResults = IDL.Record({\n matches_length: IDL.Nat64,\n items: IDL.Vec(IDL.Tuple(IDL.Text, Rule)),\n items_length: IDL.Nat64\n });\n const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n const SetController = IDL.Record({\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n scope: ControllerScope,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const SetControllersArgs = IDL.Record({\n controller: SetController,\n controllers: IDL.Vec(IDL.Principal)\n });\n const SetDoc = IDL.Record({\n data: IDL.Vec(IDL.Nat8),\n description: IDL.Opt(IDL.Text),\n version: IDL.Opt(IDL.Nat64)\n });\n const SetRule = IDL.Record({\n max_capacity: IDL.Opt(IDL.Nat32),\n memory: IDL.Opt(Memory),\n max_size: IDL.Opt(IDL.Nat),\n read: Permission,\n version: IDL.Opt(IDL.Nat64),\n mutable_permissions: IDL.Opt(IDL.Bool),\n rate_config: IDL.Opt(RateConfig),\n write: Permission,\n max_changes_per_user: IDL.Opt(IDL.Nat32)\n });\n const UploadChunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat,\n order_id: IDL.Opt(IDL.Nat)\n });\n const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n return IDL.Service({\n commit_asset_upload: IDL.Func([CommitBatch], [], []),\n commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n count_proposals: IDL.Func([], [IDL.Nat64], ['query']),\n del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n del_assets: IDL.Func([IDL.Text], [], []),\n del_controllers: IDL.Func(\n [DeleteControllersArgs],\n [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n []\n ),\n del_custom_domain: IDL.Func([IDL.Text], [], []),\n del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n del_docs: IDL.Func([IDL.Text], [], []),\n del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], ['query']),\n get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n get_config: IDL.Func([], [Config], []),\n get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], ['query']),\n get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n get_many_assets: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n ['query']\n ),\n get_many_docs: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n ['query']\n ),\n get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], ['query']),\n get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], ['query']),\n get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n http_request_streaming_callback: IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query']\n ),\n init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))], ['query']),\n list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], ['query']),\n list_rules: IDL.Func([CollectionType, ListRulesParams], [ListRulesResults], ['query']),\n memory_size: IDL.Func([], [MemorySize], ['query']),\n reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n set_auth_config: IDL.Func([AuthenticationConfig], [], []),\n set_controllers: IDL.Func(\n [SetControllersArgs],\n [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n []\n ),\n set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n set_db_config: IDL.Func([DbConfig], [], []),\n set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n set_many_docs: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n []\n ),\n set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n set_storage_config: IDL.Func([StorageConfig], [], []),\n submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n return [];\n};\n", "import {nonNullish} from '@dfinity/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport {EnvStore} from '../stores/env.store';\nimport type {Satellite} from '../types/satellite.types';\n\nexport const satelliteUrl = ({\n satelliteId: customSatelliteId,\n container: customContainer\n}: Satellite): string => {\n const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n const {container} = customOrEnvContainer({container: customContainer});\n\n if (nonNullish(container) && container !== false) {\n const {host: containerHost, protocol} = new URL(\n container === true ? DOCKER_CONTAINER_URL : container\n );\n return `${protocol}//${satelliteId ?? 'unknown'}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n }\n\n return `https://${satelliteId ?? 'unknown'}.icp0.io`;\n};\n\nexport const customOrEnvSatelliteId = ({\n satelliteId\n}: Pick<Satellite, 'satelliteId'>): Pick<Satellite, 'satelliteId'> =>\n nonNullish(satelliteId)\n ? {satelliteId}\n : (EnvStore.getInstance().get() ?? {satelliteId: undefined});\n\nexport const customOrEnvContainer = ({\n container: customContainer\n}: Pick<Satellite, 'container'>): Pick<Satellite, 'container'> =>\n nonNullish(customContainer)\n ? {container: customContainer}\n : (EnvStore.getInstance().get() ?? {container: undefined});\n", "import {AnonymousIdentity, type Identity} from '@dfinity/agent';\nimport {getIdentity as getAuthIdentity} from './auth.services';\n\nexport const getIdentity = (identity?: Identity): Identity => {\n if (identity !== undefined) {\n return identity;\n }\n\n const authIdentity: Identity | undefined = getAuthIdentity();\n\n return authIdentity ?? new AnonymousIdentity();\n};\n", "import {\n countDocs as countDocsApi,\n deleteDoc as deleteDocApi,\n deleteFilteredDocs as deleteFilteredDocsApi,\n deleteManyDocs as deleteManyDocsApi,\n getDoc as getDocApi,\n getManyDocs as getManyDocsApi,\n listDocs as listDocsApi,\n setDoc as setDocApi,\n setManyDocs as setManyDocsApi\n} from '../api/doc.api';\nimport type {Doc} from '../types/doc.types';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\n/**\n * Retrieves a single document from a collection.\n * @template D\n * @param {Object} params - The parameters for retrieving the document.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @param {string} params.key - The key of the document to retrieve.\n * @returns {Promise<Doc<D> | undefined>} A promise that resolves to the document or undefined if not found.\n */\nexport const getDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Retrieves multiple documents from a single or different collections in a single call.\n * @param {Object} params - The parameters for retrieving the documents.\n * @param {Array} params.docs - The list of documents with their collections and keys.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Array<Doc<any> | undefined>>} A promise that resolves to an array of documents or undefined if not found.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n satellite?: SatelliteOptions;\n}): Promise<(Doc<any> | undefined)[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Adds or updates a single document in a collection.\n * @template D\n * @param {Object} params - The parameters for adding or updating the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to add or update.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Doc<D>>} A promise that resolves to the added or updated document.\n */\nexport const setDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<Doc<D>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await setDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Adds or updates multiple documents in a or different collections.\n * @param {Object} params - The parameters for adding or updating the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<Array<Doc<any>>>} A promise that resolves to an array of added or updated documents.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite?: SatelliteOptions;\n}): Promise<Doc<any>[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await setManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Deletes a single document from a collection.\n * @template D\n * @param {Object} params - The parameters for deleting the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to delete.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<void>} A promise that resolves when the document is deleted.\n */\nexport const deleteDoc = async <D>({\n satellite,\n ...rest\n}: {\n collection: string;\n doc: Doc<D>;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteDocApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Deletes multiple documents from a or different collections.\n * @param {Object} params - The parameters for deleting the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n satellite,\n ...rest\n}: {\n docs: {collection: string; doc: Doc<any>}[];\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteManyDocsApi({...rest, satellite: {...satellite, identity}});\n};\n/* eslint-enable */\n\n/**\n * Deletes documents from a collection with optional filtering.\n *\n * @param {Object} params - The parameters for deleting documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - The filter criteria to match documents for deletion.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n *\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\nexport const deleteFilteredDocs = async ({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<void> => {\n const identity = getIdentity(satellite?.identity);\n\n return await deleteFilteredDocsApi({\n ...rest,\n filter: filter ?? {},\n satellite: {...satellite, identity}\n });\n};\n\n/**\n * Lists documents in a collection with optional filtering.\n * @template D\n * @param {Object} params - The parameters for listing the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<ListResults<Doc<D>>>} A promise that resolves to the list of documents.\n */\nexport const listDocs = async <D>({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<ListResults<Doc<D>>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await listDocsApi<D>({...rest, filter: filter ?? {}, satellite: {...satellite, identity}});\n};\n\n/**\n * Counts documents in a collection with optional filtering.\n * @param {Object} params - The parameters for counting the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {SatelliteOptions} [params.satellite] - Options for the satellite (useful for NodeJS usage only).\n * @returns {Promise<bigint>} A promise that resolves to the count of documents as a bigint.\n */\nexport const countDocs = async ({\n satellite,\n filter,\n ...rest\n}: {\n collection: string;\n filter?: ListParams;\n satellite?: SatelliteOptions;\n}): Promise<bigint> => {\n const identity = getIdentity(satellite?.identity);\n\n return await countDocsApi({...rest, filter: filter ?? {}, satellite: {...satellite, identity}});\n};\n", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ninterface ImportMeta {\n env: Record<string, string> | undefined;\n}\n\nexport const envSatelliteId = (): string | undefined => {\n const viteEnvSatelliteId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_SATELLITE_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_SATELLITE_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_SATELLITE_ID ?? viteEnvSatelliteId())\n : viteEnvSatelliteId();\n};\n\nexport const envContainer = (): string | undefined => {\n const viteEnvContainer = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_CONTAINER ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_CONTAINER)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_CONTAINER ?? viteEnvContainer())\n : viteEnvContainer();\n};\n", "import type {ActorSubclass} from '@dfinity/agent';\nimport type {ActorMethod} from '@dfinity/agent/lib/esm/actor';\nimport type {IDL} from '@dfinity/candid';\nimport {getSatelliteExtendedActor as getSatelliteExtendedActorApi} from '../api/actor.api';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport {getIdentity} from './identity.services';\n\nexport const getSatelliteExtendedActor = async <T = Record<string, ActorMethod>>({\n idlFactory,\n satellite\n}: {\n idlFactory: IDL.InterfaceFactory;\n satellite?: SatelliteOptions;\n}): Promise<ActorSubclass<T>> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getSatelliteExtendedActorApi({\n idlFactory,\n ...satellite,\n identity\n });\n};\n", "import {fromNullable, nonNullish} from '@dfinity/utils';\nimport type {Asset, AssetEncoding, AssetKey, Storage} from '@junobuild/storage';\nimport type {AssetNoContent} from '../../declarations/satellite/satellite.did';\nimport {\n countAssets as countAssetsApi,\n deleteAsset as deleteAssetApi,\n deleteFilteredAssets as deleteFilteredAssetsApi,\n deleteManyAssets as deleteManyAssetsApi,\n getAsset as getAssetApi,\n getManyAssets as getManyAssetsApi,\n listAssets as listAssetsApi,\n uploadAsset as uploadAssetApi\n} from '../api/storage.api';\nimport type {ListParams} from '../types/list.types';\nimport type {SatelliteOptions} from '../types/satellite.types';\nimport type {Assets} from '../types/storage.types';\nimport {sha256ToBase64String} from '../utils/crypto.utils';\nimport {satelliteUrl} from '../utils/env.utils';\nimport {getIdentity} from './identity.services';\n\n/**\n * Uploads a blob to the storage.\n * @param {Storage & {satellite?: SatelliteOptions}} params - The storage parameters. Satellite options are required only in NodeJS environment.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadBlob = (params: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> =>\n uploadAssetIC(params);\n\n/**\n * Uploads a file to the storage.\n * @param {Partial<Pick<Storage, 'filename'>> & Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}} params - The storage parameters. Satellite options are required only in NodeJS environment.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadFile = (\n params: Partial<Pick<Storage, 'filename'>> &\n Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}\n): Promise<AssetKey> =>\n uploadAssetIC({\n filename: params.data.name,\n ...params\n });\n\nconst uploadAssetIC = async ({\n filename: storageFilename,\n data,\n collection,\n headers = [],\n fullPath: storagePath,\n token,\n satellite: satelliteOptions,\n encoding,\n description\n}: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> => {\n const identity = getIdentity(satelliteOptions?.identity);\n\n // The IC certification does not currently support encoding\n const filename: string = decodeURI(storageFilename);\n const fullPath: string = storagePath ?? `/${collection}/${filename}`;\n\n const satellite = {...satelliteOptions, identity};\n\n await uploadAssetApi({\n data,\n filename,\n collection,\n token,\n headers,\n fullPath,\n encoding,\n satellite,\n description\n });\n\n return {\n downloadUrl: downloadUrl({\n satellite,\n assetKey: {\n fullPath,\n token\n }\n }),\n fullPath,\n name: filename\n };\n};\n\n/**\n * Lists assets in a collection with optional filtering.\n * @param {Object} params - The parameters for listing the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter parameters.\n * @returns {Promise<Assets>} A promise that resolves to the list of assets.\n */\nexport const listAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<Assets> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n const {items, ...rest} = await listAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n\n const assets = items.map(\n ({\n key: {full_path: fullPath, token: t, name, owner, description},\n headers,\n encodings,\n created_at,\n updated_at\n }: AssetNoContent) => {\n const token = fromNullable(t);\n\n return {\n fullPath,\n description: fromNullable(description),\n name,\n downloadUrl: downloadUrl({\n satellite,\n assetKey: {fullPath, token}\n }),\n token,\n headers,\n encodings: encodings.reduce<Record<string, AssetEncoding>>(\n (acc, [type, {modified, sha256, total_length}]) => ({\n ...acc,\n [type]: {\n modified,\n sha256: sha256ToBase64String(sha256),\n total_length\n }\n }),\n {}\n ),\n owner: owner.toText(),\n created_at,\n updated_at\n } as Asset;\n }\n );\n\n return {\n items: assets,\n assets,\n ...rest\n };\n};\n\n/**\n * Counts assets in a collection with optional filtering.\n * @param {Object} params - The parameters for counting the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter parameters for narrowing down the count.\n * @returns {Promise<bigint>} A promise that resolves to the count of assets as a bigint.\n */\nexport const countAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<bigint> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return await countAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n};\n\n/**\n * Deletes an asset from the storage.\n * @param {Object} params - The parameters for deleting the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {string} params.fullPath - The full path of the asset.\n * @returns {Promise<void>} A promise that resolves when the asset is deleted.\n */\nexport const deleteAsset = ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n deleteAssetApi({\n collection,\n fullPath,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\n/**\n * Deletes multiple assets from the storage.\n * @param {Object} params - The parameters for deleting the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @returns {Promise<void>} A promise that resolves when the assets are deleted.\n */\nexport const deleteManyAssets = ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n deleteManyAssetsApi({\n assets,\n satellite: {...satellite, identity: getIdentity(satellite?.identity)}\n });\n\n/**\n * Deletes multiple assets from a collection based on filtering criteria.\n *\n * @param {Object} params - The parameters for deleting the assets.\n * @param {string} params.collection - The name of the collection from which to delete assets.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {ListParams} [params.filter] - The filter criteria to match assets for deletion.\n *\n * @returns {Promise<void>} A promise that resolves when the assets matching the filter criteria are deleted.\n */\nexport const deleteFilteredAssets = async ({\n collection,\n satellite: satelliteOptions,\n filter\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n filter?: ListParams;\n}): Promise<void> => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return await deleteFilteredAssetsApi({\n collection,\n satellite,\n filter: filter ?? {}\n });\n};\n\n/**\n * Retrieves an asset from the storage.\n * @param {Object} params - The parameters for retrieving the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @param {string} params.fullPath - The full path of the asset.\n * @returns {Promise<AssetNoContent | undefined>} A promise that resolves to the asset or undefined if not found.\n */\nexport const getAsset = async ({\n satellite,\n ...rest\n}: {\n collection: string;\n satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<AssetNoContent | undefined> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getAssetApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Retrieves multiple assets from the storage.\n * @param {Object} params - The parameters for retrieving the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {SatelliteOptions} [params.satellite] - The satellite options (required only in NodeJS environment).\n * @returns {Promise<Array<AssetNoContent | undefined>>} A promise that resolves to an array of assets or undefined if not found.\n */\nexport const getManyAssets = async ({\n satellite,\n ...rest\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite?: SatelliteOptions;\n}): Promise<(AssetNoContent | undefined)[]> => {\n const identity = getIdentity(satellite?.identity);\n\n return await getManyAssetsApi({...rest, satellite: {...satellite, identity}});\n};\n\n/**\n * Returns a public URL for accessing a specific asset stored on a Satellite.\n *\n * This URL can be used to:\n * - Open the file directly in a browser\n * - Embed the asset in HTML elements like `<img src=\"...\">`, `<video src=\"...\">`, or `<a href=\"...\">`\n * - Programmatically download or display the asset in your application\n *\n * ### Example\n * ```ts\n * const url = downloadUrl({\n * assetKey: {\n * fullPath: '/images/logo.png',\n * }\n * });\n *\n * // Usage in an <img> tag\n * <img src={url} alt=\"Logo\" />\n * ```\n *\n * @param {Object} params - Parameters for generating the URL.\n * @param {Object} params.assetKey - Identifies the asset to generate the URL for.\n * @param {string} params.assetKey.fullPath - The full path of the asset (e.g., `/folder/file.jpg`).\n * @param {string} [params.assetKey.token] - Optional access token for accessing protected assets.\n * @param {SatelliteOptions} [params.satellite] - Required only in Node.js environments to specify which Satellite to use.\n *\n * @returns {string} A full URL pointing to the asset.\n */\nexport const downloadUrl = ({\n assetKey: {fullPath, token},\n satellite: satelliteOptions\n}: {\n assetKey: Pick<Asset, 'fullPath' | 'token'>;\n} & {satellite?: SatelliteOptions}): string => {\n const satellite = {...satelliteOptions, identity: getIdentity(satelliteOptions?.identity)};\n\n return `${satelliteUrl(satellite)}${fullPath}${nonNullish(token) ? `?token=${token}` : ''}`;\n};\n", "import {fromNullable} from '@dfinity/utils';\nimport {\n uploadAsset as uploadAssetStorage,\n type AssetKey,\n type UploadAsset\n} from '@junobuild/storage';\nimport type {\n AssetNoContent,\n _SERVICE as SatelliteActor\n} from '../../declarations/satellite/satellite.did';\nimport type {ListParams, ListResults} from '../types/list.types';\nimport type {Satellite} from '../types/satellite.types';\nimport {toListParams} from '../utils/list.utils';\nimport {getSatelliteActor} from './actor.api';\n\nexport const uploadAsset = async ({\n satellite,\n ...asset\n}: UploadAsset & {satellite: Satellite}): Promise<void> => {\n const actor = await getSatelliteActor(satellite);\n\n await uploadAssetStorage({\n actor,\n asset\n });\n};\n\nexport const listAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<ListResults<AssetNoContent>> => {\n const {list_assets} = await getSatelliteActor(satellite);\n\n const {\n items: assets,\n items_length,\n items_page,\n matches_length,\n matches_pages\n } = await list_assets(collection, toListParams(filter));\n\n return {\n items: assets.map(([_, asset]) => asset),\n items_length,\n items_page: fromNullable(items_page),\n matches_length,\n matches_pages: fromNullable(matches_pages)\n };\n};\n\nexport const countAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<bigint> => {\n const {count_assets} = await getSatelliteActor(satellite);\n\n return count_assets(collection, toListParams(filter));\n};\n\nexport const deleteAsset = async ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> => {\n const actor: SatelliteActor = await getSatelliteActor(satellite);\n\n return actor.del_asset(collection, fullPath);\n};\n\nexport const deleteManyAssets = async ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite: Satellite;\n}): Promise<void> => {\n const {del_many_assets} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n collection,\n fullPath\n ]);\n\n await del_many_assets(payload);\n};\n\nexport const deleteFilteredAssets = async ({\n collection,\n satellite,\n filter\n}: {\n collection: string;\n satellite: Satellite;\n filter: ListParams;\n}): Promise<void> => {\n const {del_filtered_assets} = await getSatelliteActor(satellite);\n\n return del_filtered_assets(collection, toListParams(filter));\n};\n\nexport const getAsset = async ({\n collection,\n fullPath,\n satellite\n}: {\n collection: string;\n satellite: Satellite;\n} & Pick<AssetKey, 'fullPath'>): Promise<AssetNoContent | undefined> => {\n const {get_asset} = await getSatelliteActor(satellite);\n return fromNullable(await get_asset(collection, fullPath));\n};\n\nexport const getManyAssets = async ({\n assets,\n satellite\n}: {\n assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n satellite: Satellite;\n}): Promise<(AssetNoContent | undefined)[]> => {\n const {get_many_assets} = await getSatelliteActor(satellite);\n\n const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n collection,\n fullPath\n ]);\n\n const resultsAssets = await get_many_assets(payload);\n\n return resultsAssets.map(([_, resultAsset]) => fromNullable(resultAsset));\n};\n", "import {toNullable} from '@dfinity/utils';\nimport {isBrowser} from '@junobuild/utils';\nimport type {\n _SERVICE as ConsoleActor,\n CommitBatch as ConsoleCommitBatch,\n InitAssetKey as ConsoleInitAssetKey,\n UploadChunk as ConsoleUploadChunk\n} from '../../declarations/console/console.did';\nimport type {\n _SERVICE as SatelliteActor,\n CommitBatch as SatelliteCommitBatch,\n InitAssetKey as SatelliteInitAssetKey,\n UploadChunk as SatelliteUploadChunk\n} from '../../declarations/satellite/satellite.did';\nimport type {EncodingType, Storage} from '../types/storage.types';\n\nexport type UploadAsset = Required<Omit<Storage, 'token' | 'encoding' | 'description'>> &\n Pick<Storage, 'token' | 'encoding' | 'description'>;\n\nexport type UploadAssetActor = SatelliteActor;\nexport type UploadAssetWithProposalActor = ConsoleActor | SatelliteActor;\n\ntype InitAssetKey = SatelliteInitAssetKey | ConsoleInitAssetKey;\ntype UploadChunk = SatelliteUploadChunk | ConsoleUploadChunk;\ntype CommitBatch = SatelliteCommitBatch | ConsoleCommitBatch;\n\nexport const uploadAsset = async ({\n asset: {data, headers, ...restAsset},\n actor\n}: {\n asset: UploadAsset;\n actor: UploadAssetActor;\n}): Promise<void> => {\n const {init_asset_upload, upload_asset_chunk, commit_asset_upload} = actor;\n\n const {batch_id: batchId} = await init_asset_upload(mapInitAssetUploadParams(restAsset));\n\n const {chunkIds} = await uploadChunks({data, uploadFn: upload_asset_chunk, batchId});\n\n await commitAsset({\n commitFn: commit_asset_upload,\n batchId,\n data,\n headers,\n chunkIds\n });\n};\n\nexport const uploadAssetWithProposal = async ({\n asset: {data, headers, ...restAsset},\n proposalId,\n actor\n}: {\n asset: UploadAsset;\n proposalId: bigint;\n actor: UploadAssetWithProposalActor;\n}): Promise<void> => {\n const {init_proposal_asset_upload, upload_proposal_asset_chunk, commit_proposal_asset_upload} =\n actor;\n\n const {batch_id: batchId} = await init_proposal_asset_upload(\n mapInitAssetUploadParams(restAsset),\n proposalId\n );\n\n const {chunkIds} = await uploadChunks({data, uploadFn: upload_proposal_asset_chunk, batchId});\n\n await commitAsset({\n commitFn: commit_proposal_asset_upload,\n batchId,\n data,\n headers,\n chunkIds\n });\n};\n\nconst mapInitAssetUploadParams = ({\n filename,\n collection,\n token,\n fullPath,\n encoding,\n description\n}: Omit<UploadAsset, 'headers' | 'data'>): InitAssetKey => ({\n collection,\n full_path: fullPath,\n name: filename,\n token: toNullable<string>(token),\n encoding_type: toNullable<EncodingType>(encoding),\n description: toNullable(description)\n});\n\nconst commitAsset = async ({\n commitFn,\n batchId,\n chunkIds,\n headers,\n data\n}: {\n commitFn: (commitBatch: CommitBatch) => Promise<void>;\n batchId: bigint;\n chunkIds: UploadChunkResult[];\n} & Pick<UploadAsset, 'headers' | 'data'>) => {\n const contentType: [[string, string]] | undefined =\n headers.find(([type, _]) => type.toLowerCase() === 'content-type') === undefined &&\n data.type !== undefined &&\n data.type !== ''\n ? [['Content-Type', data.type]]\n : undefined;\n\n await commitFn({\n batch_id: batchId,\n chunk_ids: chunkIds.map(({chunk_id}: UploadChunkResult) => chunk_id),\n headers: [...headers, ...(contentType ?? [])]\n });\n};\n\nconst uploadChunks = async ({\n data,\n uploadFn,\n batchId\n}: {\n batchId: bigint;\n} & Pick<UploadAsset, 'data'> &\n Pick<UploadChunkParams, 'uploadFn'>): Promise<{chunkIds: UploadChunkResult[]}> => {\n // https://forum.dfinity.org/t/optimal-upload-chunk-size/20444/23?u=peterparker\n const chunkSize = 1900000;\n\n const uploadChunks: UploadChunkParams[] = [];\n\n // Prevent transforming chunk to arrayBuffer error: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.\n const clone: Blob = isBrowser() ? new Blob([await data.arrayBuffer()]) : data;\n\n // Split data into chunks\n let orderId = 0n;\n for (let start = 0; start < clone.size; start += chunkSize) {\n const chunk: Blob = clone.slice(start, start + chunkSize);\n\n uploadChunks.push({\n batchId,\n chunk,\n uploadFn,\n orderId\n });\n\n orderId++;\n }\n\n // Upload chunks to the IC in batch - i.e. 12 chunks uploaded at a time.\n let chunkIds: UploadChunkResult[] = [];\n for await (const results of batchUploadChunks({uploadChunks})) {\n chunkIds = [...chunkIds, ...results];\n }\n\n return {chunkIds};\n};\n\nasync function* batchUploadChunks({\n uploadChunks,\n limit = 12\n}: {\n uploadChunks: UploadChunkParams[];\n limit?: number;\n}): AsyncGenerator<UploadChunkResult[], void> {\n for (let i = 0; i < uploadChunks.length; i = i + limit) {\n const batch = uploadChunks.slice(i, i + limit);\n const result = await Promise.all(batch.map((params) => uploadChunk(params)));\n yield result;\n }\n}\n\ninterface UploadChunkResult {\n chunk_id: bigint;\n}\n\ninterface UploadChunkParams {\n batchId: bigint;\n chunk: Blob;\n uploadFn: (uploadChunk: UploadChunk) => Promise<UploadChunkResult>;\n orderId: bigint;\n}\n\nconst uploadChunk = async ({\n batchId,\n chunk,\n uploadFn,\n orderId\n}: UploadChunkParams): Promise<UploadChunkResult> =>\n uploadFn({\n batch_id: batchId,\n content: new Uint8Array(await chunk.arrayBuffer()),\n order_id: toNullable(orderId)\n });\n", "export const sha256ToBase64String = (sha256: Iterable<number>): string =>\n btoa([...sha256].map((c) => String.fromCharCode(c)).join(''));\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["assertNonNullish", "isNullish", "Store", "data", "callback", "callbackId", "id", "AuthStore", "_AuthStore", "Store", "authUser", "callback", "unsubscribe", "emit", "message", "detail", "$event", "ERROR_USER_INTERRUPT", "isNullish", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "II_POPUP", "NFID_POPUP", "INTERNET_COMPUTER_ORG", "isNullish", "nonNullish", "DOCKER_CONTAINER_URL", "DOCKER_INTERNET_IDENTITY_ID", "EnvStore", "_EnvStore", "Store", "env", "callback", "unsubscribe", "isNullish", "jsonReplacer", "jsonReviver", "toArray", "data", "blob", "fromArray", "isBrowser", "popupCenter", "width", "height", "p", "isNullish", "innerWidth", "innerHeight", "y", "x", "InternetIdentityProvider", "#domain", "domain", "windowed", "identityProviderUrl", "container", "EnvStore", "isNullish", "INTERNET_COMPUTER_ORG", "env", "internetIdentityId", "nonNullish", "DOCKER_INTERNET_IDENTITY_ID", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "popupCenter", "II_POPUP", "NFIDProvider", "#appName", "#logoUrl", "appName", "logoUrl", "NFID_POPUP", "Actor", "isNullish", "HttpAgent", "isNullish", "nonNullish", "AgentStore", "_AgentStore", "#agents", "isNullish", "identity", "rest", "key", "agent", "container", "host", "nonNullish", "DOCKER_CONTAINER_URL", "shouldFetchRootKey", "HttpAgent", "ActorStore", "_ActorStore", "#actors", "isNullish", "satelliteId", "identity", "buildType", "rest", "key", "actor", "idlFactory", "canisterId", "agent", "AgentStore", "Actor", "SignInError", "SignInInitError", "SignInUserInterruptError", "InitError", "ListError", "AuthClient", "createAuthClient", "isNullish", "nonNullish", "isSatelliteError", "error", "type", "JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE", "fromNullable", "isNullish", "nonNullish", "mapData", "data", "i", "err", "fromNullable", "toNullable", "toSetDoc", "doc", "data", "version", "description", "toNullable", "a", "toDelDoc", "fromDoc", "key", "owner", "docDescription", "rest", "fromNullable", "i", "Principal", "isNullish", "toNullable", "toListMatcherTimestamp", "matcher", "isNullish", "toNullable", "ListError", "toListParams", "paginate", "order", "owner", "Principal", "assertNonNullish", "idlFactory", "IDL", "CommitBatch", "CommitProposal", "ListOrderField", "ListOrder", "TimestampMatcher", "ListMatcher", "ListPaginate", "ListParams", "DeleteControllersArgs", "ControllerScope", "Controller", "DelDoc", "CollectionType", "DelRule", "DeleteProposalAssets", "DepositCyclesArgs", "AssetKey", "AssetEncodingNoContent", "AssetNoContent", "AuthenticationConfigInternetIdentity", "AuthenticationConfig", "ConfigMaxMemorySize", "DbConfig", "StorageConfigIFrame", "StorageConfigRawAccess", "StorageConfigRedirect", "StorageConfig", "Config", "Doc", "ProposalStatus", "AssetsUpgradeOptions", "SegmentsDeploymentOptions", "ProposalType", "Proposal", "Memory", "Permission", "RateConfig", "Rule", "HttpRequest", "StreamingCallbackToken", "StreamingStrategy", "HttpResponse", "StreamingCallbackHttpResponse", "InitAssetKey", "InitUploadResult", "ListResults", "CustomDomain", "ListResults_1", "ListProposalsOrder", "ListProposalsPaginate", "ListProposalsParams", "ProposalKey", "ListProposalResults", "ListRulesMatcher", "ListRulesParams", "ListRulesResults", "MemorySize", "SetController", "SetControllersArgs", "SetDoc", "SetRule", "UploadChunk", "UploadChunkResult", "nonNullish", "satelliteUrl", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "container", "customOrEnvContainer", "nonNullish", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "EnvStore", "getSatelliteActor", "satellite", "getActor", "idlFactory", "getSatelliteExtendedActor", "rest", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "assertNonNullish", "container", "customOrEnvContainer", "ActorStore", "getDoc", "collection", "key", "satellite", "get_doc", "getSatelliteActor", "doc", "fromNullable", "isNullish", "fromDoc", "getManyDocs", "docs", "get_many_docs", "payload", "resultsDocs", "results", "resultDoc", "nonNullish", "setDoc", "set_doc", "toSetDoc", "updatedDoc", "setManyDocs", "set_many_docs", "updatedDocs", "deleteDoc", "del_doc", "toDelDoc", "deleteManyDocs", "del_many_docs", "deleteFilteredDocs", "filter", "del_filtered_docs", "toListParams", "listDocs", "list_docs", "items", "items_page", "items_length", "matches_length", "matches_pages", "item", "dataArray", "owner", "description", "version", "rest", "mapData", "countDocs", "count_docs", "AnonymousIdentity", "getIdentity", "identity", "AnonymousIdentity", "getDoc", "satellite", "rest", "identity", "getIdentity", "getManyDocs", "setDoc", "setManyDocs", "deleteDoc", "deleteManyDocs", "deleteFilteredDocs", "filter", "listDocs", "countDocs", "initUser", "provider", "identity", "getIdentity", "isNullish", "InitError", "userId", "loadUser", "getDoc", "user", "nonNullish", "createUser", "error", "t", "e_", "userOnCreateError", "rest", "setDoc", "authClient", "initAuth", "provider", "createAuthClient", "user", "initUser", "AuthStore", "signIn", "options", "resolve", "reject", "isNullish", "SignInInitError", "InternetIdentityProvider", "error", "ERROR_USER_INTERRUPT", "SignInUserInterruptError", "SignInError", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "signOut", "ActorStore", "AgentStore", "getIdentity", "unsafeIdentity", "getIdentityOnce", "initAuthTimeoutWorker", "auth", "workerUrl", "worker", "timeoutSignOut", "emit", "signOut", "data", "msg", "value", "AuthStore", "user", "isNullish", "envSatelliteId", "viteEnvSatelliteId", "envContainer", "viteEnvContainer", "getSatelliteExtendedActor", "idlFactory", "satellite", "identity", "getIdentity", "fromNullable", "nonNullish", "fromNullable", "toNullable", "uploadAsset", "data", "headers", "restAsset", "actor", "init_asset_upload", "upload_asset_chunk", "commit_asset_upload", "batchId", "mapInitAssetUploadParams", "chunkIds", "uploadChunks", "commitAsset", "mapInitAssetUploadParams", "filename", "collection", "token", "fullPath", "encoding", "description", "toNullable", "commitAsset", "commitFn", "batchId", "chunkIds", "headers", "data", "contentType", "type", "_", "chunk_id", "uploadChunks", "uploadFn", "clone", "isBrowser", "orderId", "start", "chunk", "results", "batchUploadChunks", "limit", "i", "batch", "params", "uploadChunk", "uploadAsset", "satellite", "asset", "actor", "getSatelliteActor", "A", "listAssets", "collection", "filter", "list_assets", "assets", "items_length", "items_page", "matches_length", "matches_pages", "toListParams", "_", "fromNullable", "countAssets", "count_assets", "deleteAsset", "fullPath", "deleteManyAssets", "del_many_assets", "payload", "deleteFilteredAssets", "del_filtered_assets", "getAsset", "get_asset", "getManyAssets", "get_many_assets", "resultAsset", "sha256ToBase64String", "sha256", "c", "uploadBlob", "params", "uploadAssetIC", "uploadFile", "storageFilename", "data", "collection", "headers", "storagePath", "token", "satelliteOptions", "encoding", "description", "identity", "getIdentity", "filename", "fullPath", "satellite", "uploadAsset", "downloadUrl", "listAssets", "filter", "items", "rest", "assets", "t", "name", "owner", "encodings", "created_at", "updated_at", "fromNullable", "acc", "type", "modified", "sha256", "total_length", "sha256ToBase64String", "countAssets", "deleteAsset", "deleteManyAssets", "deleteFilteredAssets", "getAsset", "getManyAssets", "satelliteUrl", "nonNullish", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "assertNonNullish", "container", "envContainer", "initJuno", "initSatellite", "env", "EnvStore", "initAuth", "authSubscribe", "initAuthTimeoutWorker", "callback", "AuthStore"]
|
|
7
7
|
}
|