@hops-ops/distributed 0.0.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 +454 -0
- package/dist/auth-headers.d.ts +8 -0
- package/dist/auth-headers.js +35 -0
- package/dist/diagnostics.d.ts +2 -0
- package/dist/diagnostics.js +1 -0
- package/dist/document.d.ts +8 -0
- package/dist/document.js +6 -0
- package/dist/identity.d.ts +23 -0
- package/dist/identity.js +73 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +6 -0
- package/dist/internal/cache-engine/create.d.ts +5 -0
- package/dist/internal/cache-engine/create.js +7 -0
- package/dist/internal/cache-engine/engine.d.ts +32 -0
- package/dist/internal/cache-engine/engine.js +1287 -0
- package/dist/internal/cache-engine/errors.d.ts +5 -0
- package/dist/internal/cache-engine/errors.js +10 -0
- package/dist/internal/cache-engine/helpers.d.ts +55 -0
- package/dist/internal/cache-engine/helpers.js +545 -0
- package/dist/internal/cache-engine/index.d.ts +3 -0
- package/dist/internal/cache-engine/index.js +2 -0
- package/dist/internal/cache-engine/types.d.ts +300 -0
- package/dist/internal/cache-engine/types.js +1 -0
- package/dist/internal/cache-engine.d.ts +3 -0
- package/dist/internal/cache-engine.js +2 -0
- package/dist/lib/assert-name.d.ts +2 -0
- package/dist/lib/assert-name.js +6 -0
- package/dist/lib/compare-code-units.d.ts +2 -0
- package/dist/lib/compare-code-units.js +4 -0
- package/dist/lib/deep-equal.d.ts +2 -0
- package/dist/lib/deep-equal.js +24 -0
- package/dist/lib/freeze-record.d.ts +2 -0
- package/dist/lib/freeze-record.js +13 -0
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/index.js +6 -0
- package/dist/lib/is-plain-record.d.ts +2 -0
- package/dist/lib/is-plain-record.js +8 -0
- package/dist/lib/report.d.ts +7 -0
- package/dist/lib/report.js +26 -0
- package/dist/protocol.d.ts +179 -0
- package/dist/protocol.js +558 -0
- package/dist/react/context.d.ts +20 -0
- package/dist/react/context.js +24 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +3 -0
- package/dist/react/query.d.ts +20 -0
- package/dist/react/query.js +99 -0
- package/dist/replica/command-id.d.ts +2 -0
- package/dist/replica/command-id.js +19 -0
- package/dist/replica/command-runtime/constants.d.ts +5 -0
- package/dist/replica/command-runtime/constants.js +5 -0
- package/dist/replica/command-runtime/create.d.ts +2 -0
- package/dist/replica/command-runtime/create.js +644 -0
- package/dist/replica/command-runtime/errors.d.ts +16 -0
- package/dist/replica/command-runtime/errors.js +41 -0
- package/dist/replica/command-runtime/index.d.ts +5 -0
- package/dist/replica/command-runtime/index.js +4 -0
- package/dist/replica/command-runtime/lib/binding.d.ts +4 -0
- package/dist/replica/command-runtime/lib/binding.js +64 -0
- package/dist/replica/command-runtime/lib/effects.d.ts +11 -0
- package/dist/replica/command-runtime/lib/effects.js +89 -0
- package/dist/replica/command-runtime/lib/index.d.ts +9 -0
- package/dist/replica/command-runtime/lib/index.js +9 -0
- package/dist/replica/command-runtime/lib/inventory.d.ts +10 -0
- package/dist/replica/command-runtime/lib/inventory.js +141 -0
- package/dist/replica/command-runtime/lib/output.d.ts +13 -0
- package/dist/replica/command-runtime/lib/output.js +190 -0
- package/dist/replica/command-runtime/lib/projection.d.ts +20 -0
- package/dist/replica/command-runtime/lib/projection.js +255 -0
- package/dist/replica/command-runtime/lib/status.d.ts +7 -0
- package/dist/replica/command-runtime/lib/status.js +127 -0
- package/dist/replica/command-runtime/lib/transport.d.ts +16 -0
- package/dist/replica/command-runtime/lib/transport.js +112 -0
- package/dist/replica/command-runtime/lib/util.d.ts +16 -0
- package/dist/replica/command-runtime/lib/util.js +127 -0
- package/dist/replica/command-runtime/lifecycle.d.ts +11 -0
- package/dist/replica/command-runtime/lifecycle.js +13 -0
- package/dist/replica/command-runtime/symbols.d.ts +30 -0
- package/dist/replica/command-runtime/symbols.js +30 -0
- package/dist/replica/command-runtime/types.d.ts +222 -0
- package/dist/replica/command-runtime/types.js +1 -0
- package/dist/replica/command-runtime.d.ts +3 -0
- package/dist/replica/command-runtime.js +2 -0
- package/dist/replica/commands/clone.d.ts +12 -0
- package/dist/replica/commands/clone.js +187 -0
- package/dist/replica/commands/constants.d.ts +6 -0
- package/dist/replica/commands/constants.js +6 -0
- package/dist/replica/commands/errors.d.ts +7 -0
- package/dist/replica/commands/errors.js +22 -0
- package/dist/replica/commands/implementation.d.ts +8 -0
- package/dist/replica/commands/implementation.js +8 -0
- package/dist/replica/commands/index.d.ts +5 -0
- package/dist/replica/commands/index.js +4 -0
- package/dist/replica/commands/prepare.d.ts +27 -0
- package/dist/replica/commands/prepare.js +77 -0
- package/dist/replica/commands/presets.d.ts +12 -0
- package/dist/replica/commands/presets.js +84 -0
- package/dist/replica/commands/receipt.d.ts +3 -0
- package/dist/replica/commands/receipt.js +36 -0
- package/dist/replica/commands/resolve.d.ts +11 -0
- package/dist/replica/commands/resolve.js +165 -0
- package/dist/replica/commands/types.d.ts +278 -0
- package/dist/replica/commands/types.js +2 -0
- package/dist/replica/commands/util.d.ts +21 -0
- package/dist/replica/commands/util.js +96 -0
- package/dist/replica/commands/validate.d.ts +18 -0
- package/dist/replica/commands/validate.js +477 -0
- package/dist/replica/commands.d.ts +3 -0
- package/dist/replica/commands.js +2 -0
- package/dist/replica/diagnostics/event-log.d.ts +4 -0
- package/dist/replica/diagnostics/event-log.js +463 -0
- package/dist/replica/diagnostics/implementation.d.ts +4 -0
- package/dist/replica/diagnostics/implementation.js +4 -0
- package/dist/replica/diagnostics/index.d.ts +2 -0
- package/dist/replica/diagnostics/index.js +1 -0
- package/dist/replica/diagnostics/inspect.d.ts +6 -0
- package/dist/replica/diagnostics/inspect.js +170 -0
- package/dist/replica/diagnostics/types.d.ts +295 -0
- package/dist/replica/diagnostics/types.js +2 -0
- package/dist/replica/diagnostics.d.ts +3 -0
- package/dist/replica/diagnostics.js +2 -0
- package/dist/replica/distributed-replica/clocks.d.ts +23 -0
- package/dist/replica/distributed-replica/clocks.js +156 -0
- package/dist/replica/distributed-replica/constants.d.ts +12 -0
- package/dist/replica/distributed-replica/constants.js +10 -0
- package/dist/replica/distributed-replica/helpers.d.ts +48 -0
- package/dist/replica/distributed-replica/helpers.js +445 -0
- package/dist/replica/distributed-replica/hydration.d.ts +19 -0
- package/dist/replica/distributed-replica/hydration.js +380 -0
- package/dist/replica/distributed-replica/impl-diagnostics.d.ts +22 -0
- package/dist/replica/distributed-replica/impl-diagnostics.js +189 -0
- package/dist/replica/distributed-replica/impl-fetch-live.d.ts +39 -0
- package/dist/replica/distributed-replica/impl-fetch-live.js +395 -0
- package/dist/replica/distributed-replica/impl-hydration-orchestrate.d.ts +56 -0
- package/dist/replica/distributed-replica/impl-hydration-orchestrate.js +299 -0
- package/dist/replica/distributed-replica/impl-optimistic.d.ts +31 -0
- package/dist/replica/distributed-replica/impl-optimistic.js +172 -0
- package/dist/replica/distributed-replica/impl-protocol.d.ts +53 -0
- package/dist/replica/distributed-replica/impl-protocol.js +108 -0
- package/dist/replica/distributed-replica/impl.d.ts +44 -0
- package/dist/replica/distributed-replica/impl.js +1776 -0
- package/dist/replica/distributed-replica/index.d.ts +2 -0
- package/dist/replica/distributed-replica/index.js +4 -0
- package/dist/replica/distributed-replica/optimistic.d.ts +30 -0
- package/dist/replica/distributed-replica/optimistic.js +221 -0
- package/dist/replica/distributed-replica/types.d.ts +147 -0
- package/dist/replica/distributed-replica/types.js +1 -0
- package/dist/replica/distributed-replica/watch.d.ts +19 -0
- package/dist/replica/distributed-replica/watch.js +95 -0
- package/dist/replica/distributed-replica.d.ts +2 -0
- package/dist/replica/distributed-replica.js +2 -0
- package/dist/replica/graphql-transport.d.ts +24 -0
- package/dist/replica/graphql-transport.js +122 -0
- package/dist/replica/identity/clone.d.ts +6 -0
- package/dist/replica/identity/clone.js +54 -0
- package/dist/replica/identity/codec.d.ts +48 -0
- package/dist/replica/identity/codec.js +789 -0
- package/dist/replica/identity/constants.d.ts +3 -0
- package/dist/replica/identity/constants.js +18 -0
- package/dist/replica/identity/implementation.d.ts +5 -0
- package/dist/replica/identity/implementation.js +5 -0
- package/dist/replica/identity/index.d.ts +3 -0
- package/dist/replica/identity/index.js +3 -0
- package/dist/replica/identity/keys.d.ts +29 -0
- package/dist/replica/identity/keys.js +173 -0
- package/dist/replica/identity.d.ts +2 -0
- package/dist/replica/identity.js +2 -0
- package/dist/replica/index-maintenance/engine.d.ts +84 -0
- package/dist/replica/index-maintenance/engine.js +677 -0
- package/dist/replica/index-maintenance/implementation.d.ts +4 -0
- package/dist/replica/index-maintenance/implementation.js +4 -0
- package/dist/replica/index-maintenance/index.d.ts +2 -0
- package/dist/replica/index-maintenance/index.js +1 -0
- package/dist/replica/index-maintenance/registry.d.ts +2 -0
- package/dist/replica/index-maintenance/registry.js +49 -0
- package/dist/replica/index-maintenance/types.d.ts +58 -0
- package/dist/replica/index-maintenance/types.js +1 -0
- package/dist/replica/index-maintenance.d.ts +3 -0
- package/dist/replica/index-maintenance.js +2 -0
- package/dist/replica/index.d.ts +17 -0
- package/dist/replica/index.js +9 -0
- package/dist/replica/materialize.d.ts +10 -0
- package/dist/replica/materialize.js +163 -0
- package/dist/replica/normalize.d.ts +27 -0
- package/dist/replica/normalize.js +298 -0
- package/dist/replica/operation-binding.d.ts +14 -0
- package/dist/replica/operation-binding.js +76 -0
- package/dist/replica/persistence/idb.d.ts +20 -0
- package/dist/replica/persistence/idb.js +193 -0
- package/dist/replica/persistence/implementation.d.ts +4 -0
- package/dist/replica/persistence/implementation.js +4 -0
- package/dist/replica/persistence/index.d.ts +2 -0
- package/dist/replica/persistence/index.js +1 -0
- package/dist/replica/persistence/state.d.ts +104 -0
- package/dist/replica/persistence/state.js +734 -0
- package/dist/replica/persistence/types.d.ts +54 -0
- package/dist/replica/persistence/types.js +1 -0
- package/dist/replica/persistence.d.ts +3 -0
- package/dist/replica/persistence.js +2 -0
- package/dist/replica/query-plan/constants.d.ts +13 -0
- package/dist/replica/query-plan/constants.js +7 -0
- package/dist/replica/query-plan/filter.d.ts +39 -0
- package/dist/replica/query-plan/filter.js +544 -0
- package/dist/replica/query-plan/index.d.ts +4 -0
- package/dist/replica/query-plan/index.js +3 -0
- package/dist/replica/query-plan/order.d.ts +11 -0
- package/dist/replica/query-plan/order.js +158 -0
- package/dist/replica/query-plan/pagination.d.ts +6 -0
- package/dist/replica/query-plan/pagination.js +90 -0
- package/dist/replica/query-plan/resolve.d.ts +14 -0
- package/dist/replica/query-plan/resolve.js +163 -0
- package/dist/replica/query-plan/types.d.ts +89 -0
- package/dist/replica/query-plan/types.js +1 -0
- package/dist/replica/query-plan/util.d.ts +13 -0
- package/dist/replica/query-plan/util.js +62 -0
- package/dist/replica/query-plan.d.ts +3 -0
- package/dist/replica/query-plan.js +2 -0
- package/dist/replica/revalidation.d.ts +9 -0
- package/dist/replica/revalidation.js +86 -0
- package/dist/replica/selection.d.ts +20 -0
- package/dist/replica/selection.js +109 -0
- package/dist/replica/types.d.ts +657 -0
- package/dist/replica/types.js +1 -0
- package/dist/request.d.ts +17 -0
- package/dist/request.js +123 -0
- package/dist/sveltekit/auth.d.ts +18 -0
- package/dist/sveltekit/auth.js +9 -0
- package/dist/sveltekit/context.d.ts +28 -0
- package/dist/sveltekit/context.js +58 -0
- package/dist/sveltekit/index.d.ts +4 -0
- package/dist/sveltekit/index.js +4 -0
- package/dist/sveltekit/replica.d.ts +145 -0
- package/dist/sveltekit/replica.js +491 -0
- package/dist/sveltekit/server-replica.d.ts +52 -0
- package/dist/sveltekit/server-replica.js +176 -0
- package/dist/sveltekit/vite.d.ts +103 -0
- package/dist/sveltekit/vite.js +878 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.js +1 -0
- package/dist/websocket.d.ts +41 -0
- package/dist/websocket.js +187 -0
- package/package.json +95 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GraphqlVariables } from '../../types.js';
|
|
2
|
+
import type { ReplicaValue } from '../types.js';
|
|
3
|
+
export declare function canonicalVariables(variables: GraphqlVariables): string;
|
|
4
|
+
export declare function cloneJsonObject(value: GraphqlVariables): Readonly<Record<string, ReplicaValue>>;
|
|
5
|
+
export declare function cloneJsonValue(value: unknown, ancestors?: Set<object>): ReplicaValue;
|
|
6
|
+
export declare function canonicalCacheValue(value: ReplicaValue): string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { freezeRecord } from '../../lib/freeze-record.js';
|
|
2
|
+
export function canonicalVariables(variables) {
|
|
3
|
+
return canonicalCacheValue(cloneJsonObject(variables));
|
|
4
|
+
}
|
|
5
|
+
export function cloneJsonObject(value) {
|
|
6
|
+
const entries = [];
|
|
7
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
8
|
+
if (entry === undefined)
|
|
9
|
+
continue;
|
|
10
|
+
entries.push([key, cloneJsonValue(entry)]);
|
|
11
|
+
}
|
|
12
|
+
return freezeRecord(entries);
|
|
13
|
+
}
|
|
14
|
+
export function cloneJsonValue(value, ancestors = new Set()) {
|
|
15
|
+
if (value === null ||
|
|
16
|
+
typeof value === 'string' ||
|
|
17
|
+
typeof value === 'boolean' ||
|
|
18
|
+
typeof value === 'number') {
|
|
19
|
+
if (typeof value === 'number' && !Number.isFinite(value)) {
|
|
20
|
+
throw new TypeError('replica values must contain only finite numbers');
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
if (typeof value !== 'object') {
|
|
25
|
+
throw new TypeError('replica values must be JSON-compatible');
|
|
26
|
+
}
|
|
27
|
+
if (ancestors.has(value))
|
|
28
|
+
throw new TypeError('replica values must not contain cycles');
|
|
29
|
+
ancestors.add(value);
|
|
30
|
+
let cloned;
|
|
31
|
+
if (Array.isArray(value)) {
|
|
32
|
+
cloned = Object.freeze(value.map((entry) => cloneJsonValue(entry, ancestors)));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const prototype = Object.getPrototypeOf(value);
|
|
36
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
37
|
+
throw new TypeError('replica objects must be plain JSON objects');
|
|
38
|
+
}
|
|
39
|
+
cloned = freezeRecord(Object.entries(value).flatMap(([key, entry]) => entry === undefined ? [] : [[key, cloneJsonValue(entry, ancestors)]]));
|
|
40
|
+
}
|
|
41
|
+
ancestors.delete(value);
|
|
42
|
+
return cloned;
|
|
43
|
+
}
|
|
44
|
+
export function canonicalCacheValue(value) {
|
|
45
|
+
if (value === null || typeof value !== 'object')
|
|
46
|
+
return JSON.stringify(value);
|
|
47
|
+
if (Array.isArray(value))
|
|
48
|
+
return `[${value.map(canonicalCacheValue).join(',')}]`;
|
|
49
|
+
const record = value;
|
|
50
|
+
return `{${Object.keys(record)
|
|
51
|
+
.sort()
|
|
52
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalCacheValue(record[key])}`)
|
|
53
|
+
.join(',')}}`;
|
|
54
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { GraphqlVariables } from '../../types.js';
|
|
2
|
+
import type { ReplicaOperationArtifact, ReplicaVariableCodecArtifact, ReplicaVariableCodecLimits, ReplicaVariableFilterInputDefinition, ReplicaVariableFilterInputField, ReplicaVariableInputDefinition, ReplicaVariableInputRef, ReplicaVariableOrderInputDefinition, ReplicaValue } from '../types.js';
|
|
3
|
+
export type VariableCodecRegistry = {
|
|
4
|
+
readonly limits: ReplicaVariableCodecLimits;
|
|
5
|
+
readonly variables: ReadonlyMap<string, ReplicaVariableInputRef>;
|
|
6
|
+
readonly inputs: ReadonlyMap<string, ReplicaVariableInputDefinition>;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Apply the exact compiler-owned GraphQL input coercion contract before an
|
|
10
|
+
* operation can acquire cache identity or reach a transport.
|
|
11
|
+
*/
|
|
12
|
+
export declare function canonicalizeOperationVariables<TData, TVariables extends GraphqlVariables>(artifact: ReplicaOperationArtifact<TData, TVariables>, variables: TVariables): TVariables;
|
|
13
|
+
export declare function validateVariableCodec(codec: ReplicaVariableCodecArtifact): VariableCodecRegistry;
|
|
14
|
+
export declare function validateInputRef(value: unknown, path: string, inputs: ReadonlyMap<string, ReplicaVariableInputDefinition>, limits: ReplicaVariableCodecLimits, active: Set<object>, depth: number): void;
|
|
15
|
+
export declare function validateInputDefinition(value: ReplicaVariableInputDefinition, path: string, inputs: ReadonlyMap<string, ReplicaVariableInputDefinition>, active: Set<object>, depth: number): void;
|
|
16
|
+
export declare function validateFilterInputDefinition(definition: ReplicaVariableFilterInputDefinition, path: string, inputs: ReadonlyMap<string, ReplicaVariableInputDefinition>, active: Set<object>, depth: number): void;
|
|
17
|
+
export declare function validateOrderInputDefinition(definition: ReplicaVariableOrderInputDefinition, path: string, active: Set<object>): void;
|
|
18
|
+
export declare function canonicalizeInputRef(input: ReplicaVariableInputRef, value: unknown, registry: VariableCodecRegistry, path: string, active: Set<object>, depth: number): ReplicaValue;
|
|
19
|
+
export declare function canonicalizeInputDefinition(definition: ReplicaVariableInputDefinition, value: unknown, registry: VariableCodecRegistry, path: string, active: Set<object>, depth: number, filterBaseDepth: number | undefined): ReplicaValue;
|
|
20
|
+
export declare function canonicalizeFilterInput(definition: ReplicaVariableFilterInputDefinition, value: unknown, registry: VariableCodecRegistry, path: string, active: Set<object>, depth: number, filterDepth: number): ReplicaValue;
|
|
21
|
+
export declare function canonicalizeFilterComparison(field: ReplicaVariableFilterInputField, value: unknown, path: string, active: Set<object>, depth: number, limits: ReplicaVariableCodecLimits): ReplicaValue;
|
|
22
|
+
export declare function canonicalizeOrderInput(definition: ReplicaVariableOrderInputDefinition, value: unknown, path: string, active: Set<object>, depth: number): ReplicaValue;
|
|
23
|
+
export declare function canonicalizeScalar(scalar: string, codec: string, value: unknown, path: string): ReplicaValue;
|
|
24
|
+
export declare function canonicalizeBase64(value: unknown, path: string): string;
|
|
25
|
+
export declare function cloneCanonicalJsonObject(value: unknown, path: string, active: Set<object>, depth: number, omitUndefined: boolean): Readonly<Record<string, ReplicaValue>>;
|
|
26
|
+
export declare function cloneCanonicalJsonValue(value: unknown, path: string, active: Set<object>, depth: number, omitUndefined: boolean): ReplicaValue;
|
|
27
|
+
export declare function validateScalarContract(scalar: unknown, codec: unknown, path: string): void;
|
|
28
|
+
export declare function validateFilterOperatorContract(scalar: string, operator: string, path: string): void;
|
|
29
|
+
export declare function validateStringInventory(value: unknown, path: string): void;
|
|
30
|
+
export declare function artifactRecord(value: unknown, path: string, expectedKeys?: readonly string[]): Record<string, unknown>;
|
|
31
|
+
export declare function artifactRecordEntries(value: unknown, path: string): Array<readonly [string, unknown]>;
|
|
32
|
+
export declare function inputRecordEntries(value: unknown, path: string): Array<readonly [string, unknown]>;
|
|
33
|
+
export declare function dataRecordEntries(value: unknown, path: string, fail: (path: string) => never): Array<readonly [string, unknown]>;
|
|
34
|
+
export declare function exactArtifactKeys(value: Record<string, unknown>, path: string, expected: readonly string[], entries?: (readonly [string, unknown])[]): void;
|
|
35
|
+
export declare function artifactArray(value: unknown, path: string): readonly unknown[];
|
|
36
|
+
export declare function inputArrayValues(value: readonly unknown[], path: string): readonly unknown[];
|
|
37
|
+
export declare function arrayDataValues(value: readonly unknown[], path: string, fail: (path: string) => never): readonly unknown[];
|
|
38
|
+
export declare function withActiveArtifact(value: object, active: Set<object>, path: string, run: () => void): void;
|
|
39
|
+
export declare function beginValue(value: object, active: Set<object>, path: string): void;
|
|
40
|
+
export declare function assertGraphqlName(value: unknown, path: string): asserts value is string;
|
|
41
|
+
export declare function assertNonemptyString(value: unknown, path: string): asserts value is string;
|
|
42
|
+
export declare function assertBoolean(value: unknown, path: string): asserts value is boolean;
|
|
43
|
+
export declare function validateCodecLimit(value: unknown, path: string): number;
|
|
44
|
+
export declare function checkCodecDepth(depth: number, path: string): void;
|
|
45
|
+
export declare function checkValueDepth(depth: number, path: string): void;
|
|
46
|
+
export declare function checkFilterDepth(depth: number, limits: ReplicaVariableCodecLimits, path: string): void;
|
|
47
|
+
export declare function variableCodecInvalid(path: string): never;
|
|
48
|
+
export declare function variableValueInvalid(path: string, detail: string): never;
|