couchset 0.4.0 → 0.5.0
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/README.md +84 -1
- package/dist/eventing.d.ts +179 -0
- package/dist/eventing.js +822 -0
- package/dist/eventing.js.map +1 -0
- package/dist/next.d.ts +8 -0
- package/dist/next.js +23 -0
- package/dist/next.js.map +1 -1
- package/docs/next-primitives.md +33 -0
- package/next/index.d.ts +2 -0
- package/next/package.json +2 -2
- package/package.json +43 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventing.js","sourceRoot":"","sources":["../src/eventing.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n EventingFunction,\n EventingFunctionManager,\n EventingFunctionSettings,\n EventingFunctionState,\n} from 'couchbase';\n\n/** A Couchbase bucket/scope/collection used by an Eventing function. */\nexport interface EventingKeyspace {\n bucket: string;\n scope?: string;\n collection?: string;\n}\n\n/**\n * A declarative Eventing handler. `name` is logical: CouchSet derives the\n * physical Couchbase name from the Eventing namespace.\n */\nexport interface EventingDefinition {\n name: string;\n code: string;\n sourceKeyspace: EventingKeyspace;\n enforceSchema?: boolean;\n bucketBindings?: EventingFunction['bucketBindings'];\n urlBindings?: EventingFunction['urlBindings'];\n constantBindings?: EventingFunction['constantBindings'];\n settings?: Partial<EventingFunctionSettings>;\n}\n\nexport type EventingFunctionDefinition = EventingDefinition;\n\n/**\n * The metadata collection is used only by Couchbase Eventing for checkpoints\n * and timers. CouchSet never opens it as an application collection or writes\n * documents to it.\n */\nexport interface EventingOptions {\n /** Required ownership boundary for physical Couchbase function names. */\n namespace: string;\n /** A dedicated collection reserved for Couchbase Eventing metadata. */\n metadataKeyspace: EventingKeyspace;\n /** Definitions registered when the control plane is constructed. */\n definitions?: EventingDefinition[];\n /** Alias for definitions, useful for manifest-shaped configuration. */\n functions?: EventingDefinition[];\n /** Explicit SDK manager injection, primarily for tests or owned clusters. */\n manager?: EventingFunctionManagerLike;\n /** Maximum time to wait for Couchbase Eventing lifecycle convergence. */\n lifecycleTimeoutMs?: number;\n /** Delay between lifecycle status checks. Defaults to 250ms. */\n lifecyclePollIntervalMs?: number;\n}\n\nexport interface EventingApplyOptions {\n /**\n * Permit source or metadata keyspace changes. Couchbase must undeploy first,\n * which erases the function's timers and checkpoints.\n */\n allowRecreate?: boolean;\n}\n\nexport type EventingOutcomeAction =\n | 'created'\n | 'updated'\n | 'resumed'\n | 'unchanged'\n | 'pruned'\n | 'paused'\n | 'removed'\n | 'requires-recreate';\n\nexport interface EventingOutcome {\n action: EventingOutcomeAction;\n /** Lifecycle operations performed for this function, in order. */\n actions: EventingOutcomeAction[];\n name: string;\n physicalName: string;\n /** Present whenever undeploying can erase Eventing timers/checkpoints. */\n timerStateLost?: boolean;\n message?: string;\n}\n\n/**\n * Each status array contains the matching outcome, so callers can inspect a\n * report directly without parsing text. An update can also be in `paused` and\n * `resumed`, because that is the safe lifecycle used to perform the update.\n */\nexport interface EventingReport {\n outcomes: EventingOutcome[];\n created: EventingOutcome[];\n updated: EventingOutcome[];\n resumed: EventingOutcome[];\n unchanged: EventingOutcome[];\n pruned: EventingOutcome[];\n paused: EventingOutcome[];\n removed: EventingOutcome[];\n requiresRecreate: EventingOutcome[];\n}\n\n/** The portion of SDK 4.7's EventingFunctionManager used by CouchSet. */\nexport interface EventingFunctionManagerLike {\n upsertFunction(functionDefinition: EventingFunction): Promise<void>;\n dropFunction(name: string): Promise<void>;\n getAllFunctions(): Promise<EventingFunction[]>;\n deployFunction(name: string): Promise<void>;\n undeployFunction(name: string): Promise<void>;\n pauseFunction(name: string): Promise<void>;\n resumeFunction(name: string): Promise<void>;\n functionsStatus(): Promise<{functions: EventingFunctionState[]}>;\n}\n\n/** A minimal client shape that lets Eventing acquire the connected SDK cluster. */\nexport interface EventingClient {\n ready(): Promise<any>;\n getConnection(): {cluster: {eventingFunctions?: () => EventingFunctionManager}};\n}\n\ninterface FunctionLifecycle {\n deployed: boolean;\n paused: boolean;\n transitional: boolean;\n}\n\nconst timerStateWarning =\n 'Undeploying an Eventing function erases its Eventing timers and checkpoints.';\n\nconst emptyReport = (): EventingReport => ({\n created: [],\n outcomes: [],\n paused: [],\n pruned: [],\n removed: [],\n requiresRecreate: [],\n resumed: [],\n unchanged: [],\n updated: [],\n});\n\nconst normalizeKeyspace = (keyspace: EventingKeyspace): Required<EventingKeyspace> => ({\n bucket: keyspace.bucket,\n collection: keyspace.collection || '_default',\n scope: keyspace.scope || '_default',\n});\n\nconst keyspaceEquals = (left: EventingKeyspace, right: EventingKeyspace): boolean => {\n const normalizedLeft = normalizeKeyspace(left);\n const normalizedRight = normalizeKeyspace(right);\n\n return (\n normalizedLeft.bucket === normalizedRight.bucket &&\n normalizedLeft.scope === normalizedRight.scope &&\n normalizedLeft.collection === normalizedRight.collection\n );\n};\n\nconst requiredKeyspace = (keyspace: EventingKeyspace, label: string): void => {\n if (!keyspace || !keyspace.bucket) {\n throw new Error(`${label} requires a non-empty bucket`);\n }\n};\n\nconst stableValue = (value: any): any => {\n if (value === undefined) {\n return undefined;\n }\n if (value === null || typeof value !== 'object') {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(stableValue);\n }\n\n const normalized: any = {};\n Object.keys(value)\n .sort()\n .forEach((key) => {\n const item = stableValue(value[key]);\n if (item !== undefined) {\n normalized[key] = item;\n }\n });\n return normalized;\n};\n\nconst equal = (left: any, right: any): boolean =>\n JSON.stringify(stableValue(left)) === JSON.stringify(stableValue(right));\n\nconst settingsMatch = (\n live: EventingFunction['settings'] | undefined,\n desired: Partial<EventingFunctionSettings> | undefined\n): boolean => {\n const requested = desired || {};\n const comparableLive: any = {};\n\n Object.keys(requested).forEach((key) => {\n if (key !== 'deploymentStatus' && key !== 'processingStatus') {\n comparableLive[key] = (live as any)?.[key];\n }\n });\n\n const comparableDesired: any = {};\n Object.keys(requested).forEach((key) => {\n if (key !== 'deploymentStatus' && key !== 'processingStatus') {\n comparableDesired[key] = (requested as any)[key];\n }\n });\n\n return equal(comparableLive, comparableDesired);\n};\n\nconst lifecycleFor = (\n state: EventingFunctionState | undefined,\n functionDefinition: EventingFunction\n): FunctionLifecycle => {\n const status = (state as any)?.status || '';\n const deploymentStatus =\n (state as any)?.deploymentStatus ||\n (functionDefinition.settings as any)?.deploymentStatus ||\n '';\n const processingStatus =\n (state as any)?.processingStatus ||\n (functionDefinition.settings as any)?.processingStatus ||\n '';\n\n return {\n deployed: status === 'deployed' || status === 'paused' || deploymentStatus === 'deployed',\n paused: status === 'paused' || processingStatus === 'paused',\n transitional:\n status === 'deploying' ||\n status === 'undeploying' ||\n status === 'pausing' ||\n deploymentStatus === 'deploying' ||\n deploymentStatus === 'undeploying',\n };\n};\n\nconst own = (object: any, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(object, key);\n\n/**\n * Declarative Eventing reconciler backed by the SDK 4.7 EventingFunctionManager.\n * It only manages names starting with its namespace prefix.\n */\nexport class Eventing {\n private readonly definitionsByName = new Map<string, EventingDefinition>();\n private readonly eventingMetadataKeyspace: EventingKeyspace;\n private readonly lifecyclePollIntervalMs: number;\n private readonly lifecycleTimeoutMs: number;\n private readonly prefix: string;\n private readonly client?: EventingClient;\n private readonly explicitManager?: EventingFunctionManagerLike;\n\n constructor(client: EventingClient | undefined, options: EventingOptions) {\n if (!options || !options.namespace || !options.namespace.trim()) {\n throw new Error('Eventing requires an explicit, non-empty namespace');\n }\n requiredKeyspace(options.metadataKeyspace, 'Eventing metadataKeyspace');\n if (\n !options.metadataKeyspace.collection ||\n options.metadataKeyspace.collection === '_default'\n ) {\n throw new Error(\n 'Eventing metadataKeyspace requires a dedicated non-default collection; CouchSet never uses it as application data'\n );\n }\n\n this.client = client;\n this.explicitManager = options.manager;\n this.eventingMetadataKeyspace = {...options.metadataKeyspace};\n this.lifecycleTimeoutMs = this.positiveNumber(options.lifecycleTimeoutMs, 30000);\n this.lifecyclePollIntervalMs = this.nonNegativeNumber(options.lifecyclePollIntervalMs, 250);\n this.prefix = `${options.namespace.trim()}__`;\n\n (options.definitions || options.functions || []).forEach((definition) =>\n this.register(definition)\n );\n }\n\n /** Logical namespace that owns this controller's physical functions. */\n public get namespace(): string {\n return this.prefix.slice(0, -2);\n }\n\n /** A copy of registered, code-only declarations. This performs no I/O. */\n public definitions(): EventingDefinition[] {\n return Array.from(this.definitionsByName.values()).map((definition) => ({...definition}));\n }\n\n /** Converts a logical declaration name into its Couchbase function name. */\n public physicalName(name: string): string {\n this.assertLogicalName(name);\n return `${this.prefix}${name}`;\n }\n\n /** Registers or replaces an in-memory manifest declaration without I/O. */\n public register(definition: EventingDefinition): EventingDefinition {\n this.assertDefinition(definition);\n this.definitionsByName.set(definition.name, {...definition});\n return definition;\n }\n\n /** Alias for register(), matching the declaration-oriented API vocabulary. */\n public define(definition: EventingDefinition): EventingDefinition {\n return this.register(definition);\n }\n\n public async apply(options?: EventingApplyOptions): Promise<EventingReport>;\n public async apply(\n definition: EventingDefinition,\n options?: EventingApplyOptions\n ): Promise<EventingReport>;\n public async apply(\n definitionOrOptions?: EventingDefinition | EventingApplyOptions,\n possibleOptions: EventingApplyOptions = {}\n ): Promise<EventingReport> {\n const dynamic = this.isDefinition(definitionOrOptions) ? definitionOrOptions : undefined;\n const options = dynamic\n ? possibleOptions\n : (definitionOrOptions as EventingApplyOptions) || {};\n const report = emptyReport();\n const manager = await this.manager();\n\n if (dynamic) {\n this.register(dynamic);\n }\n\n const live = await manager.getAllFunctions();\n const states = await this.states(manager);\n const statesByName = new Map<string, EventingFunctionState>();\n states.forEach((state) => statesByName.set(state.name, state));\n const liveByName = new Map<string, EventingFunction>();\n live.forEach((functionDefinition) =>\n liveByName.set(functionDefinition.name, functionDefinition)\n );\n\n const targets = dynamic ? [dynamic] : this.definitions();\n for (const definition of targets) {\n await this.reconcile(\n manager,\n definition,\n liveByName.get(this.physicalName(definition.name)),\n statesByName.get(this.physicalName(definition.name)),\n options,\n report\n );\n }\n\n // A dynamic apply is intentionally surgical: it never prunes anything.\n if (!dynamic) {\n const declared = new Set<string>();\n targets.forEach((definition) => declared.add(this.physicalName(definition.name)));\n for (const functionDefinition of live) {\n if (this.owns(functionDefinition.name) && !declared.has(functionDefinition.name)) {\n await this.prune(\n manager,\n functionDefinition,\n statesByName.get(functionDefinition.name),\n report\n );\n }\n }\n }\n\n return report;\n }\n\n /** Temporarily disables one namespace-owned Eventing function. */\n public async pause(name: string): Promise<EventingReport> {\n const report = emptyReport();\n const physicalName = this.physicalName(name);\n const manager = await this.manager();\n const live = await manager.getAllFunctions();\n const current = live.filter(\n (functionDefinition) => functionDefinition.name === physicalName\n )[0];\n\n if (!current) {\n this.record(\n report,\n this.outcome(\n 'unchanged',\n name,\n ['unchanged'],\n 'No namespace-owned Eventing function exists with this name.'\n )\n );\n return report;\n }\n\n const states = await this.states(manager);\n const state = states.filter((item) => item.name === physicalName)[0];\n const lifecycle = await this.stableLifecycle(manager, physicalName, current, state);\n\n if (!lifecycle.deployed || lifecycle.paused) {\n this.record(report, this.outcome('unchanged', name, ['unchanged']));\n return report;\n }\n\n await manager.pauseFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'paused');\n this.record(report, this.outcome('paused', name, ['paused']));\n return report;\n }\n\n /**\n * Intentionally undeploys then deletes one namespace-owned function.\n * Undeployment erases Couchbase Eventing timers and checkpoints.\n */\n public async remove(name: string): Promise<EventingReport> {\n const report = emptyReport();\n const physicalName = this.physicalName(name);\n const manager = await this.manager();\n const live = await manager.getAllFunctions();\n const current = live.filter(\n (functionDefinition) => functionDefinition.name === physicalName\n )[0];\n\n if (!current) {\n this.record(\n report,\n this.outcome(\n 'unchanged',\n name,\n ['unchanged'],\n 'No namespace-owned Eventing function exists with this name.'\n )\n );\n return report;\n }\n\n const states = await this.states(manager);\n const state = states.filter((item) => item.name === physicalName)[0];\n const lifecycle = await this.stableLifecycle(manager, physicalName, current, state);\n\n if (lifecycle.deployed) {\n await manager.undeployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'undeployed');\n }\n await manager.dropFunction(physicalName);\n this.definitionsByName.delete(name);\n this.record(\n report,\n this.outcome('removed', name, ['removed'], timerStateWarning, lifecycle.deployed)\n );\n return report;\n }\n\n private async reconcile(\n manager: EventingFunctionManagerLike,\n definition: EventingDefinition,\n current: EventingFunction | undefined,\n state: EventingFunctionState | undefined,\n options: EventingApplyOptions,\n report: EventingReport\n ): Promise<void> {\n const physicalName = this.physicalName(definition.name);\n const desired = this.sdkDefinition(definition);\n\n if (!current) {\n await manager.upsertFunction(desired);\n await manager.deployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n this.record(report, this.outcome('created', definition.name, ['created']));\n return;\n }\n\n const lifecycle = await this.stableLifecycle(manager, physicalName, current, state);\n const keyspaceChanged =\n !keyspaceEquals(current.sourceKeyspace, desired.sourceKeyspace) ||\n !keyspaceEquals(current.metadataKeyspace, desired.metadataKeyspace);\n\n if (keyspaceChanged) {\n if (!options.allowRecreate) {\n this.record(\n report,\n this.outcome(\n 'requires-recreate',\n definition.name,\n ['requires-recreate'],\n `${timerStateWarning} Re-run apply with {allowRecreate: true} to permit this keyspace change.`\n )\n );\n return;\n }\n\n if (lifecycle.deployed) {\n await manager.undeployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'undeployed');\n }\n await manager.upsertFunction(desired);\n await manager.deployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n this.record(\n report,\n this.outcome(\n 'updated',\n definition.name,\n ['updated'],\n timerStateWarning,\n lifecycle.deployed\n )\n );\n return;\n }\n\n if (this.matches(current, desired, definition)) {\n if (lifecycle.paused) {\n await manager.resumeFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n this.record(report, this.outcome('resumed', definition.name, ['resumed']));\n } else if (!lifecycle.deployed) {\n await manager.deployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n this.record(report, this.outcome('resumed', definition.name, ['resumed']));\n } else {\n this.record(report, this.outcome('unchanged', definition.name, ['unchanged']));\n }\n return;\n }\n\n const actions: EventingOutcomeAction[] = [];\n if (lifecycle.deployed && !lifecycle.paused) {\n await manager.pauseFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'paused');\n actions.push('paused');\n }\n await manager.upsertFunction(desired);\n actions.push('updated');\n await this.activateAfterUpsert(manager, physicalName, desired, actions);\n this.record(report, this.outcome('updated', definition.name, actions));\n }\n\n private async prune(\n manager: EventingFunctionManagerLike,\n functionDefinition: EventingFunction,\n state: EventingFunctionState | undefined,\n report: EventingReport\n ): Promise<void> {\n const lifecycle = await this.stableLifecycle(\n manager,\n functionDefinition.name,\n functionDefinition,\n state\n );\n if (lifecycle.deployed) {\n await manager.undeployFunction(functionDefinition.name);\n await this.waitForLifecycle(manager, functionDefinition.name, 'undeployed');\n }\n await manager.dropFunction(functionDefinition.name);\n this.record(\n report,\n this.outcome(\n 'pruned',\n this.logicalName(functionDefinition.name),\n ['pruned'],\n timerStateWarning,\n lifecycle.deployed\n )\n );\n }\n\n private matches(\n current: EventingFunction,\n desired: EventingFunction,\n definition: EventingDefinition\n ): boolean {\n return (\n current.code === desired.code &&\n (definition.enforceSchema === undefined ||\n current.enforceSchema === desired.enforceSchema) &&\n equal(current.bucketBindings || [], desired.bucketBindings || []) &&\n equal(current.urlBindings || [], desired.urlBindings || []) &&\n equal(current.constantBindings || [], desired.constantBindings || []) &&\n settingsMatch(current.settings, definition.settings)\n );\n }\n\n private sdkDefinition(definition: EventingDefinition): EventingFunction {\n const metadataKeyspace = normalizeKeyspace(this.metadataKeyspace());\n const sourceKeyspace = normalizeKeyspace(definition.sourceKeyspace);\n const settings: any = {...(definition.settings || {})};\n\n // Lifecycle is controlled through manager methods, never through an upsert payload.\n delete settings.deploymentStatus;\n delete settings.processingStatus;\n\n return {\n bucketBindings: definition.bucketBindings || [],\n code: definition.code,\n constantBindings: definition.constantBindings || [],\n enforceSchema: definition.enforceSchema,\n metadataKeyspace,\n name: this.physicalName(definition.name),\n settings,\n sourceKeyspace,\n urlBindings: definition.urlBindings || [],\n } as EventingFunction;\n }\n\n private metadataKeyspace(): EventingKeyspace {\n // The keyspace has already been validated in the constructor. Keeping it\n // behind this helper prevents accidental exposure as a CouchSet collection.\n return this.eventingMetadataKeyspace;\n }\n\n private async manager(): Promise<EventingFunctionManagerLike> {\n if (this.explicitManager) {\n return this.explicitManager;\n }\n if (!this.client) {\n throw new Error(\n 'Eventing requires a CouchSet client or an explicit EventingFunctionManager'\n );\n }\n\n await this.client.ready();\n const cluster = this.client.getConnection().cluster;\n if (!cluster || typeof cluster.eventingFunctions !== 'function') {\n throw new Error('The connected Couchbase SDK does not expose EventingFunctionManager');\n }\n return cluster.eventingFunctions() as EventingFunctionManagerLike;\n }\n\n private async states(manager: EventingFunctionManagerLike): Promise<EventingFunctionState[]> {\n const result = await manager.functionsStatus();\n return result.functions || [];\n }\n\n /**\n * Management requests acknowledge receipt, not necessarily completion. Do\n * not issue the next incompatible Eventing operation until status confirms\n * that Couchbase has converged.\n */\n private async waitForLifecycle(\n manager: EventingFunctionManagerLike,\n physicalName: string,\n expected: 'deployed' | 'paused' | 'undeployed'\n ): Promise<void> {\n const deadline = Date.now() + this.lifecycleTimeoutMs;\n\n while (true) {\n const state = (await this.states(manager)).filter(\n (item) => item.name === physicalName\n )[0];\n const lifecycle = lifecycleFor(state, {settings: {}} as EventingFunction);\n const reached =\n !!state &&\n !lifecycle.transitional &&\n ((expected === 'deployed' && lifecycle.deployed && !lifecycle.paused) ||\n (expected === 'paused' && lifecycle.deployed && lifecycle.paused) ||\n (expected === 'undeployed' && !lifecycle.deployed));\n\n if (reached) {\n return;\n }\n if (Date.now() >= deadline) {\n throw new Error(\n `Timed out waiting for Eventing function ${physicalName} to become ${expected}`\n );\n }\n await new Promise<void>((resolve) => setTimeout(resolve, this.lifecyclePollIntervalMs));\n }\n }\n\n /**\n * Couchbase Server may turn a paused function into an undeployed function\n * when upsert persists new code/settings/bindings. Inspect that post-upsert\n * state rather than assuming resume is legal; deploy is the compatible\n * activation operation in that case.\n */\n private async activateAfterUpsert(\n manager: EventingFunctionManagerLike,\n physicalName: string,\n functionDefinition: EventingFunction,\n actions: EventingOutcomeAction[]\n ): Promise<void> {\n const lifecycle = await this.waitForStableLifecycle(\n manager,\n physicalName,\n functionDefinition\n );\n\n if (lifecycle.deployed && lifecycle.paused) {\n await manager.resumeFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n actions.push('resumed');\n } else if (!lifecycle.deployed) {\n await manager.deployFunction(physicalName);\n await this.waitForLifecycle(manager, physicalName, 'deployed');\n actions.push('resumed');\n }\n }\n\n /**\n * A live function with no status row is unknown, not safely undeployed.\n * Poll for a positive row; a known transitional row remains an immediate\n * blocker so callers do not race an operator's in-progress lifecycle call.\n */\n private async stableLifecycle(\n manager: EventingFunctionManagerLike,\n physicalName: string,\n functionDefinition: EventingFunction,\n initialState: EventingFunctionState | undefined\n ): Promise<FunctionLifecycle> {\n if (initialState) {\n const lifecycle = lifecycleFor(initialState, functionDefinition);\n this.assertStable(physicalName, lifecycle);\n return lifecycle;\n }\n\n const deadline = Date.now() + this.lifecycleTimeoutMs;\n while (true) {\n const state = (await this.states(manager)).filter(\n (item) => item.name === physicalName\n )[0];\n if (state) {\n const lifecycle = lifecycleFor(state, functionDefinition);\n this.assertStable(physicalName, lifecycle);\n return lifecycle;\n }\n if (Date.now() >= deadline) {\n throw new Error(\n `Timed out waiting for Eventing status for function ${physicalName}`\n );\n }\n await new Promise<void>((resolve) => setTimeout(resolve, this.lifecyclePollIntervalMs));\n }\n }\n\n /** Waits for a stable state caused by this controller's own upsert call. */\n private async waitForStableLifecycle(\n manager: EventingFunctionManagerLike,\n physicalName: string,\n functionDefinition: EventingFunction\n ): Promise<FunctionLifecycle> {\n const deadline = Date.now() + this.lifecycleTimeoutMs;\n\n while (true) {\n const state = (await this.states(manager)).filter(\n (item) => item.name === physicalName\n )[0];\n if (state) {\n const lifecycle = lifecycleFor(state, functionDefinition);\n if (!lifecycle.transitional) {\n return lifecycle;\n }\n }\n if (Date.now() >= deadline) {\n throw new Error(\n `Timed out waiting for Eventing function ${physicalName} to settle after upsert`\n );\n }\n await new Promise<void>((resolve) => setTimeout(resolve, this.lifecyclePollIntervalMs));\n }\n }\n\n private record(report: EventingReport, outcome: EventingOutcome): void {\n report.outcomes.push(outcome);\n const actions = outcome.actions.length ? outcome.actions : [outcome.action];\n actions.forEach((action) => {\n const list =\n action === 'requires-recreate' ? report.requiresRecreate : (report as any)[action];\n if (list && list.indexOf(outcome) === -1) {\n list.push(outcome);\n }\n });\n }\n\n private outcome(\n action: EventingOutcomeAction,\n name: string,\n actions: EventingOutcomeAction[],\n message?: string,\n timerStateLost?: boolean\n ): EventingOutcome {\n return {\n action,\n actions,\n message,\n name,\n physicalName: this.physicalName(name),\n timerStateLost,\n };\n }\n\n private owns(name: string): boolean {\n return typeof name === 'string' && name.indexOf(this.prefix) === 0;\n }\n\n private logicalName(physicalName: string): string {\n if (!this.owns(physicalName)) {\n throw new Error(\n `Refusing to manage Eventing function outside namespace ${this.namespace}`\n );\n }\n return physicalName.slice(this.prefix.length);\n }\n\n private assertDefinition(definition: EventingDefinition): void {\n if (!definition || !definition.name || !definition.name.trim()) {\n throw new Error('Eventing definitions require a non-empty logical name');\n }\n if (!definition.code || typeof definition.code !== 'string') {\n throw new Error(`Eventing definition ${definition.name} requires handler code`);\n }\n requiredKeyspace(\n definition.sourceKeyspace,\n `Eventing definition ${definition.name} sourceKeyspace`\n );\n if (keyspaceEquals(definition.sourceKeyspace, this.metadataKeyspace())) {\n throw new Error(\n `Eventing definition ${definition.name} must use a dedicated metadata keyspace distinct from its source keyspace`\n );\n }\n }\n\n private assertLogicalName(name: string): void {\n if (!name || !name.trim()) {\n throw new Error('Eventing requires a non-empty logical function name');\n }\n if (name.indexOf(this.prefix) === 0) {\n throw new Error('Pass Eventing logical names, not physical namespace-prefixed names');\n }\n }\n\n private assertStable(physicalName: string, lifecycle: FunctionLifecycle): void {\n if (lifecycle.transitional) {\n throw new Error(\n `Eventing function ${physicalName} is transitioning; wait for Couchbase to settle before reconciling it`\n );\n }\n }\n\n private isDefinition(value: any): value is EventingDefinition {\n return !!value && own(value, 'name') && own(value, 'code') && own(value, 'sourceKeyspace');\n }\n\n private positiveNumber(value: number | undefined, fallback: number): number {\n return typeof value === 'number' && value > 0 ? value : fallback;\n }\n\n private nonNegativeNumber(value: number | undefined, fallback: number): number {\n return typeof value === 'number' && value >= 0 ? value : fallback;\n }\n}\n\n/**\n * Construct an Eventing control plane from a CouchSet client. The client is\n * used only to obtain the SDK EventingFunctionManager after `ready()`.\n */\nexport const createEventing = (client: EventingClient, options: EventingOptions): Eventing =>\n new Eventing(client, options);\n\n/** Construct an Eventing control plane around an application-owned SDK manager. */\nexport const createEventingWithManager = (options: EventingOptions): Eventing => {\n if (!options.manager) {\n throw new Error('createEventingWithManager requires EventingOptions.manager');\n }\n return new Eventing(undefined, options);\n};\n\n/** A small helper that makes Eventing definitions read as manifest declarations. */\nexport const defineEventingFunction = (definition: EventingDefinition): EventingDefinition => ({\n ...definition,\n});\n"]}
|
package/dist/next.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { Bucket, Cluster } from 'couchbase';
|
|
2
2
|
import type { CouchsetArgs } from './connection';
|
|
3
|
+
import { Eventing } from './eventing';
|
|
4
|
+
import type { EventingOptions } from './eventing';
|
|
3
5
|
import { AutoModelFields, FieldCodec, Model, ModelConnection, ModalOptions } from './model';
|
|
4
6
|
import type { ModelIndexDefinition } from './model';
|
|
5
7
|
import type { SortType } from './query/interface/query.types';
|
|
6
8
|
export type { FieldCodec } from './model';
|
|
9
|
+
export * from './eventing';
|
|
7
10
|
/** A JSON-friendly Date codec for models declared with defineModel. */
|
|
8
11
|
export declare const dateCodec: FieldCodec<Date, string>;
|
|
9
12
|
export interface ModelCollectionSettings {
|
|
@@ -115,6 +118,11 @@ export declare class CouchsetClient {
|
|
|
115
118
|
ready(): Promise<this>;
|
|
116
119
|
shutdown(): Promise<void>;
|
|
117
120
|
definitions(): ModelDefinition<any>[];
|
|
121
|
+
/**
|
|
122
|
+
* Creates a namespace-owned Eventing control plane. Definitions remain
|
|
123
|
+
* declarative until eventing.apply() is called.
|
|
124
|
+
*/
|
|
125
|
+
eventing(options: EventingOptions): Eventing;
|
|
118
126
|
/** Bind and register a definition without provisioning or index DDL. */
|
|
119
127
|
model<T>(definition: ModelDefinition<T>): TypedModel<T>;
|
|
120
128
|
/**
|
package/dist/next.js
CHANGED
|
@@ -10,6 +10,20 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
25
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
26
|
+
};
|
|
13
27
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
28
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
29
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -88,11 +102,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
88
102
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
89
103
|
exports.createCouchsetClient = exports.createCouchsetTestFixture = exports.CouchsetTransaction = exports.TransactionModel = exports.CouchsetClient = exports.defineModel = exports.dateCodec = void 0;
|
|
90
104
|
var couchbase_1 = __importDefault(require("./couchbase"));
|
|
105
|
+
var eventing_1 = require("./eventing");
|
|
91
106
|
var model_1 = require("./model");
|
|
92
107
|
var indexes_1 = require("./model/indexes");
|
|
93
108
|
var keyspace_1 = require("./model/keyspace");
|
|
94
109
|
var builders_1 = require("./query/helpers/builders");
|
|
95
110
|
var uuid_1 = require("./uuid");
|
|
111
|
+
__exportStar(require("./eventing"), exports);
|
|
96
112
|
/** A JSON-friendly Date codec for models declared with defineModel. */
|
|
97
113
|
exports.dateCodec = {
|
|
98
114
|
fromDatabase: function (value) { return new Date(value); },
|
|
@@ -280,6 +296,13 @@ var CouchsetClient = /** @class */ (function () {
|
|
|
280
296
|
return definition;
|
|
281
297
|
});
|
|
282
298
|
};
|
|
299
|
+
/**
|
|
300
|
+
* Creates a namespace-owned Eventing control plane. Definitions remain
|
|
301
|
+
* declarative until eventing.apply() is called.
|
|
302
|
+
*/
|
|
303
|
+
CouchsetClient.prototype.eventing = function (options) {
|
|
304
|
+
return new eventing_1.Eventing(this, options);
|
|
305
|
+
};
|
|
283
306
|
/** Bind and register a definition without provisioning or index DDL. */
|
|
284
307
|
CouchsetClient.prototype.model = function (definition) {
|
|
285
308
|
var identity = modelIdentity(definition);
|
package/dist/next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Bucket, Cluster} from 'couchbase';\n\nimport couchbase from './couchbase';\nimport type {CouchsetArgs} from './connection';\nimport {AutoModelFields, FieldCodec, Model, ModelConnection, ModalOptions} from './model';\nimport type {ModelIndexDefinition} from './model';\nimport {buildIndexQuery} from './model/indexes';\nimport {escapeIdentifier, keyspaceIdentifier} from './model/keyspace';\nimport type {SortType} from './query/interface/query.types';\nimport {buildWhereExpr} from './query/helpers/builders';\nimport {generateUUID} from './uuid';\n\nexport type {FieldCodec} from './model';\n\n/** A JSON-friendly Date codec for models declared with defineModel. */\nexport const dateCodec: FieldCodec<Date, string> = {\n fromDatabase: (value: string): Date => new Date(value),\n toDatabase: (value: Date): string => value.toISOString(),\n};\n\nexport interface ModelCollectionSettings {\n maxExpiry?: number;\n history?: boolean;\n}\n\n/**\n * A model definition has no connection and performs no I/O. Definitions may be\n * reused safely across clients and are the unit the client registers.\n */\nexport type ModelField<T> = Extract<keyof T, string>;\nexport type TypedIndexField<T> = ModelField<T> | Partial<Record<ModelField<T>, SortType>>;\nexport type ModelCodecs<T> = Partial<{\n [Field in ModelField<T>]: FieldCodec<T[Field], any>;\n}> &\n Partial<Record<`${string}.${string}`, FieldCodec<any, any>>>;\n\nexport interface TypedModelIndexDefinition<T> extends Omit<ModelIndexDefinition, 'fields'> {\n fields?: TypedIndexField<T>[];\n}\n\nexport interface ModelDefinition<T = any> extends Omit<ModalOptions, 'codecs' | 'indexes'> {\n name: string;\n collectionSettings?: ModelCollectionSettings;\n codecs?: ModelCodecs<T>;\n indexes?: TypedModelIndexDefinition<T>[];\n}\n\n/** User fields are distinct from CouchSet's generated persistence metadata. */\nexport type ModelCreateInput<T> = Omit<T, keyof AutoModelFields> &\n Partial<Pick<T, Extract<keyof T, keyof AutoModelFields>>>;\n\nexport interface TypedModel<T>\n extends Omit<Model, 'getById' | 'getWithCas' | 'insert' | 'replaceById' | 'replaceIfCas'> {\n getById(id: string, options?: any): Promise<T & AutoModelFields>;\n getWithCas(\n id: string,\n options?: any\n ): Promise<{content: T & AutoModelFields; cas: any; expiryTime?: any}>;\n insert(data: ModelCreateInput<T>, options?: any): Promise<T & AutoModelFields>;\n replaceById(id: string, data: T, options?: any): Promise<T & AutoModelFields>;\n replaceIfCas(id: string, data: T, cas: any, options?: any): Promise<T & AutoModelFields>;\n}\n\nexport const defineModel = <T = any>(definition: ModelDefinition<T>): ModelDefinition<T> => {\n if (!definition || !definition.name) {\n throw new Error('defineModel requires a non-empty name');\n }\n\n return {...definition};\n};\n\nexport interface CouchsetClientDependencies {\n /** Supply a fully controlled runtime for tests or an application-owned connection. */\n connection?: ModelConnection;\n /** Supply an already connected SDK cluster/bucket without using couchbase.connect. */\n cluster?: Cluster;\n bucket?: Bucket;\n /** Override connection construction; useful for dependency injection and test doubles. */\n connect?: (settings: CouchsetArgs) => Promise<Cluster>;\n}\n\nexport interface CouchsetClientOptions extends Partial<CouchsetArgs> {\n models?: Array<ModelDefinition<any>>;\n dependencies?: CouchsetClientDependencies;\n}\n\nexport interface EnsureCollectionsOptions {\n models?: Array<ModelDefinition<any>>;\n timeoutMs?: number;\n pollIntervalMs?: number;\n}\n\nexport interface ProvisionOptions extends EnsureCollectionsOptions {\n collections?: boolean;\n indexes?: boolean;\n waitForIndexes?: boolean;\n}\n\nexport interface RegisterModelOptions extends ProvisionOptions {\n /** Explicitly provision this dynamic model. Constructors and CRUD never do this. */\n provision?: boolean | {collections?: boolean; indexes?: boolean; waitForIndexes?: boolean};\n}\n\nexport interface ProvisionedTarget {\n scope: string;\n collection: string;\n createdScope: boolean;\n createdCollection: boolean;\n}\n\nexport interface IndexPlanItem {\n status: 'create' | 'matching' | 'replace';\n definition: ModelIndexDefinition;\n keyspace: string;\n target: CollectionTarget;\n /** The physical index CouchSet will create. Replacement names are versioned. */\n createAs: string;\n /** Only populated for an explicit or detected safe replacement. */\n replaces?: string;\n reason?: string;\n}\n\nexport interface IndexPlan {\n items: IndexPlanItem[];\n}\n\nexport interface ApplyIndexPlanOptions {\n /** Opt-in only: drop old indexes after the replacement is online. */\n dropReplaced?: boolean;\n timeoutMs?: number;\n}\n\ninterface RegisteredModel<T = any> {\n definition: ModelDefinition<T>;\n model: Model;\n}\n\ninterface CollectionTarget {\n scope: string;\n collection: string;\n settings?: ModelCollectionSettings;\n}\n\nconst defaultSettings = (options: CouchsetClientOptions): CouchsetArgs => ({\n bucketName: options.bucketName || 'default',\n connectionString: options.connectionString || 'couchbase://localhost',\n password: options.password || '',\n username: options.username || '',\n proxy: options.proxy,\n});\n\nconst errorText = (error: any): string => `${error?.name || ''} ${error?.message || error || ''}`;\nconst isAlreadyExists = (error: any): boolean =>\n /already exists|exists|ScopeExists|CollectionExists/i.test(errorText(error));\nconst isNotFound = (error: any): boolean => /not found|not exist/i.test(errorText(error));\n\nconst provisionError = (operation: string, target: string, error: any): Error => {\n const message = errorText(error);\n const privilege = /access|permission|authoriz|privilege|forbidden/i.test(message)\n ? ' This operation requires Couchbase Manage Scopes privileges on the bucket.'\n : '';\n const wrapped: any = new Error(\n `CouchSet could not ${operation} ${target}.${privilege} ${message}`.trim()\n );\n wrapped.cause = error;\n return wrapped;\n};\n\nconst delay = (milliseconds: number): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, milliseconds));\n\nclass DirectConnection implements ModelConnection {\n public cluster: Cluster;\n public bucket: Bucket;\n private connectPromise?: Promise<Cluster>;\n\n constructor(\n private readonly settings: CouchsetArgs,\n private readonly dependencies: CouchsetClientDependencies\n ) {\n this.cluster = dependencies.cluster as Cluster;\n this.bucket = dependencies.bucket as Bucket;\n\n if (this.cluster && !this.bucket) {\n this.bucket = this.cluster.bucket(settings.bucketName);\n }\n }\n\n public getBucket(): string {\n return this.settings.bucketName;\n }\n\n public getCollection(scopeName?: string, collectionName?: string): any {\n if (!this.bucket) {\n throw new Error('CouchSet client is not connected; call client.ready() first');\n }\n\n if (!scopeName && !collectionName) {\n return this.bucket.defaultCollection();\n }\n\n return this.bucket.scope(scopeName || '_default').collection(collectionName || '_default');\n }\n\n public isConnected(): boolean {\n return !!this.cluster && !!this.bucket;\n }\n\n public async ready(): Promise<DirectConnection> {\n if (this.isConnected()) {\n return this;\n }\n\n if (!this.connectPromise) {\n const connect =\n this.dependencies.connect ||\n ((settings: CouchsetArgs) =>\n couchbase.connect(settings.connectionString, {\n password: settings.password,\n proxy: settings.proxy,\n username: settings.username,\n }));\n this.connectPromise = connect(this.settings);\n }\n\n this.cluster = await this.connectPromise;\n this.bucket = this.cluster.bucket(this.settings.bucketName);\n return this;\n }\n\n public shouldReconnect(): boolean {\n return false;\n }\n\n public markDisconnected(): void {\n // A client-owned connection never retries an arbitrary write operation.\n }\n\n public async shutdown(): Promise<void> {\n if (this.cluster && typeof (this.cluster as any).close === 'function') {\n await (this.cluster as any).close();\n }\n this.cluster = undefined as any;\n this.bucket = undefined as any;\n }\n}\n\n/**\n * A client owns its model-definition registry and connection. It intentionally\n * does not alter the legacy singleton or register models globally.\n */\nexport class CouchsetClient {\n private readonly connection: ModelConnection;\n private readonly registered = new Map<string, RegisteredModel<any>>();\n private readonly settings: CouchsetArgs;\n\n constructor(options: CouchsetClientOptions = {}) {\n this.settings = defaultSettings(options);\n const dependencies = options.dependencies || {};\n\n if (dependencies.connection) {\n const bucketName = dependencies.connection.getBucket();\n if (!bucketName) {\n throw new Error('Injected CouchSet connections must expose a bucket name');\n }\n if (options.bucketName && options.bucketName !== bucketName) {\n throw new Error(\n `Injected CouchSet connection targets ${bucketName}, not requested bucket ${options.bucketName}`\n );\n }\n this.settings.bucketName = bucketName;\n } else if (dependencies.bucket) {\n const bucketName = dependencies.bucket.name;\n if (options.bucketName && options.bucketName !== bucketName) {\n throw new Error(\n `Injected Couchbase bucket targets ${bucketName}, not requested bucket ${options.bucketName}`\n );\n }\n this.settings.bucketName = bucketName;\n } else if (dependencies.cluster && !options.bucketName) {\n throw new Error('bucketName is required when injecting a Couchbase cluster');\n }\n\n this.connection =\n dependencies.connection || new DirectConnection(this.settings, dependencies);\n\n (options.models || []).forEach((definition) => this.model(definition));\n }\n\n public async ready(): Promise<this> {\n await this.connection.ready();\n return this;\n }\n\n public async shutdown(): Promise<void> {\n const shutdown = (this.connection as any).shutdown;\n if (typeof shutdown === 'function') {\n await shutdown.call(this.connection);\n }\n }\n\n public definitions(): ModelDefinition<any>[] {\n return Array.from(this.registered.values()).map(({definition}) => definition);\n }\n\n /** Bind and register a definition without provisioning or index DDL. */\n public model<T>(definition: ModelDefinition<T>): TypedModel<T> {\n const identity = modelIdentity(definition);\n const existing = this.registered.get(identity);\n\n if (existing) {\n assertSameDefinition(existing.definition, definition);\n return existing.model as TypedModel<T>;\n }\n\n const model = new Model(definition.name, definition as ModalOptions, this.connection);\n this.registered.set(identity, {definition, model});\n return model as TypedModel<T>;\n }\n\n /**\n * Async registration for dynamic models. DDL is performed only when the\n * caller explicitly opts into provision; ordinary model() is side-effect-free.\n */\n public async registerModel<T>(\n definition: ModelDefinition<T>,\n options: RegisterModelOptions = {}\n ): Promise<TypedModel<T>> {\n const model = this.model(definition);\n const requested = options.provision;\n\n if (requested) {\n const config =\n typeof requested === 'boolean' ? {collections: true, indexes: true} : requested;\n await this.provision({\n collections: config.collections !== false,\n indexes: config.indexes !== false,\n models: [definition],\n timeoutMs: options.timeoutMs,\n waitForIndexes: config.waitForIndexes,\n });\n }\n\n return model;\n }\n\n /** Create only missing scopes/collections. Existing resources are never altered. */\n public async ensureCollections(\n options: EnsureCollectionsOptions = {}\n ): Promise<ProvisionedTarget[]> {\n await this.ready();\n const targets = this.targets(options.models);\n const manager: any = (this.connection as any).bucket.collections();\n let manifest: any[];\n\n try {\n manifest = await manager.getAllScopes();\n } catch (error) {\n throw provisionError('read the scope manifest for', this.settings.bucketName, error);\n }\n\n const result: ProvisionedTarget[] = [];\n for (const target of targets) {\n const defaultTarget = target.scope === '_default' && target.collection === '_default';\n if (defaultTarget) {\n result.push({...target, createdScope: false, createdCollection: false});\n continue;\n }\n\n let scope = findScope(manifest, target.scope);\n let createdScope = false;\n if (!scope && target.scope !== '_default') {\n try {\n await manager.createScope(target.scope);\n createdScope = true;\n } catch (error) {\n if (!isAlreadyExists(error)) {\n throw provisionError('create scope', target.scope, error);\n }\n }\n manifest = await this.waitForCollectionManifest(target.scope, undefined, options);\n scope = findScope(manifest, target.scope);\n }\n\n if (!scope) {\n throw new Error(`CouchSet could not find scope ${target.scope} after provisioning`);\n }\n\n const exists = (scope.collections || []).some(\n (item: any) => item.name === target.collection\n );\n let createdCollection = false;\n if (!exists) {\n try {\n await manager.createCollection(\n target.collection,\n target.scope,\n target.settings || {}\n );\n createdCollection = true;\n } catch (error) {\n if (!isAlreadyExists(error)) {\n throw provisionError(\n 'create collection',\n `${target.scope}.${target.collection}`,\n error\n );\n }\n }\n }\n\n await this.waitForCollectionManifest(target.scope, target.collection, options);\n result.push({...target, createdScope, createdCollection});\n }\n\n return result;\n }\n\n /** Explicit bootstrap: provisioning occurs before index creation. */\n public async provision(options: ProvisionOptions = {}): Promise<{\n collections: ProvisionedTarget[];\n indexes: string[];\n }> {\n const definitions = options.models || this.definitions();\n const collections =\n options.collections === false\n ? []\n : await this.ensureCollections({...options, models: definitions});\n const indexes = options.indexes\n ? await this.ensureIndexes({\n models: definitions,\n waitForIndexes: options.waitForIndexes,\n timeoutMs: options.timeoutMs,\n })\n : [];\n\n return {collections, indexes};\n }\n\n /** Normal ensureIndexes stays create-only. It never checks, drops, or changes an existing index. */\n public async ensureIndexes(\n options: {\n models?: Array<ModelDefinition<any>>;\n deferred?: boolean;\n waitForIndexes?: boolean;\n timeoutMs?: number;\n } = {}\n ): Promise<string[]> {\n await this.ready();\n const definitions = options.models || this.definitions();\n const queries: string[] = [];\n const indexes: Array<{name: string; target: CollectionTarget}> = [];\n\n for (const definition of definitions) {\n const model = this.model(definition);\n const statements = await model.ensureIndexes({deferred: options.deferred});\n queries.push(...statements);\n indexes.push(\n ...(definition.indexes || []).map((index) => ({\n name: index.name,\n target: definitionTarget(definition),\n }))\n );\n }\n\n if (options.waitForIndexes && indexes.length) {\n await this.waitForIndexes(indexes, options.timeoutMs);\n }\n\n return queries;\n }\n\n /** Report missing, matching, and drifted indexes; this method has no DDL side effects. */\n public async planIndexes(\n options: {models?: Array<ModelDefinition<any>>} = {}\n ): Promise<IndexPlan> {\n await this.ready();\n const rows = await this.indexCatalog();\n const items: IndexPlanItem[] = [];\n\n for (const definition of options.models || this.definitions()) {\n const keyspace = this.keyspace(definition);\n const target = definitionTarget(definition);\n for (const index of definition.indexes || []) {\n const matchingRows = rows.filter((row) => indexRowMatchesTarget(row, definition));\n const desired = matchingRows.find((row) => row.name === index.name);\n const replacementName = versionedIndexName(index.name, index);\n const replacement = matchingRows.find((row) => row.name === replacementName);\n\n // A previous safe rollout may have dropped the old logical name\n // while retaining this deterministic replacement physical name.\n if (replacement && indexMatches(replacement, index)) {\n items.push({\n createAs: replacementName,\n definition: index,\n keyspace,\n status: 'matching',\n target,\n });\n continue;\n }\n\n if (desired && indexMatches(desired, index)) {\n items.push({\n createAs: index.name,\n definition: index,\n keyspace,\n status: 'matching',\n target,\n });\n continue;\n }\n\n // `replaces` explicitly asks for a new physical index, even if\n // the predecessor happens to have equivalent keys.\n const predecessorName = index.replaces || index.name;\n const predecessor = matchingRows.find((row) => row.name === predecessorName);\n\n if (!predecessor) {\n items.push({\n createAs: index.name,\n definition: index,\n keyspace,\n status: 'create',\n target,\n });\n continue;\n }\n\n const createAs = index.replaces ? index.name : replacementName;\n items.push({\n createAs,\n definition: index,\n keyspace,\n reason: 'Declared keys, predicate, or primary mode differs from the live index.',\n replaces: predecessor.name,\n status: 'replace',\n target,\n });\n }\n }\n\n return {items};\n }\n\n /**\n * Apply a reviewed plan by creating versioned replacements and waiting for\n * them. Dropping old indexes is deliberately an explicit second opt-in.\n */\n public async applyIndexPlan(\n plan: IndexPlan,\n options: ApplyIndexPlanOptions = {}\n ): Promise<string[]> {\n await this.ready();\n const applied: string[] = [];\n const replacements: Array<{name: string; target: CollectionTarget}> = [];\n\n for (const item of plan.items) {\n if (item.status === 'matching') {\n continue;\n }\n\n const definition = {...item.definition, name: item.createAs};\n const query = buildIndexQuery(item.keyspace, definition);\n await this.connection.cluster.query(query);\n applied.push(query);\n replacements.push({name: item.createAs, target: item.target});\n }\n\n if (replacements.length) {\n await this.waitForIndexes(replacements, options.timeoutMs);\n }\n\n if (options.dropReplaced) {\n for (const item of plan.items) {\n if (item.status === 'replace' && item.replaces) {\n await this.connection.cluster.query(\n `DROP INDEX ${item.keyspace}.${escapeIdentifier(item.replaces)}`\n );\n }\n }\n }\n\n return applied;\n }\n\n /**\n * Run the callback through Couchbase's transaction retry loop. The callback\n * may execute more than once; do not perform external side effects inside it.\n * A commit-ambiguous error is rethrown and must be resolved by the caller via\n * an idempotency key/outbox, never by blindly retrying a side effect.\n */\n public async transaction<T>(\n callback: (transaction: CouchsetTransaction) => Promise<T>\n ): Promise<T> {\n await this.ready();\n let result: T;\n await (this.connection.cluster as any).transactions().run(async (attempt: any) => {\n result = await callback(new CouchsetTransaction(this, attempt));\n });\n return result as T;\n }\n\n public keyspace(definition: ModelDefinition<any>): string {\n const target = definitionTarget(definition);\n return keyspaceIdentifier({\n bucketName: this.settings.bucketName,\n collectionName: target.collection,\n scopeName: target.scope,\n });\n }\n\n public getConnection(): ModelConnection {\n return this.connection;\n }\n\n private targets(definitions?: Array<ModelDefinition<any>>): CollectionTarget[] {\n const targets = new Map<string, CollectionTarget>();\n for (const definition of definitions || this.definitions()) {\n const target = definitionTarget(definition);\n const identity = `${target.scope}.${target.collection}`;\n const existing = targets.get(identity);\n const settings = definition.collectionSettings;\n\n if (\n existing &&\n JSON.stringify(existing.settings || {}) !== JSON.stringify(settings || {})\n ) {\n throw new Error(\n `Conflicting collection settings declared for ${identity}; CouchSet will not alter an existing collection`\n );\n }\n targets.set(identity, {...target, settings});\n }\n return Array.from(targets.values());\n }\n\n private async waitForCollectionManifest(\n scopeName: string,\n collectionName: string | undefined,\n options: EnsureCollectionsOptions\n ): Promise<any[]> {\n const manager: any = (this.connection as any).bucket.collections();\n const timeout = options.timeoutMs || 30000;\n const poll = options.pollIntervalMs || 100;\n const deadline = Date.now() + timeout;\n\n while (Date.now() <= deadline) {\n try {\n const manifest = await manager.getAllScopes();\n const scope = findScope(manifest, scopeName);\n if (\n scope &&\n (!collectionName ||\n (scope.collections || []).some((item: any) => item.name === collectionName))\n ) {\n return manifest;\n }\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError(\n 'wait for collection metadata',\n `${scopeName}.${collectionName || ''}`,\n error\n );\n }\n }\n await delay(poll);\n }\n\n throw new Error(\n `Timed out waiting for Couchbase collection ${scopeName}.${\n collectionName || ''\n } to appear in the manifest`\n );\n }\n\n private async waitForIndexes(\n indexes: Array<{name: string; target: CollectionTarget}>,\n timeoutMs = 30000\n ): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n const rows = await this.indexCatalog();\n if (\n indexes.every((index) =>\n rows.some(\n (row) =>\n row.name === index.name &&\n String(row.state).toLowerCase() === 'online' &&\n indexRowMatchesCollection(row, index.target)\n )\n )\n ) {\n return;\n }\n await delay(100);\n }\n\n throw new Error(\n `Timed out waiting for Couchbase indexes to become online: ${indexes\n .map((index) => index.name)\n .join(', ')}`\n );\n }\n\n private async indexCatalog(): Promise<any[]> {\n const result = await this.connection.cluster.query(\n 'SELECT name, bucket_id, keyspace_id, scope_id, collection_id, index_key, condition, is_primary, state FROM system:indexes WHERE bucket_id = $bucket OR keyspace_id = $bucket',\n {parameters: {bucket: this.settings.bucketName}}\n );\n return (result as any).rows || [];\n }\n}\n\n/** A model bound strictly to a Couchbase transaction attempt. */\nexport class TransactionModel<T = any> {\n constructor(private readonly model: TypedModel<T>, private readonly attempt: any) {}\n\n public async get(id: string): Promise<TransactionDocument<T> | null> {\n try {\n const document = await this.attempt.get(this.model.getCollection(), id);\n return {content: this.model.parse<T & AutoModelFields>(document.content), document};\n } catch (error) {\n if (isNotFound(error)) {\n return null;\n }\n throw error;\n }\n }\n\n public getById(id: string): Promise<TransactionDocument<T> | null> {\n return this.get(id);\n }\n\n public async insert(id: string, data: ModelCreateInput<T>): Promise<TransactionDocument<T>> {\n const stored = await this.model.prepareInsert({...data, id} as T);\n const document = await this.attempt.insert(this.model.getCollection(), id, stored);\n return {\n content: this.model.parse<T & AutoModelFields>(document.content || stored),\n document,\n };\n }\n\n /** Replace requires the prior transactional read, as required by the SDK. */\n public async replace(\n document: TransactionDocument<T>,\n data: T\n ): Promise<TransactionDocument<T>> {\n const stored = await this.model.prepareReplace(document.content.id, data);\n const replacement = await this.attempt.replace(document.document, stored);\n return {\n content: this.model.parse<T & AutoModelFields>(replacement.content || stored),\n document: replacement,\n };\n }\n\n public async replaceById(id: string, data: T): Promise<TransactionDocument<T>> {\n const current = await this.get(id);\n if (!current) {\n throw new Error(`Cannot replace missing transaction document ${id}`);\n }\n return this.replace(current, data);\n }\n\n public async remove(document: TransactionDocument<T>): Promise<void> {\n await this.attempt.remove(document.document);\n }\n\n public query<TRow = any>(statement: string, options?: any): Promise<{rows: TRow[]}> {\n return this.attempt.query(statement, options);\n }\n}\n\nexport interface TransactionDocument<T> {\n content: T & AutoModelFields;\n /** Opaque transaction SDK result; only pass it back to replace/remove. */\n document: any;\n}\n\nexport class CouchsetTransaction {\n constructor(private readonly client: CouchsetClient, private readonly attempt: any) {}\n\n public model<T>(definition: ModelDefinition<T>): TransactionModel<T> {\n return new TransactionModel<T>(this.client.model(definition), this.attempt);\n }\n\n public query<TRow = any>(statement: string, options?: any): Promise<{rows: TRow[]}> {\n return this.attempt.query(statement, options);\n }\n}\n\n/**\n * Creates a short-lived scoped fixture and a cleanup function. The caller must\n * invoke cleanup in after/afterEach; no normal client operation ever drops data.\n */\nexport const createCouchsetTestFixture = async <T = any>(\n client: CouchsetClient,\n definition: Omit<ModelDefinition<T>, 'scope' | 'collection'> & {\n scope?: string;\n collection?: string;\n }\n): Promise<{\n definition: ModelDefinition<T>;\n model: TypedModel<T>;\n cleanup: () => Promise<void>;\n}> => {\n const suffix = generateUUID().replace(/-/g, '').slice(0, 12);\n const fixtureScope = definition.scope || `couchset_test_${suffix}`;\n const generatedScope = fixtureScope !== definition.scope;\n const scoped = defineModel<T>({\n ...definition,\n collection: definition.collection || `fixture_${suffix}`,\n scope: fixtureScope,\n });\n const model = await client.registerModel(scoped, {provision: {collections: true}});\n\n return {\n definition: scoped,\n model,\n cleanup: async () => {\n const target = definitionTarget(scoped);\n const manager: any = (client.getConnection() as any).bucket.collections();\n try {\n await manager.dropCollection(target.collection, target.scope);\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError(\n 'drop fixture collection',\n `${target.scope}.${target.collection}`,\n error\n );\n }\n }\n if (generatedScope) {\n try {\n await manager.dropScope(target.scope);\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError('drop fixture scope', target.scope, error);\n }\n }\n }\n },\n };\n};\n\nexport const createCouchsetClient = (options: CouchsetClientOptions = {}): CouchsetClient =>\n new CouchsetClient(options);\n\nconst definitionTarget = (definition: ModelDefinition<any>): CollectionTarget => ({\n collection: Object.prototype.hasOwnProperty.call(definition, 'collection')\n ? definition.collection || '_default'\n : '_default',\n scope: Object.prototype.hasOwnProperty.call(definition, 'scope')\n ? definition.scope || '_default'\n : '_default',\n});\n\nconst modelIdentity = (definition: ModelDefinition<any>): string => {\n const target = definitionTarget(definition);\n return `${target.scope}.${target.collection}.${definition.name}`;\n};\n\nconst assertSameDefinition = (left: ModelDefinition<any>, right: ModelDefinition<any>): void => {\n if (!sameValue(left, right)) {\n throw new Error(\n `Model ${modelIdentity(\n left\n )} is already registered with a different definition; create a separate client or use a new model name`\n );\n }\n};\n\nconst sameValue = (left: any, right: any): boolean => {\n if (left === right) {\n return true;\n }\n if (!left || !right || typeof left !== 'object' || typeof right !== 'object') {\n return false;\n }\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return (\n Array.isArray(left) &&\n Array.isArray(right) &&\n left.length === right.length &&\n left.every((item, index) => sameValue(item, right[index]))\n );\n }\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every((key, index) => key === rightKeys[index] && sameValue(left[key], right[key]))\n );\n};\n\nconst findScope = (scopes: any[], name: string): any => scopes.find((scope) => scope.name === name);\n\nconst normalize = (value: any): string =>\n JSON.stringify(value || '')\n .replace(/[\\s`()\"']/g, '')\n .toLowerCase();\n\nconst indexMatches = (row: any, definition: ModelIndexDefinition): boolean => {\n if (!!row.is_primary !== !!definition.primary) {\n return false;\n }\n if (definition.primary) {\n return true;\n }\n\n const expectedKeys = (definition.fields || []).map((field) => {\n if (typeof field === 'string') {\n return field;\n }\n const key = Object.keys(field)[0];\n return `${key} ${field[key]}`;\n });\n return (\n normalize(row.index_key) === normalize(expectedKeys) &&\n normalize(row.condition) === normalize(indexCondition(definition))\n );\n};\n\n/** Match Couchbase's catalogued SQL++ condition against the same SQL++ we declare. */\nconst indexCondition = (definition: ModelIndexDefinition): string =>\n buildWhereExpr(definition.where).replace(/^\\s*WHERE\\s+/i, '');\n\nconst indexRowMatchesTarget = (row: any, definition: ModelDefinition<any>): boolean => {\n return indexRowMatchesCollection(row, definitionTarget(definition));\n};\n\nconst indexRowMatchesCollection = (row: any, target: CollectionTarget): boolean => {\n // On current Couchbase Server, scoped collection indexes expose the\n // collection in keyspace_id and omit collection_id. Older/default targets\n // may use keyspace_id for the bucket, so prefer collection_id when present.\n const collection = row.collection_id || (row.scope_id ? row.keyspace_id : undefined);\n return (\n (!row.scope_id || row.scope_id === target.scope) &&\n (!collection || collection === target.collection)\n );\n};\n\nconst versionedIndexName = (name: string, definition: ModelIndexDefinition): string => {\n const fingerprint = JSON.stringify({\n fields: definition.fields,\n primary: definition.primary,\n where: definition.where,\n })\n .split('')\n .reduce((hash, character) => (hash * 31 + character.charCodeAt(0)) >>> 0, 7)\n .toString(36);\n return `${name}_v${fingerprint}`;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Bucket, Cluster} from 'couchbase';\n\nimport couchbase from './couchbase';\nimport type {CouchsetArgs} from './connection';\nimport {Eventing} from './eventing';\nimport type {EventingOptions} from './eventing';\nimport {AutoModelFields, FieldCodec, Model, ModelConnection, ModalOptions} from './model';\nimport type {ModelIndexDefinition} from './model';\nimport {buildIndexQuery} from './model/indexes';\nimport {escapeIdentifier, keyspaceIdentifier} from './model/keyspace';\nimport type {SortType} from './query/interface/query.types';\nimport {buildWhereExpr} from './query/helpers/builders';\nimport {generateUUID} from './uuid';\n\nexport type {FieldCodec} from './model';\nexport * from './eventing';\n\n/** A JSON-friendly Date codec for models declared with defineModel. */\nexport const dateCodec: FieldCodec<Date, string> = {\n fromDatabase: (value: string): Date => new Date(value),\n toDatabase: (value: Date): string => value.toISOString(),\n};\n\nexport interface ModelCollectionSettings {\n maxExpiry?: number;\n history?: boolean;\n}\n\n/**\n * A model definition has no connection and performs no I/O. Definitions may be\n * reused safely across clients and are the unit the client registers.\n */\nexport type ModelField<T> = Extract<keyof T, string>;\nexport type TypedIndexField<T> = ModelField<T> | Partial<Record<ModelField<T>, SortType>>;\nexport type ModelCodecs<T> = Partial<{\n [Field in ModelField<T>]: FieldCodec<T[Field], any>;\n}> &\n Partial<Record<`${string}.${string}`, FieldCodec<any, any>>>;\n\nexport interface TypedModelIndexDefinition<T> extends Omit<ModelIndexDefinition, 'fields'> {\n fields?: TypedIndexField<T>[];\n}\n\nexport interface ModelDefinition<T = any> extends Omit<ModalOptions, 'codecs' | 'indexes'> {\n name: string;\n collectionSettings?: ModelCollectionSettings;\n codecs?: ModelCodecs<T>;\n indexes?: TypedModelIndexDefinition<T>[];\n}\n\n/** User fields are distinct from CouchSet's generated persistence metadata. */\nexport type ModelCreateInput<T> = Omit<T, keyof AutoModelFields> &\n Partial<Pick<T, Extract<keyof T, keyof AutoModelFields>>>;\n\nexport interface TypedModel<T>\n extends Omit<Model, 'getById' | 'getWithCas' | 'insert' | 'replaceById' | 'replaceIfCas'> {\n getById(id: string, options?: any): Promise<T & AutoModelFields>;\n getWithCas(\n id: string,\n options?: any\n ): Promise<{content: T & AutoModelFields; cas: any; expiryTime?: any}>;\n insert(data: ModelCreateInput<T>, options?: any): Promise<T & AutoModelFields>;\n replaceById(id: string, data: T, options?: any): Promise<T & AutoModelFields>;\n replaceIfCas(id: string, data: T, cas: any, options?: any): Promise<T & AutoModelFields>;\n}\n\nexport const defineModel = <T = any>(definition: ModelDefinition<T>): ModelDefinition<T> => {\n if (!definition || !definition.name) {\n throw new Error('defineModel requires a non-empty name');\n }\n\n return {...definition};\n};\n\nexport interface CouchsetClientDependencies {\n /** Supply a fully controlled runtime for tests or an application-owned connection. */\n connection?: ModelConnection;\n /** Supply an already connected SDK cluster/bucket without using couchbase.connect. */\n cluster?: Cluster;\n bucket?: Bucket;\n /** Override connection construction; useful for dependency injection and test doubles. */\n connect?: (settings: CouchsetArgs) => Promise<Cluster>;\n}\n\nexport interface CouchsetClientOptions extends Partial<CouchsetArgs> {\n models?: Array<ModelDefinition<any>>;\n dependencies?: CouchsetClientDependencies;\n}\n\nexport interface EnsureCollectionsOptions {\n models?: Array<ModelDefinition<any>>;\n timeoutMs?: number;\n pollIntervalMs?: number;\n}\n\nexport interface ProvisionOptions extends EnsureCollectionsOptions {\n collections?: boolean;\n indexes?: boolean;\n waitForIndexes?: boolean;\n}\n\nexport interface RegisterModelOptions extends ProvisionOptions {\n /** Explicitly provision this dynamic model. Constructors and CRUD never do this. */\n provision?: boolean | {collections?: boolean; indexes?: boolean; waitForIndexes?: boolean};\n}\n\nexport interface ProvisionedTarget {\n scope: string;\n collection: string;\n createdScope: boolean;\n createdCollection: boolean;\n}\n\nexport interface IndexPlanItem {\n status: 'create' | 'matching' | 'replace';\n definition: ModelIndexDefinition;\n keyspace: string;\n target: CollectionTarget;\n /** The physical index CouchSet will create. Replacement names are versioned. */\n createAs: string;\n /** Only populated for an explicit or detected safe replacement. */\n replaces?: string;\n reason?: string;\n}\n\nexport interface IndexPlan {\n items: IndexPlanItem[];\n}\n\nexport interface ApplyIndexPlanOptions {\n /** Opt-in only: drop old indexes after the replacement is online. */\n dropReplaced?: boolean;\n timeoutMs?: number;\n}\n\ninterface RegisteredModel<T = any> {\n definition: ModelDefinition<T>;\n model: Model;\n}\n\ninterface CollectionTarget {\n scope: string;\n collection: string;\n settings?: ModelCollectionSettings;\n}\n\nconst defaultSettings = (options: CouchsetClientOptions): CouchsetArgs => ({\n bucketName: options.bucketName || 'default',\n connectionString: options.connectionString || 'couchbase://localhost',\n password: options.password || '',\n username: options.username || '',\n proxy: options.proxy,\n});\n\nconst errorText = (error: any): string => `${error?.name || ''} ${error?.message || error || ''}`;\nconst isAlreadyExists = (error: any): boolean =>\n /already exists|exists|ScopeExists|CollectionExists/i.test(errorText(error));\nconst isNotFound = (error: any): boolean => /not found|not exist/i.test(errorText(error));\n\nconst provisionError = (operation: string, target: string, error: any): Error => {\n const message = errorText(error);\n const privilege = /access|permission|authoriz|privilege|forbidden/i.test(message)\n ? ' This operation requires Couchbase Manage Scopes privileges on the bucket.'\n : '';\n const wrapped: any = new Error(\n `CouchSet could not ${operation} ${target}.${privilege} ${message}`.trim()\n );\n wrapped.cause = error;\n return wrapped;\n};\n\nconst delay = (milliseconds: number): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, milliseconds));\n\nclass DirectConnection implements ModelConnection {\n public cluster: Cluster;\n public bucket: Bucket;\n private connectPromise?: Promise<Cluster>;\n\n constructor(\n private readonly settings: CouchsetArgs,\n private readonly dependencies: CouchsetClientDependencies\n ) {\n this.cluster = dependencies.cluster as Cluster;\n this.bucket = dependencies.bucket as Bucket;\n\n if (this.cluster && !this.bucket) {\n this.bucket = this.cluster.bucket(settings.bucketName);\n }\n }\n\n public getBucket(): string {\n return this.settings.bucketName;\n }\n\n public getCollection(scopeName?: string, collectionName?: string): any {\n if (!this.bucket) {\n throw new Error('CouchSet client is not connected; call client.ready() first');\n }\n\n if (!scopeName && !collectionName) {\n return this.bucket.defaultCollection();\n }\n\n return this.bucket.scope(scopeName || '_default').collection(collectionName || '_default');\n }\n\n public isConnected(): boolean {\n return !!this.cluster && !!this.bucket;\n }\n\n public async ready(): Promise<DirectConnection> {\n if (this.isConnected()) {\n return this;\n }\n\n if (!this.connectPromise) {\n const connect =\n this.dependencies.connect ||\n ((settings: CouchsetArgs) =>\n couchbase.connect(settings.connectionString, {\n password: settings.password,\n proxy: settings.proxy,\n username: settings.username,\n }));\n this.connectPromise = connect(this.settings);\n }\n\n this.cluster = await this.connectPromise;\n this.bucket = this.cluster.bucket(this.settings.bucketName);\n return this;\n }\n\n public shouldReconnect(): boolean {\n return false;\n }\n\n public markDisconnected(): void {\n // A client-owned connection never retries an arbitrary write operation.\n }\n\n public async shutdown(): Promise<void> {\n if (this.cluster && typeof (this.cluster as any).close === 'function') {\n await (this.cluster as any).close();\n }\n this.cluster = undefined as any;\n this.bucket = undefined as any;\n }\n}\n\n/**\n * A client owns its model-definition registry and connection. It intentionally\n * does not alter the legacy singleton or register models globally.\n */\nexport class CouchsetClient {\n private readonly connection: ModelConnection;\n private readonly registered = new Map<string, RegisteredModel<any>>();\n private readonly settings: CouchsetArgs;\n\n constructor(options: CouchsetClientOptions = {}) {\n this.settings = defaultSettings(options);\n const dependencies = options.dependencies || {};\n\n if (dependencies.connection) {\n const bucketName = dependencies.connection.getBucket();\n if (!bucketName) {\n throw new Error('Injected CouchSet connections must expose a bucket name');\n }\n if (options.bucketName && options.bucketName !== bucketName) {\n throw new Error(\n `Injected CouchSet connection targets ${bucketName}, not requested bucket ${options.bucketName}`\n );\n }\n this.settings.bucketName = bucketName;\n } else if (dependencies.bucket) {\n const bucketName = dependencies.bucket.name;\n if (options.bucketName && options.bucketName !== bucketName) {\n throw new Error(\n `Injected Couchbase bucket targets ${bucketName}, not requested bucket ${options.bucketName}`\n );\n }\n this.settings.bucketName = bucketName;\n } else if (dependencies.cluster && !options.bucketName) {\n throw new Error('bucketName is required when injecting a Couchbase cluster');\n }\n\n this.connection =\n dependencies.connection || new DirectConnection(this.settings, dependencies);\n\n (options.models || []).forEach((definition) => this.model(definition));\n }\n\n public async ready(): Promise<this> {\n await this.connection.ready();\n return this;\n }\n\n public async shutdown(): Promise<void> {\n const shutdown = (this.connection as any).shutdown;\n if (typeof shutdown === 'function') {\n await shutdown.call(this.connection);\n }\n }\n\n public definitions(): ModelDefinition<any>[] {\n return Array.from(this.registered.values()).map(({definition}) => definition);\n }\n\n /**\n * Creates a namespace-owned Eventing control plane. Definitions remain\n * declarative until eventing.apply() is called.\n */\n public eventing(options: EventingOptions): Eventing {\n return new Eventing(this, options);\n }\n\n /** Bind and register a definition without provisioning or index DDL. */\n public model<T>(definition: ModelDefinition<T>): TypedModel<T> {\n const identity = modelIdentity(definition);\n const existing = this.registered.get(identity);\n\n if (existing) {\n assertSameDefinition(existing.definition, definition);\n return existing.model as TypedModel<T>;\n }\n\n const model = new Model(definition.name, definition as ModalOptions, this.connection);\n this.registered.set(identity, {definition, model});\n return model as TypedModel<T>;\n }\n\n /**\n * Async registration for dynamic models. DDL is performed only when the\n * caller explicitly opts into provision; ordinary model() is side-effect-free.\n */\n public async registerModel<T>(\n definition: ModelDefinition<T>,\n options: RegisterModelOptions = {}\n ): Promise<TypedModel<T>> {\n const model = this.model(definition);\n const requested = options.provision;\n\n if (requested) {\n const config =\n typeof requested === 'boolean' ? {collections: true, indexes: true} : requested;\n await this.provision({\n collections: config.collections !== false,\n indexes: config.indexes !== false,\n models: [definition],\n timeoutMs: options.timeoutMs,\n waitForIndexes: config.waitForIndexes,\n });\n }\n\n return model;\n }\n\n /** Create only missing scopes/collections. Existing resources are never altered. */\n public async ensureCollections(\n options: EnsureCollectionsOptions = {}\n ): Promise<ProvisionedTarget[]> {\n await this.ready();\n const targets = this.targets(options.models);\n const manager: any = (this.connection as any).bucket.collections();\n let manifest: any[];\n\n try {\n manifest = await manager.getAllScopes();\n } catch (error) {\n throw provisionError('read the scope manifest for', this.settings.bucketName, error);\n }\n\n const result: ProvisionedTarget[] = [];\n for (const target of targets) {\n const defaultTarget = target.scope === '_default' && target.collection === '_default';\n if (defaultTarget) {\n result.push({...target, createdScope: false, createdCollection: false});\n continue;\n }\n\n let scope = findScope(manifest, target.scope);\n let createdScope = false;\n if (!scope && target.scope !== '_default') {\n try {\n await manager.createScope(target.scope);\n createdScope = true;\n } catch (error) {\n if (!isAlreadyExists(error)) {\n throw provisionError('create scope', target.scope, error);\n }\n }\n manifest = await this.waitForCollectionManifest(target.scope, undefined, options);\n scope = findScope(manifest, target.scope);\n }\n\n if (!scope) {\n throw new Error(`CouchSet could not find scope ${target.scope} after provisioning`);\n }\n\n const exists = (scope.collections || []).some(\n (item: any) => item.name === target.collection\n );\n let createdCollection = false;\n if (!exists) {\n try {\n await manager.createCollection(\n target.collection,\n target.scope,\n target.settings || {}\n );\n createdCollection = true;\n } catch (error) {\n if (!isAlreadyExists(error)) {\n throw provisionError(\n 'create collection',\n `${target.scope}.${target.collection}`,\n error\n );\n }\n }\n }\n\n await this.waitForCollectionManifest(target.scope, target.collection, options);\n result.push({...target, createdScope, createdCollection});\n }\n\n return result;\n }\n\n /** Explicit bootstrap: provisioning occurs before index creation. */\n public async provision(options: ProvisionOptions = {}): Promise<{\n collections: ProvisionedTarget[];\n indexes: string[];\n }> {\n const definitions = options.models || this.definitions();\n const collections =\n options.collections === false\n ? []\n : await this.ensureCollections({...options, models: definitions});\n const indexes = options.indexes\n ? await this.ensureIndexes({\n models: definitions,\n waitForIndexes: options.waitForIndexes,\n timeoutMs: options.timeoutMs,\n })\n : [];\n\n return {collections, indexes};\n }\n\n /** Normal ensureIndexes stays create-only. It never checks, drops, or changes an existing index. */\n public async ensureIndexes(\n options: {\n models?: Array<ModelDefinition<any>>;\n deferred?: boolean;\n waitForIndexes?: boolean;\n timeoutMs?: number;\n } = {}\n ): Promise<string[]> {\n await this.ready();\n const definitions = options.models || this.definitions();\n const queries: string[] = [];\n const indexes: Array<{name: string; target: CollectionTarget}> = [];\n\n for (const definition of definitions) {\n const model = this.model(definition);\n const statements = await model.ensureIndexes({deferred: options.deferred});\n queries.push(...statements);\n indexes.push(\n ...(definition.indexes || []).map((index) => ({\n name: index.name,\n target: definitionTarget(definition),\n }))\n );\n }\n\n if (options.waitForIndexes && indexes.length) {\n await this.waitForIndexes(indexes, options.timeoutMs);\n }\n\n return queries;\n }\n\n /** Report missing, matching, and drifted indexes; this method has no DDL side effects. */\n public async planIndexes(\n options: {models?: Array<ModelDefinition<any>>} = {}\n ): Promise<IndexPlan> {\n await this.ready();\n const rows = await this.indexCatalog();\n const items: IndexPlanItem[] = [];\n\n for (const definition of options.models || this.definitions()) {\n const keyspace = this.keyspace(definition);\n const target = definitionTarget(definition);\n for (const index of definition.indexes || []) {\n const matchingRows = rows.filter((row) => indexRowMatchesTarget(row, definition));\n const desired = matchingRows.find((row) => row.name === index.name);\n const replacementName = versionedIndexName(index.name, index);\n const replacement = matchingRows.find((row) => row.name === replacementName);\n\n // A previous safe rollout may have dropped the old logical name\n // while retaining this deterministic replacement physical name.\n if (replacement && indexMatches(replacement, index)) {\n items.push({\n createAs: replacementName,\n definition: index,\n keyspace,\n status: 'matching',\n target,\n });\n continue;\n }\n\n if (desired && indexMatches(desired, index)) {\n items.push({\n createAs: index.name,\n definition: index,\n keyspace,\n status: 'matching',\n target,\n });\n continue;\n }\n\n // `replaces` explicitly asks for a new physical index, even if\n // the predecessor happens to have equivalent keys.\n const predecessorName = index.replaces || index.name;\n const predecessor = matchingRows.find((row) => row.name === predecessorName);\n\n if (!predecessor) {\n items.push({\n createAs: index.name,\n definition: index,\n keyspace,\n status: 'create',\n target,\n });\n continue;\n }\n\n const createAs = index.replaces ? index.name : replacementName;\n items.push({\n createAs,\n definition: index,\n keyspace,\n reason: 'Declared keys, predicate, or primary mode differs from the live index.',\n replaces: predecessor.name,\n status: 'replace',\n target,\n });\n }\n }\n\n return {items};\n }\n\n /**\n * Apply a reviewed plan by creating versioned replacements and waiting for\n * them. Dropping old indexes is deliberately an explicit second opt-in.\n */\n public async applyIndexPlan(\n plan: IndexPlan,\n options: ApplyIndexPlanOptions = {}\n ): Promise<string[]> {\n await this.ready();\n const applied: string[] = [];\n const replacements: Array<{name: string; target: CollectionTarget}> = [];\n\n for (const item of plan.items) {\n if (item.status === 'matching') {\n continue;\n }\n\n const definition = {...item.definition, name: item.createAs};\n const query = buildIndexQuery(item.keyspace, definition);\n await this.connection.cluster.query(query);\n applied.push(query);\n replacements.push({name: item.createAs, target: item.target});\n }\n\n if (replacements.length) {\n await this.waitForIndexes(replacements, options.timeoutMs);\n }\n\n if (options.dropReplaced) {\n for (const item of plan.items) {\n if (item.status === 'replace' && item.replaces) {\n await this.connection.cluster.query(\n `DROP INDEX ${item.keyspace}.${escapeIdentifier(item.replaces)}`\n );\n }\n }\n }\n\n return applied;\n }\n\n /**\n * Run the callback through Couchbase's transaction retry loop. The callback\n * may execute more than once; do not perform external side effects inside it.\n * A commit-ambiguous error is rethrown and must be resolved by the caller via\n * an idempotency key/outbox, never by blindly retrying a side effect.\n */\n public async transaction<T>(\n callback: (transaction: CouchsetTransaction) => Promise<T>\n ): Promise<T> {\n await this.ready();\n let result: T;\n await (this.connection.cluster as any).transactions().run(async (attempt: any) => {\n result = await callback(new CouchsetTransaction(this, attempt));\n });\n return result as T;\n }\n\n public keyspace(definition: ModelDefinition<any>): string {\n const target = definitionTarget(definition);\n return keyspaceIdentifier({\n bucketName: this.settings.bucketName,\n collectionName: target.collection,\n scopeName: target.scope,\n });\n }\n\n public getConnection(): ModelConnection {\n return this.connection;\n }\n\n private targets(definitions?: Array<ModelDefinition<any>>): CollectionTarget[] {\n const targets = new Map<string, CollectionTarget>();\n for (const definition of definitions || this.definitions()) {\n const target = definitionTarget(definition);\n const identity = `${target.scope}.${target.collection}`;\n const existing = targets.get(identity);\n const settings = definition.collectionSettings;\n\n if (\n existing &&\n JSON.stringify(existing.settings || {}) !== JSON.stringify(settings || {})\n ) {\n throw new Error(\n `Conflicting collection settings declared for ${identity}; CouchSet will not alter an existing collection`\n );\n }\n targets.set(identity, {...target, settings});\n }\n return Array.from(targets.values());\n }\n\n private async waitForCollectionManifest(\n scopeName: string,\n collectionName: string | undefined,\n options: EnsureCollectionsOptions\n ): Promise<any[]> {\n const manager: any = (this.connection as any).bucket.collections();\n const timeout = options.timeoutMs || 30000;\n const poll = options.pollIntervalMs || 100;\n const deadline = Date.now() + timeout;\n\n while (Date.now() <= deadline) {\n try {\n const manifest = await manager.getAllScopes();\n const scope = findScope(manifest, scopeName);\n if (\n scope &&\n (!collectionName ||\n (scope.collections || []).some((item: any) => item.name === collectionName))\n ) {\n return manifest;\n }\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError(\n 'wait for collection metadata',\n `${scopeName}.${collectionName || ''}`,\n error\n );\n }\n }\n await delay(poll);\n }\n\n throw new Error(\n `Timed out waiting for Couchbase collection ${scopeName}.${\n collectionName || ''\n } to appear in the manifest`\n );\n }\n\n private async waitForIndexes(\n indexes: Array<{name: string; target: CollectionTarget}>,\n timeoutMs = 30000\n ): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n const rows = await this.indexCatalog();\n if (\n indexes.every((index) =>\n rows.some(\n (row) =>\n row.name === index.name &&\n String(row.state).toLowerCase() === 'online' &&\n indexRowMatchesCollection(row, index.target)\n )\n )\n ) {\n return;\n }\n await delay(100);\n }\n\n throw new Error(\n `Timed out waiting for Couchbase indexes to become online: ${indexes\n .map((index) => index.name)\n .join(', ')}`\n );\n }\n\n private async indexCatalog(): Promise<any[]> {\n const result = await this.connection.cluster.query(\n 'SELECT name, bucket_id, keyspace_id, scope_id, collection_id, index_key, condition, is_primary, state FROM system:indexes WHERE bucket_id = $bucket OR keyspace_id = $bucket',\n {parameters: {bucket: this.settings.bucketName}}\n );\n return (result as any).rows || [];\n }\n}\n\n/** A model bound strictly to a Couchbase transaction attempt. */\nexport class TransactionModel<T = any> {\n constructor(private readonly model: TypedModel<T>, private readonly attempt: any) {}\n\n public async get(id: string): Promise<TransactionDocument<T> | null> {\n try {\n const document = await this.attempt.get(this.model.getCollection(), id);\n return {content: this.model.parse<T & AutoModelFields>(document.content), document};\n } catch (error) {\n if (isNotFound(error)) {\n return null;\n }\n throw error;\n }\n }\n\n public getById(id: string): Promise<TransactionDocument<T> | null> {\n return this.get(id);\n }\n\n public async insert(id: string, data: ModelCreateInput<T>): Promise<TransactionDocument<T>> {\n const stored = await this.model.prepareInsert({...data, id} as T);\n const document = await this.attempt.insert(this.model.getCollection(), id, stored);\n return {\n content: this.model.parse<T & AutoModelFields>(document.content || stored),\n document,\n };\n }\n\n /** Replace requires the prior transactional read, as required by the SDK. */\n public async replace(\n document: TransactionDocument<T>,\n data: T\n ): Promise<TransactionDocument<T>> {\n const stored = await this.model.prepareReplace(document.content.id, data);\n const replacement = await this.attempt.replace(document.document, stored);\n return {\n content: this.model.parse<T & AutoModelFields>(replacement.content || stored),\n document: replacement,\n };\n }\n\n public async replaceById(id: string, data: T): Promise<TransactionDocument<T>> {\n const current = await this.get(id);\n if (!current) {\n throw new Error(`Cannot replace missing transaction document ${id}`);\n }\n return this.replace(current, data);\n }\n\n public async remove(document: TransactionDocument<T>): Promise<void> {\n await this.attempt.remove(document.document);\n }\n\n public query<TRow = any>(statement: string, options?: any): Promise<{rows: TRow[]}> {\n return this.attempt.query(statement, options);\n }\n}\n\nexport interface TransactionDocument<T> {\n content: T & AutoModelFields;\n /** Opaque transaction SDK result; only pass it back to replace/remove. */\n document: any;\n}\n\nexport class CouchsetTransaction {\n constructor(private readonly client: CouchsetClient, private readonly attempt: any) {}\n\n public model<T>(definition: ModelDefinition<T>): TransactionModel<T> {\n return new TransactionModel<T>(this.client.model(definition), this.attempt);\n }\n\n public query<TRow = any>(statement: string, options?: any): Promise<{rows: TRow[]}> {\n return this.attempt.query(statement, options);\n }\n}\n\n/**\n * Creates a short-lived scoped fixture and a cleanup function. The caller must\n * invoke cleanup in after/afterEach; no normal client operation ever drops data.\n */\nexport const createCouchsetTestFixture = async <T = any>(\n client: CouchsetClient,\n definition: Omit<ModelDefinition<T>, 'scope' | 'collection'> & {\n scope?: string;\n collection?: string;\n }\n): Promise<{\n definition: ModelDefinition<T>;\n model: TypedModel<T>;\n cleanup: () => Promise<void>;\n}> => {\n const suffix = generateUUID().replace(/-/g, '').slice(0, 12);\n const fixtureScope = definition.scope || `couchset_test_${suffix}`;\n const generatedScope = fixtureScope !== definition.scope;\n const scoped = defineModel<T>({\n ...definition,\n collection: definition.collection || `fixture_${suffix}`,\n scope: fixtureScope,\n });\n const model = await client.registerModel(scoped, {provision: {collections: true}});\n\n return {\n definition: scoped,\n model,\n cleanup: async () => {\n const target = definitionTarget(scoped);\n const manager: any = (client.getConnection() as any).bucket.collections();\n try {\n await manager.dropCollection(target.collection, target.scope);\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError(\n 'drop fixture collection',\n `${target.scope}.${target.collection}`,\n error\n );\n }\n }\n if (generatedScope) {\n try {\n await manager.dropScope(target.scope);\n } catch (error) {\n if (!isNotFound(error)) {\n throw provisionError('drop fixture scope', target.scope, error);\n }\n }\n }\n },\n };\n};\n\nexport const createCouchsetClient = (options: CouchsetClientOptions = {}): CouchsetClient =>\n new CouchsetClient(options);\n\nconst definitionTarget = (definition: ModelDefinition<any>): CollectionTarget => ({\n collection: Object.prototype.hasOwnProperty.call(definition, 'collection')\n ? definition.collection || '_default'\n : '_default',\n scope: Object.prototype.hasOwnProperty.call(definition, 'scope')\n ? definition.scope || '_default'\n : '_default',\n});\n\nconst modelIdentity = (definition: ModelDefinition<any>): string => {\n const target = definitionTarget(definition);\n return `${target.scope}.${target.collection}.${definition.name}`;\n};\n\nconst assertSameDefinition = (left: ModelDefinition<any>, right: ModelDefinition<any>): void => {\n if (!sameValue(left, right)) {\n throw new Error(\n `Model ${modelIdentity(\n left\n )} is already registered with a different definition; create a separate client or use a new model name`\n );\n }\n};\n\nconst sameValue = (left: any, right: any): boolean => {\n if (left === right) {\n return true;\n }\n if (!left || !right || typeof left !== 'object' || typeof right !== 'object') {\n return false;\n }\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return (\n Array.isArray(left) &&\n Array.isArray(right) &&\n left.length === right.length &&\n left.every((item, index) => sameValue(item, right[index]))\n );\n }\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n return (\n leftKeys.length === rightKeys.length &&\n leftKeys.every((key, index) => key === rightKeys[index] && sameValue(left[key], right[key]))\n );\n};\n\nconst findScope = (scopes: any[], name: string): any => scopes.find((scope) => scope.name === name);\n\nconst normalize = (value: any): string =>\n JSON.stringify(value || '')\n .replace(/[\\s`()\"']/g, '')\n .toLowerCase();\n\nconst indexMatches = (row: any, definition: ModelIndexDefinition): boolean => {\n if (!!row.is_primary !== !!definition.primary) {\n return false;\n }\n if (definition.primary) {\n return true;\n }\n\n const expectedKeys = (definition.fields || []).map((field) => {\n if (typeof field === 'string') {\n return field;\n }\n const key = Object.keys(field)[0];\n return `${key} ${field[key]}`;\n });\n return (\n normalize(row.index_key) === normalize(expectedKeys) &&\n normalize(row.condition) === normalize(indexCondition(definition))\n );\n};\n\n/** Match Couchbase's catalogued SQL++ condition against the same SQL++ we declare. */\nconst indexCondition = (definition: ModelIndexDefinition): string =>\n buildWhereExpr(definition.where).replace(/^\\s*WHERE\\s+/i, '');\n\nconst indexRowMatchesTarget = (row: any, definition: ModelDefinition<any>): boolean => {\n return indexRowMatchesCollection(row, definitionTarget(definition));\n};\n\nconst indexRowMatchesCollection = (row: any, target: CollectionTarget): boolean => {\n // On current Couchbase Server, scoped collection indexes expose the\n // collection in keyspace_id and omit collection_id. Older/default targets\n // may use keyspace_id for the bucket, so prefer collection_id when present.\n const collection = row.collection_id || (row.scope_id ? row.keyspace_id : undefined);\n return (\n (!row.scope_id || row.scope_id === target.scope) &&\n (!collection || collection === target.collection)\n );\n};\n\nconst versionedIndexName = (name: string, definition: ModelIndexDefinition): string => {\n const fingerprint = JSON.stringify({\n fields: definition.fields,\n primary: definition.primary,\n where: definition.where,\n })\n .split('')\n .reduce((hash, character) => (hash * 31 + character.charCodeAt(0)) >>> 0, 7)\n .toString(36);\n return `${name}_v${fingerprint}`;\n};\n"]}
|
package/docs/next-primitives.md
CHANGED
|
@@ -76,6 +76,39 @@ await db.applyIndexPlan(plan, {dropReplaced: true}); // explicit old-index remov
|
|
|
76
76
|
|
|
77
77
|
When a live definition drifts, the plan creates a versioned physical replacement and waits for it to become online before an old index can be dropped. This avoids an unindexed interval and makes destructive cleanup an affirmative operator action.
|
|
78
78
|
|
|
79
|
+
## Eventing functions
|
|
80
|
+
|
|
81
|
+
Eventing declarations use the Couchbase SDK's `EventingFunctionManager`; they are not document writes. Give each control plane an explicit namespace and a dedicated, already-provisioned metadata collection. CouchSet never opens that collection as application data or reads/writes its documents.
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import {defineEventingFunction} from 'couchset/next';
|
|
85
|
+
|
|
86
|
+
const auditOrders = defineEventingFunction({
|
|
87
|
+
name: 'audit_orders', // Couchbase function name: billing__audit_orders
|
|
88
|
+
code: 'function OnUpdate(doc, meta) { log(meta.id); }',
|
|
89
|
+
sourceKeyspace: {bucket: 'app', scope: 'sales', collection: 'orders'},
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const eventing = db.eventing({
|
|
93
|
+
namespace: 'billing',
|
|
94
|
+
metadataKeyspace: {bucket: 'app', scope: 'eventing', collection: 'billing_metadata'},
|
|
95
|
+
definitions: [auditOrders],
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
await eventing.apply(); // reconcile declarations and prune only billing__* stale functions
|
|
99
|
+
await eventing.apply(auditOrders); // apply just this handler; never prunes other declarations
|
|
100
|
+
await eventing.pause('audit_orders');
|
|
101
|
+
await eventing.remove('audit_orders'); // undeploys then deletes; Eventing timers/checkpoints are lost
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
An ordinary code, setting, or binding change safely pauses, upserts, then reactivates a deployed function. Depending on the Eventing status after an upsert, reactivation uses either `resume` or the compatible `deploy` operation. Matching paused functions resume and matching deployed functions are no-ops. A source or Eventing metadata keyspace change is destructive because Couchbase must undeploy the function, which erases timers and checkpoints. `apply()` returns a `requiresRecreate` outcome without changing it; opt in only after reviewing that consequence:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
await eventing.apply({allowRecreate: true});
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Reports expose `created`, `updated`, `resumed`, `unchanged`, `pruned`, `paused`, `removed`, and `requiresRecreate` outcome arrays (plus `outcomes` in execution order).
|
|
111
|
+
|
|
79
112
|
## Tests
|
|
80
113
|
|
|
81
114
|
`createCouchsetTestFixture(client, definition)` provisions a unique named scope/collection and returns an explicit `cleanup()` helper. Use it in test setup/teardown; fixture cleanup is the only helper that drops a resource.
|
package/next/index.d.ts
ADDED
package/next/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "couchset",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Couchbase ORM",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/legacy/index.js",
|
|
7
7
|
"types": "dist/legacy/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/legacy/index.d.ts",
|
|
11
|
+
"require": "./legacy/index.js",
|
|
12
|
+
"default": "./legacy/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./next": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"require": "./next/index.js",
|
|
17
|
+
"default": "./next/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./next/index": {
|
|
20
|
+
"types": "./next/index.d.ts",
|
|
21
|
+
"require": "./next/index.js",
|
|
22
|
+
"default": "./next/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./next/index.js": {
|
|
25
|
+
"types": "./next/index.d.ts",
|
|
26
|
+
"require": "./next/index.js",
|
|
27
|
+
"default": "./next/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./legacy": {
|
|
30
|
+
"types": "./dist/legacy/index.d.ts",
|
|
31
|
+
"require": "./legacy/index.js",
|
|
32
|
+
"default": "./legacy/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./legacy/index": {
|
|
35
|
+
"types": "./dist/legacy/index.d.ts",
|
|
36
|
+
"require": "./legacy/index.js",
|
|
37
|
+
"default": "./legacy/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./legacy/index.js": {
|
|
40
|
+
"types": "./dist/legacy/index.d.ts",
|
|
41
|
+
"require": "./legacy/index.js",
|
|
42
|
+
"default": "./legacy/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./register": "./register/index.js",
|
|
45
|
+
"./register/transpile-only": "./register/transpile-only.js",
|
|
46
|
+
"./register/type-check": "./register/type-check.js",
|
|
47
|
+
"./package.json": "./package.json",
|
|
48
|
+
"./*": "./*"
|
|
49
|
+
},
|
|
8
50
|
"files": [
|
|
9
51
|
"CHANGELOG.md",
|
|
10
52
|
"docs/",
|