@neutron-build/nucleus 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blob/index.js.map +1 -1
- package/dist/cdc/index.js.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/columnar/index.js.map +1 -1
- package/dist/datalog/index.js.map +1 -1
- package/dist/document/index.js.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/features.js.map +1 -1
- package/dist/fts/index.js.map +1 -1
- package/dist/geo/index.js.map +1 -1
- package/dist/graph/index.js.map +1 -1
- package/dist/helpers.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kv/index.js.map +1 -1
- package/dist/migrate.js.map +1 -1
- package/dist/pubsub/index.js.map +1 -1
- package/dist/sql/index.js.map +1 -1
- package/dist/streams/index.js.map +1 -1
- package/dist/timeseries/index.js.map +1 -1
- package/dist/transport.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/vector/index.js.map +1 -1
- package/package.json +1 -1
package/dist/blob/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blob/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAsD/C,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,KAAK,CAAC,IAAyB;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAcD,SAAS,aAAa,CAAC,GAAgB;IACrC,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,aAAa;IAEE;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,IAAyB,EAAE,OAAuB,EAAE;QACzF,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,0BAA0B,CAAC;QAEnE,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QAE/F,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,GAAW;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,GAAW;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,wBAAwB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,GAAW;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,sBAAsB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,GAAW,EAAE,MAAc,EAAE,QAAgB;QACrE,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,6BAA6B,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAc;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,sBAAsB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;QAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,GAAW;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,KAAK,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAuC;IAC1D,IAAI,EAAE,MAAM;IACZ,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC1D,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blob/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/blob — Blob storage model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface BlobMeta {\n key: string;\n size: number;\n contentType: string;\n createdAt: Date;\n metadata?: Record<string, string>;\n}\n\nexport interface BlobPutOptions {\n /** MIME content type (default `application/octet-stream`). */\n contentType?: string;\n /** Custom key/value metadata tags. */\n metadata?: Record<string, string>;\n}\n\n// ---------------------------------------------------------------------------\n// BlobModel interface\n// ---------------------------------------------------------------------------\n\nexport interface BlobModel {\n /** Store a blob. `data` is a Uint8Array or a hex-encoded string. */\n put(bucket: string, key: string, data: Uint8Array | string, opts?: BlobPutOptions): Promise<void>;\n\n /** Retrieve a blob. Returns the decoded bytes and metadata, or `null`. */\n get(bucket: string, key: string): Promise<{ data: Uint8Array; meta: BlobMeta | null } | null>;\n\n /** Delete a blob. Returns `true` if it existed. */\n delete(bucket: string, key: string): Promise<boolean>;\n\n /** Get metadata for a blob. */\n meta(bucket: string, key: string): Promise<BlobMeta | null>;\n\n /** Tag a blob with a key/value pair. */\n tag(bucket: string, key: string, tagKey: string, tagValue: string): Promise<boolean>;\n\n /** List blobs matching a prefix. */\n list(bucket: string, prefix: string): Promise<BlobMeta[]>;\n\n /** Check if a blob exists. */\n exists(bucket: string, key: string): Promise<boolean>;\n\n /** Return the total number of stored blobs. */\n blobCount(): Promise<number>;\n\n /** Return the deduplication ratio. */\n dedupRatio(): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Hex helpers\n// ---------------------------------------------------------------------------\n\nfunction toHex(data: Uint8Array | string): string {\n if (typeof data === 'string') return data;\n return Array.from(data)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction fromHex(hex: string): Uint8Array {\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid hex string: odd length');\n }\n if (!/^[0-9a-fA-F]*$/.test(hex)) {\n throw new Error('Invalid hex string: contains non-hex characters');\n }\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\ninterface RawBlobMeta {\n key: string;\n size: number;\n content_type: string;\n created_at: string;\n metadata?: Record<string, string>;\n}\n\nfunction parseBlobMeta(raw: RawBlobMeta): BlobMeta {\n return {\n key: raw.key,\n size: raw.size,\n contentType: raw.content_type,\n createdAt: new Date(raw.created_at),\n metadata: raw.metadata,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass BlobModelImpl implements BlobModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Blob');\n }\n\n async put(bucket: string, key: string, data: Uint8Array | string, opts: BlobPutOptions = {}): Promise<void> {\n this.require();\n const fullKey = `${bucket}/${key}`;\n const hexData = toHex(data);\n const contentType = opts.contentType ?? 'application/octet-stream';\n\n await this.transport.execute('SELECT BLOB_STORE($1, $2, $3)', [fullKey, hexData, contentType]);\n\n if (opts.metadata) {\n for (const [k, v] of Object.entries(opts.metadata)) {\n await this.transport.execute('SELECT BLOB_TAG($1, $2, $3)', [fullKey, k, v]);\n }\n }\n }\n\n async get(bucket: string, key: string): Promise<{ data: Uint8Array; meta: BlobMeta | null } | null> {\n this.require();\n const fullKey = `${bucket}/${key}`;\n const hexData = await this.transport.fetchval<string>('SELECT BLOB_GET($1)', [fullKey]);\n if (hexData === null) return null;\n\n const meta = await this.meta(bucket, key);\n return { data: fromHex(hexData), meta };\n }\n\n async delete(bucket: string, key: string): Promise<boolean> {\n this.require();\n const fullKey = `${bucket}/${key}`;\n return (await this.transport.fetchval<boolean>('SELECT BLOB_DELETE($1)', [fullKey])) ?? false;\n }\n\n async meta(bucket: string, key: string): Promise<BlobMeta | null> {\n this.require();\n const fullKey = `${bucket}/${key}`;\n const raw = await this.transport.fetchval<string>('SELECT BLOB_META($1)', [fullKey]);\n if (!raw) return null;\n return parseBlobMeta(JSON.parse(raw) as RawBlobMeta);\n }\n\n async tag(bucket: string, key: string, tagKey: string, tagValue: string): Promise<boolean> {\n this.require();\n const fullKey = `${bucket}/${key}`;\n return (await this.transport.fetchval<boolean>('SELECT BLOB_TAG($1, $2, $3)', [fullKey, tagKey, tagValue])) ?? false;\n }\n\n async list(bucket: string, prefix: string): Promise<BlobMeta[]> {\n this.require();\n const fullPrefix = `${bucket}/${prefix}`;\n const raw = await this.transport.fetchval<string>('SELECT BLOB_LIST($1)', [fullPrefix]);\n if (!raw) return [];\n const items = JSON.parse(raw) as RawBlobMeta[];\n return items.map(parseBlobMeta);\n }\n\n async exists(bucket: string, key: string): Promise<boolean> {\n const meta = await this.meta(bucket, key);\n return meta !== null;\n }\n\n async blobCount(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT BLOB_COUNT()')) ?? 0;\n }\n\n async dedupRatio(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT BLOB_DEDUP_RATIO()')) ?? 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.blob` to the client. */\nexport const withBlob: NucleusPlugin<{ blob: BlobModel }> = {\n name: 'blob',\n init(transport: Transport, features: NucleusFeatures) {\n return { blob: new BlobModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/cdc/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cdc/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiB/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,YAAY;IAEG;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,yCAAyC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAqC;IACvD,IAAI,EAAE,KAAK;IACX,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IACxD,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cdc/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiB/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,YAAY;IAEG;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAc;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,yCAAyC;AACzC,MAAM,CAAC,MAAM,OAAO,GAAqC;IACvD,IAAI,EAAE,KAAK;IACX,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,GAAG,EAAE,IAAI,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IACxD,CAAC;CACF,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/cdc — Change Data Capture model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// CDCModel interface\n// ---------------------------------------------------------------------------\n\nexport interface CDCModel {\n /** Read CDC events starting from the given offset. Returns raw JSON. */\n read(offset: number): Promise<string>;\n\n /** Return the total number of CDC events. */\n count(): Promise<number>;\n\n /** Read CDC events for a specific table starting from the given offset. */\n tableRead(table: string, offset: number): Promise<string>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass CDCModelImpl implements CDCModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'CDC');\n }\n\n async read(offset: number): Promise<string> {\n this.require();\n return (await this.transport.fetchval<string>('SELECT CDC_READ($1)', [offset])) ?? '';\n }\n\n async count(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT CDC_COUNT()')) ?? 0;\n }\n\n async tableRead(table: string, offset: number): Promise<string> {\n this.require();\n return (await this.transport.fetchval<string>('SELECT CDC_TABLE_READ($1, $2)', [table, offset])) ?? '';\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.cdc` to the client. */\nexport const withCDC: NucleusPlugin<{ cdc: CDCModel }> = {\n name: 'cdc',\n init(transport: Transport, features: NucleusFeatures) {\n return { cdc: new CDCModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuE/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,aAAa;IACA,MAAM,CAAsB;IAC7C,8DAA8D;IAC7C,OAAO,CAAuB;IAE/C,8DAA8D;IAC9D,YAAY,MAA2B,EAAE,UAAgC,EAAE;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAI,MAAwB;QAC7B,OAAO,IAAI,aAAa,CAAU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC;YACzD,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACpD,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAEjD,qBAAqB;QACrB,MAAM,IAAI,GAAsB;YAC9B,SAAS;YACT,QAAQ;YACR,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;SAC7B,CAAC;QAEF,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAsB,CAAC,EAAE,CAAC;gBACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,wCAAwC,GAAG,GAAG,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAG9E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuE/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,aAAa;IACA,MAAM,CAAsB;IAC7C,8DAA8D;IAC7C,OAAO,CAAuB;IAE/C,8DAA8D;IAC9D,YAAY,MAA2B,EAAE,UAAgC,EAAE;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAI,MAAwB;QAC7B,OAAO,IAAI,aAAa,CAAU,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC;YACzD,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YACtC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACpD,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAEjD,qBAAqB;QACrB,MAAM,IAAI,GAAsB;YAC9B,SAAS;YACT,QAAQ;YACR,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE;SAC7B,CAAC;QAEF,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAsB,CAAC,EAAE,CAAC;gBACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,wCAAwC,GAAG,GAAG,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — builder + `.use()` plugin composition\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport, NucleusFeatures, NucleusPlugin } from './types.js';\r\nimport { createTransport } from './transport.js';\r\nimport { detectFeatures } from './features.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Config\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface NucleusClientConfig {\r\n /** Base URL of the Nucleus (or PostgreSQL HTTP proxy) server. */\r\n url: string;\r\n /** Extra HTTP headers sent with every request. */\r\n headers?: Record<string, string>;\r\n /** Request timeout in milliseconds (default 30000). */\r\n timeout?: number;\r\n /** Override the default transport (e.g. for testing or explicit platform choice). */\r\n transport?: Transport;\r\n\r\n // -- Mobile-specific options (used by MobileTransport when auto-detected) --\r\n\r\n /** Maximum retry attempts for transient failures (default 3). */\r\n maxRetries?: number;\r\n /** Base delay in ms between retries — uses exponential backoff (default 1000). */\r\n retryDelay?: number;\r\n /** Time-to-live for cached SELECT results in ms (default 60000). */\r\n cacheTTL?: number;\r\n /** Whether to cache SELECT queries (default true on mobile). */\r\n cacheEnabled?: boolean;\r\n /** Whether to queue writes when offline (default true on mobile). */\r\n offlineQueueEnabled?: boolean;\r\n /** Maximum number of queued offline operations (default 100). */\r\n maxQueueSize?: number;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Connected client base shape\r\n// ---------------------------------------------------------------------------\r\n\r\n/** The minimal client surface available before any plugins are applied. */\r\nexport interface NucleusClientBase {\r\n readonly transport: Transport;\r\n readonly features: NucleusFeatures;\r\n close(): Promise<void>;\r\n ping(): Promise<void>;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Builder\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * A lazy builder that accumulates plugins via `.use()` then resolves them all\r\n * at `.connect()` time. The return type of `.connect()` is the intersection of\r\n * `NucleusClientBase` with every plugin's contribution `T`.\r\n *\r\n * ```ts\r\n * const db = await createClient({ url: '...' })\r\n * .use(withSQL)\r\n * .use(withKV)\r\n * .connect();\r\n *\r\n * db.sql.query(...);\r\n * db.kv.get(...);\r\n * ```\r\n */\r\nexport interface NucleusClientBuilder<Acc> {\r\n /** Register a plugin. Returns a new builder whose type includes `T`. */\r\n use<T>(plugin: NucleusPlugin<T>): NucleusClientBuilder<Acc & T>;\r\n\r\n /** Connect to the server, detect features, and initialise all plugins. */\r\n connect(): Promise<NucleusClientBase & Acc>;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Implementation\r\n// ---------------------------------------------------------------------------\r\n\r\nclass ClientBuilder<Acc> implements NucleusClientBuilder<Acc> {\r\n private readonly config: NucleusClientConfig;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly plugins: NucleusPlugin<any>[];\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constructor(config: NucleusClientConfig, plugins: NucleusPlugin<any>[] = []) {\r\n this.config = config;\r\n this.plugins = plugins;\r\n }\r\n\r\n use<T>(plugin: NucleusPlugin<T>): NucleusClientBuilder<Acc & T> {\r\n return new ClientBuilder<Acc & T>(this.config, [...this.plugins, plugin]);\r\n }\r\n\r\n async connect(): Promise<NucleusClientBase & Acc> {\r\n const transport = this.config.transport ?? createTransport({\r\n url: this.config.url,\r\n headers: this.config.headers,\r\n timeout: this.config.timeout,\r\n maxRetries: this.config.maxRetries,\r\n retryDelay: this.config.retryDelay,\r\n cacheTTL: this.config.cacheTTL,\r\n cacheEnabled: this.config.cacheEnabled,\r\n offlineQueueEnabled: this.config.offlineQueueEnabled,\r\n maxQueueSize: this.config.maxQueueSize,\r\n });\r\n const features = await detectFeatures(transport);\r\n\r\n // Base client object\r\n const base: NucleusClientBase = {\r\n transport,\r\n features,\r\n close: () => transport.close(),\r\n ping: () => transport.ping(),\r\n };\r\n\r\n // Merge plugin contributions into the base object\r\n const reserved = new Set(['transport', 'features', 'close', 'ping']);\r\n const client = base as NucleusClientBase & Acc;\r\n for (const plugin of this.plugins) {\r\n const contribution = plugin.init(transport, features);\r\n for (const key of Object.keys(contribution as object)) {\r\n if (reserved.has(key)) {\r\n throw new Error(`Plugin \"${plugin.name}\" cannot override reserved property \"${key}\"`);\r\n }\r\n }\r\n Object.assign(client, contribution);\r\n }\r\n\r\n return client;\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public factory\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Create a new Nucleus client builder.\r\n *\r\n * Call `.use(plugin)` to add model support, then `.connect()` to establish the\r\n * connection and resolve the fully-typed client.\r\n */\r\nexport function createClient(config: NucleusClientConfig): NucleusClientBuilder<Record<string, never>> {\r\n return new ClientBuilder(config);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/columnar/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0BjE,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,iBAAiB;IAEF;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAA+B;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,gCAAgC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,2BAA2B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAA+C;IACtE,IAAI,EAAE,UAAU;IAChB,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAClE,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/columnar/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA0BjE,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,iBAAiB;IAEF;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAA+B;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,gCAAgC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAClH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,2BAA2B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,MAAc;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,8CAA8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAA+C;IACtE,IAAI,EAAE,UAAU;IAChB,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAClE,CAAC;CACF,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/columnar — Columnar analytics model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus, assertIdentifier } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// ColumnarModel interface\n// ---------------------------------------------------------------------------\n\nexport interface ColumnarModel {\n /** Insert a row into a columnar table. Returns `true` on success. */\n insert(table: string, values: Record<string, unknown>): Promise<boolean>;\n\n /** Return the number of rows in a columnar table. */\n count(table: string): Promise<number>;\n\n /** Return the sum of a numeric column. */\n sum(table: string, column: string): Promise<number>;\n\n /** Return the average of a numeric column. */\n avg(table: string, column: string): Promise<number>;\n\n /** Return the minimum value of a column. */\n min(table: string, column: string): Promise<unknown>;\n\n /** Return the maximum value of a column. */\n max(table: string, column: string): Promise<unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass ColumnarModelImpl implements ColumnarModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Columnar');\n }\n\n async insert(table: string, values: Record<string, unknown>): Promise<boolean> {\n this.require();\n assertIdentifier(table, 'table name');\n const valuesJson = JSON.stringify(values);\n return (await this.transport.fetchval<boolean>('SELECT COLUMNAR_INSERT($1, $2)', [table, valuesJson])) ?? false;\n }\n\n async count(table: string): Promise<number> {\n this.require();\n assertIdentifier(table, 'table name');\n return (await this.transport.fetchval<number>('SELECT COLUMNAR_COUNT($1)', [table])) ?? 0;\n }\n\n async sum(table: string, column: string): Promise<number> {\n this.require();\n assertIdentifier(table, 'table name');\n return (await this.transport.fetchval<number>('SELECT COLUMNAR_SUM($1, $2)', [table, column])) ?? 0;\n }\n\n async avg(table: string, column: string): Promise<number> {\n this.require();\n assertIdentifier(table, 'table name');\n return (await this.transport.fetchval<number>('SELECT COLUMNAR_AVG($1, $2)', [table, column])) ?? 0;\n }\n\n async min(table: string, column: string): Promise<unknown> {\n this.require();\n assertIdentifier(table, 'table name');\n return this.transport.fetchval('SELECT COLUMNAR_MIN($1, $2)', [table, column]);\n }\n\n async max(table: string, column: string): Promise<unknown> {\n this.require();\n assertIdentifier(table, 'table name');\n return this.transport.fetchval('SELECT COLUMNAR_MAX($1, $2)', [table, column]);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.columnar` to the client. */\nexport const withColumnar: NucleusPlugin<{ columnar: ColumnarModel }> = {\n name: 'columnar',\n init(transport: Transport, features: NucleusFeatures) {\n return { columnar: new ColumnarModelImpl(transport, features) };\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datalog/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0B/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,gBAAgB;IAED;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,2BAA2B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,4BAA4B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAY;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,6BAA6B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,0BAA0B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAA6C;IACnE,IAAI,EAAE,SAAS;IACf,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAChE,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datalog/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0B/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,gBAAgB;IAED;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,2BAA2B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,4BAA4B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAY;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,6BAA6B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,0BAA0B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAU,wBAAwB,CAAC,CAAC,IAAI,KAAK,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,6CAA6C;AAC7C,MAAM,CAAC,MAAM,WAAW,GAA6C;IACnE,IAAI,EAAE,SAAS;IACf,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAChE,CAAC;CACF,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/datalog — Datalog reasoning model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// DatalogModel interface\n// ---------------------------------------------------------------------------\n\nexport interface DatalogModel {\n /** Add a fact to the knowledge base. */\n assert(fact: string): Promise<boolean>;\n\n /** Remove a fact from the knowledge base. */\n retract(fact: string): Promise<boolean>;\n\n /** Define a rule with a head and body. */\n rule(head: string, body: string): Promise<boolean>;\n\n /** Evaluate a Datalog query pattern. Returns results as CSV text. */\n query(pattern: string): Promise<string>;\n\n /** Clear all facts and rules. */\n clear(): Promise<boolean>;\n\n /** Import the graph model into the Datalog knowledge base. Returns count of facts imported. */\n importGraph(): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass DatalogModelImpl implements DatalogModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Datalog');\n }\n\n async assert(fact: string): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT DATALOG_ASSERT($1)', [fact])) ?? false;\n }\n\n async retract(fact: string): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT DATALOG_RETRACT($1)', [fact])) ?? false;\n }\n\n async rule(head: string, body: string): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT DATALOG_RULE($1, $2)', [head, body])) ?? false;\n }\n\n async query(pattern: string): Promise<string> {\n this.require();\n return (await this.transport.fetchval<string>('SELECT DATALOG_QUERY($1)', [pattern])) ?? '';\n }\n\n async clear(): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT DATALOG_CLEAR()')) ?? false;\n }\n\n async importGraph(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT DATALOG_IMPORT_GRAPH()')) ?? 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.datalog` to the client. */\nexport const withDatalog: NucleusPlugin<{ datalog: DatalogModel }> = {\n name: 'datalog',\n init(transport: Transport, features: NucleusFeatures) {\n return { datalog: new DatalogModelImpl(transport, features) };\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/document/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/document — Document / JSON model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface DocFindOptions {\n /** Sort by this field. */\n sortField?: string;\n /** Sort ascending (`true`) or descending (`false`). */\n sortAsc?: boolean;\n /** Skip the first `n` results. */\n skip?: number;\n /** Maximum number of results. */\n limit?: number;\n /** Only return these fields from each document. */\n fields?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// DocumentModel interface\n// ---------------------------------------------------------------------------\n\nexport interface DocumentModel {\n /** Insert a document. Returns the generated document ID. */\n insert(collection: string, doc: Record<string, unknown>): Promise<number>;\n\n /** Get a document by ID. Returns `null` if not found. */\n get(id: number): Promise<Record<string, unknown> | null>;\n\n /** Get a document and cast it to `T`. Returns `null` if not found. */\n getTyped<T>(id: number): Promise<T | null>;\n\n /** Query documents matching a JSON filter. Returns matching IDs. */\n queryDocs(filter: Record<string, unknown>): Promise<number[]>;\n\n /** Extract a nested value from a document by key path. */\n path(id: number, ...keys: string[]): Promise<string | null>;\n\n /** Return the total number of documents. */\n count(): Promise<number>;\n\n /** Find full documents matching a filter. */\n find(collection: string, filter: Record<string, unknown>, opts?: DocFindOptions): Promise<Record<string, unknown>[]>;\n\n /** Find and return typed results. */\n findTyped<T>(collection: string, filter: Record<string, unknown>, opts?: DocFindOptions): Promise<T[]>;\n\n /** Find the first document matching a filter. */\n findOne(collection: string, filter: Record<string, unknown>): Promise<Record<string, unknown> | null>;\n\n /** Update documents matching a filter with the given partial. Returns count of updated docs. */\n update(collection: string, filter: Record<string, unknown>, update: Record<string, unknown>): Promise<number>;\n\n /** Delete documents matching a filter. Returns count of deleted docs. */\n delete(collection: string, filter: Record<string, unknown>): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass DocumentModelImpl implements DocumentModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Document');\n }\n\n async insert(_collection: string, doc: Record<string, unknown>): Promise<number> {\n this.require();\n const data = JSON.stringify(doc);\n return (await this.transport.fetchval<number>('SELECT DOC_INSERT($1)', [data])) ?? 0;\n }\n\n async get(id: number): Promise<Record<string, unknown> | null> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT DOC_GET($1)', [id]);\n if (raw === null) return null;\n return JSON.parse(raw) as Record<string, unknown>;\n }\n\n async getTyped<T>(id: number): Promise<T | null> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT DOC_GET($1)', [id]);\n if (raw === null) return null;\n return JSON.parse(raw) as T;\n }\n\n async queryDocs(filter: Record<string, unknown>): Promise<number[]> {\n this.require();\n const q = JSON.stringify(filter);\n const raw = await this.transport.fetchval<string>('SELECT DOC_QUERY($1)', [q]);\n if (!raw) return [];\n return raw\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n .map(Number)\n .filter((n) => !Number.isNaN(n));\n }\n\n async path(id: number, ...keys: string[]): Promise<string | null> {\n this.require();\n const placeholders = keys.map((_, i) => `$${i + 2}`).join(', ');\n const sql = `SELECT DOC_PATH($1, ${placeholders})`;\n return this.transport.fetchval<string>(sql, [id, ...keys]);\n }\n\n async count(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT DOC_COUNT()')) ?? 0;\n }\n\n async find(\n collection: string,\n filter: Record<string, unknown>,\n opts: DocFindOptions = {},\n ): Promise<Record<string, unknown>[]> {\n const ids = await this.queryDocs(filter);\n let results: Record<string, unknown>[] = [];\n\n for (const id of ids) {\n const doc = await this.get(id);\n if (doc) results.push(doc);\n }\n\n // Sort\n if (opts.sortField) {\n const field = opts.sortField;\n const asc = opts.sortAsc ?? true;\n results.sort((a, b) => {\n const va = String(a[field] ?? '');\n const vb = String(b[field] ?? '');\n return asc ? va.localeCompare(vb) : vb.localeCompare(va);\n });\n }\n\n // Skip\n if (opts.skip && opts.skip > 0) {\n results = results.slice(opts.skip);\n }\n\n // Limit\n if (opts.limit && opts.limit > 0) {\n results = results.slice(0, opts.limit);\n }\n\n // Projection\n if (opts.fields && opts.fields.length > 0) {\n const keep = new Set(opts.fields);\n results = results.map((doc) => {\n const projected: Record<string, unknown> = {};\n for (const f of keep) {\n if (f in doc) projected[f] = doc[f];\n }\n return projected;\n });\n }\n\n return results;\n }\n\n async findTyped<T>(\n collection: string,\n filter: Record<string, unknown>,\n opts: DocFindOptions = {},\n ): Promise<T[]> {\n const ids = await this.queryDocs(filter);\n let results: T[] = [];\n\n for (const id of ids) {\n const item = await this.getTyped<T>(id);\n if (item !== null) results.push(item);\n }\n\n if (opts.skip && opts.skip > 0) results = results.slice(opts.skip);\n if (opts.limit && opts.limit > 0) results = results.slice(0, opts.limit);\n\n return results;\n }\n\n async findOne(\n collection: string,\n filter: Record<string, unknown>,\n ): Promise<Record<string, unknown> | null> {\n const docs = await this.find(collection, filter, { limit: 1 });\n return docs.length > 0 ? docs[0] : null;\n }\n\n async update(\n collection: string,\n filter: Record<string, unknown>,\n update: Record<string, unknown>,\n ): Promise<number> {\n this.require();\n const ids = await this.queryDocs(filter);\n let count = 0;\n\n for (const id of ids) {\n const doc = await this.get(id);\n if (!doc) continue;\n Object.assign(doc, update);\n const data = JSON.stringify(doc);\n await this.transport.execute('UPDATE documents SET data = $1::jsonb WHERE id = $2', [data, id]);\n count++;\n }\n\n return count;\n }\n\n async delete(collection: string, filter: Record<string, unknown>): Promise<number> {\n this.require();\n const ids = await this.queryDocs(filter);\n let count = 0;\n\n for (const id of ids) {\n await this.transport.execute('DELETE FROM documents WHERE id = $1', [id]);\n count++;\n }\n\n return count;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.document` to the client. */\nexport const withDocument: NucleusPlugin<{ document: DocumentModel }> = {\n name: 'document',\n init(transport: Transport, features: NucleusFeatures) {\n return { document: new DocumentModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAO9E,6CAA6C;AAC7C,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAS;IACb,IAAI,CAA2B;IAExC,YAAY,IAAY,EAAE,OAAe,EAAE,OAA6B;QACtE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CACH,qBAAqB,EACrB,GAAG,OAAO,+DAA+D,EACzE,OAAO,CACR,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAO9E,6CAA6C;AAC7C,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAS;IACb,IAAI,CAA2B;IAExC,YAAY,IAAY,EAAE,OAAe,EAAE,OAA6B;QACtE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,OAAO,uBAAwB,SAAQ,YAAY;IACvD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CACH,qBAAqB,EACrB,GAAG,OAAO,+DAA+D,EACzE,OAAO,CACR,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — error hierarchy\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface NucleusErrorOptions {\r\n cause?: Error;\r\n meta?: Record<string, unknown>;\r\n}\r\n\r\n/** Base error for all Nucleus operations. */\r\nexport class NucleusError extends Error {\r\n readonly code: string;\r\n readonly meta?: Record<string, unknown>;\r\n\r\n constructor(code: string, message: string, options?: NucleusErrorOptions) {\r\n super(message, { cause: options?.cause });\r\n this.name = 'NucleusError';\r\n this.code = code;\r\n this.meta = options?.meta;\r\n }\r\n}\r\n\r\n/** Thrown when a connection cannot be established or is lost. */\r\nexport class NucleusConnectionError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('CONNECTION_ERROR', message, options);\r\n this.name = 'NucleusConnectionError';\r\n }\r\n}\r\n\r\n/** Thrown when a SQL query or command fails on the server. */\r\nexport class NucleusQueryError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('QUERY_ERROR', message, options);\r\n this.name = 'NucleusQueryError';\r\n }\r\n}\r\n\r\n/** Thrown when an expected row or resource is not found. */\r\nexport class NucleusNotFoundError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('NOT_FOUND', message, options);\r\n this.name = 'NucleusNotFoundError';\r\n }\r\n}\r\n\r\n/** Thrown on unique-constraint violations or optimistic-lock conflicts. */\r\nexport class NucleusConflictError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('CONFLICT', message, options);\r\n this.name = 'NucleusConflictError';\r\n }\r\n}\r\n\r\n/** Thrown when a transaction fails to commit or is aborted. */\r\nexport class NucleusTransactionError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('TRANSACTION_ERROR', message, options);\r\n this.name = 'NucleusTransactionError';\r\n }\r\n}\r\n\r\n/** Thrown when a Nucleus-only feature is used against plain PostgreSQL. */\r\nexport class NucleusFeatureError extends NucleusError {\r\n constructor(feature: string, options?: NucleusErrorOptions) {\r\n super(\r\n 'FEATURE_UNAVAILABLE',\r\n `${feature} requires Nucleus database, but connected to plain PostgreSQL`,\r\n options,\r\n );\r\n this.name = 'NucleusFeatureError';\r\n }\r\n}\r\n\r\n/** Thrown when the server rejects the request for authentication reasons. */\r\nexport class NucleusAuthError extends NucleusError {\r\n constructor(message: string, options?: NucleusErrorOptions) {\r\n super('AUTH_ERROR', message, options);\r\n this.name = 'NucleusAuthError';\r\n }\r\n}\r\n"]}
|
package/dist/features.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAI9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAoB;IACvD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAS,kBAAkB,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;IAE1B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,GAAG;SACb,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAS,2BAA2B,CAAC,CAAC;QAC1E,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YAC5D,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK;gBAC5B,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK;gBACpC,aAAa,EAAE,QAAQ,CAAC,UAAU,KAAK,KAAK;gBAC5C,WAAW,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;gBACxC,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,KAAK;gBAClC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK;gBAChC,UAAU,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;gBACtC,WAAW,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;gBACxC,UAAU,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;gBACtC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK;gBACpC,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IAED,4CAA4C;IAC5C,OAAO;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,GAAG;KACb,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAI9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAoB;IACvD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAS,kBAAkB,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;IAE1B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,GAAG;SACb,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAS,2BAA2B,CAAC,CAAC;QAC1E,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;YAC5D,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK;gBAC5B,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK;gBACpC,aAAa,EAAE,QAAQ,CAAC,UAAU,KAAK,KAAK;gBAC5C,WAAW,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;gBACxC,QAAQ,EAAE,QAAQ,CAAC,KAAK,KAAK,KAAK;gBAClC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,KAAK;gBAChC,UAAU,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;gBACtC,WAAW,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;gBACxC,UAAU,EAAE,QAAQ,CAAC,OAAO,KAAK,KAAK;gBACtC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,KAAK;gBAC9B,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK;gBACpC,OAAO,EAAE,GAAG;aACb,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IAED,4CAA4C;IAC5C,OAAO;QACL,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,GAAG;KACb,CAAC;AACJ,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — feature detection\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport, NucleusFeatures } from './types.js';\r\n\r\n/**\r\n * Detect capabilities of the connected database.\r\n *\r\n * Detection strategy:\r\n * 1. `SELECT VERSION()` — if it contains \"Nucleus\", we know this is Nucleus.\r\n * 2. If Nucleus is detected, query `nucleus_features()` for granular per-model\r\n * availability. This allows partial installations where some engines are\r\n * disabled or not yet loaded.\r\n * 3. On plain PostgreSQL the result is a standard PG version string and only\r\n * SQL features are enabled.\r\n */\r\nexport async function detectFeatures(transport: Transport): Promise<NucleusFeatures> {\r\n const version = await transport.fetchval<string>('SELECT VERSION()');\r\n const ver = version ?? '';\r\n\r\n const isNucleus = ver.includes('Nucleus');\r\n\r\n if (!isNucleus) {\r\n return {\r\n isNucleus: false,\r\n hasKV: false,\r\n hasVector: false,\r\n hasTimeSeries: false,\r\n hasDocument: false,\r\n hasGraph: false,\r\n hasFTS: false,\r\n hasGeo: false,\r\n hasBlob: false,\r\n hasStreams: false,\r\n hasColumnar: false,\r\n hasDatalog: false,\r\n hasCDC: false,\r\n hasPubSub: false,\r\n version: ver,\r\n };\r\n }\r\n\r\n // Attempt granular feature detection via nucleus_features() function.\r\n // If the function does not exist (older Nucleus builds), fall back to all=true.\r\n try {\r\n const raw = await transport.fetchval<string>('SELECT NUCLEUS_FEATURES()');\r\n if (raw) {\r\n const features = JSON.parse(raw) as Record<string, boolean>;\r\n return {\r\n isNucleus: true,\r\n hasKV: features.kv !== false,\r\n hasVector: features.vector !== false,\r\n hasTimeSeries: features.timeseries !== false,\r\n hasDocument: features.document !== false,\r\n hasGraph: features.graph !== false,\r\n hasFTS: features.fts !== false,\r\n hasGeo: features.geo !== false,\r\n hasBlob: features.blob !== false,\r\n hasStreams: features.streams !== false,\r\n hasColumnar: features.columnar !== false,\r\n hasDatalog: features.datalog !== false,\r\n hasCDC: features.cdc !== false,\r\n hasPubSub: features.pubsub !== false,\r\n version: ver,\r\n };\r\n }\r\n } catch {\r\n // NUCLEUS_FEATURES() not available — fall through to all-enabled default.\r\n }\r\n\r\n // All models enabled by default on Nucleus.\r\n return {\r\n isNucleus: true,\r\n hasKV: true,\r\n hasVector: true,\r\n hasTimeSeries: true,\r\n hasDocument: true,\r\n hasGraph: true,\r\n hasFTS: true,\r\n hasGeo: true,\r\n hasBlob: true,\r\n hasStreams: true,\r\n hasColumnar: true,\r\n hasDatalog: true,\r\n hasCDC: true,\r\n hasPubSub: true,\r\n version: ver,\r\n };\r\n}\r\n"]}
|
package/dist/fts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fts/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fts/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/fts — Full-Text Search model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface FTSResult {\n docId: number;\n score: number;\n highlight?: Record<string, string>;\n}\n\nexport interface FTSSearchOptions {\n /** Enable fuzzy matching with the given edit distance. */\n fuzzyDistance?: number;\n /** Maximum number of results (default 10). */\n limit?: number;\n /** Fields to highlight in results. */\n highlight?: string[];\n /** Fields to compute facet counts for. */\n facets?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// FTSModel interface\n// ---------------------------------------------------------------------------\n\nexport interface FTSModel {\n /** Add a document's text to the full-text index. */\n index(docId: number, text: string): Promise<boolean>;\n\n /** Search the full-text index. */\n search(query: string, opts?: FTSSearchOptions): Promise<FTSResult[]>;\n\n /** Remove a document from the index. */\n remove(docId: number): Promise<boolean>;\n\n /** Return the number of indexed documents. */\n docCount(): Promise<number>;\n\n /** Return the number of indexed terms. */\n termCount(): Promise<number>;\n\n /** Create a named FTS index with the given configuration. */\n createIndex(name: string, config: Record<string, unknown>): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass FTSModelImpl implements FTSModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'FTS');\n }\n\n async index(docId: number, text: string): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT FTS_INDEX($1, $2)', [docId, text])) ?? false;\n }\n\n async search(query: string, opts: FTSSearchOptions = {}): Promise<FTSResult[]> {\n this.require();\n const limit = opts.limit ?? 10;\n\n let raw: string | null;\n if (opts.fuzzyDistance && opts.fuzzyDistance > 0) {\n raw = await this.transport.fetchval<string>('SELECT FTS_FUZZY_SEARCH($1, $2, $3)', [\n query,\n opts.fuzzyDistance,\n limit,\n ]);\n } else {\n raw = await this.transport.fetchval<string>('SELECT FTS_SEARCH($1, $2)', [query, limit]);\n }\n\n if (!raw) return [];\n const results = JSON.parse(raw) as FTSResult[];\n\n // Ensure highlight map is present when requested\n if (opts.highlight && opts.highlight.length > 0) {\n for (const r of results) {\n if (!r.highlight) r.highlight = {};\n }\n }\n\n return results;\n }\n\n async remove(docId: number): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT FTS_REMOVE($1)', [docId])) ?? false;\n }\n\n async docCount(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT FTS_DOC_COUNT()')) ?? 0;\n }\n\n async termCount(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT FTS_TERM_COUNT()')) ?? 0;\n }\n\n async createIndex(name: string, config: Record<string, unknown>): Promise<void> {\n this.require();\n const configJson = JSON.stringify(config);\n await this.transport.execute('SELECT FTS_INDEX($1, $2)', [name, configJson]);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.fts` to the client. */\nexport const withFTS: NucleusPlugin<{ fts: FTSModel }> = {\n name: 'fts',\n init(transport: Transport, features: NucleusFeatures) {\n return { fts: new FTSModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/geo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/geo/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/geo — Geospatial model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus, assertIdentifier } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface GeoPoint {\n lat: number;\n lon: number;\n}\n\nexport interface GeoFeature {\n id: string;\n lat: number;\n lon: number;\n properties: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// GeoModel interface\n// ---------------------------------------------------------------------------\n\nexport interface GeoModel {\n /** Haversine distance in metres between two points. */\n distance(a: GeoPoint, b: GeoPoint): Promise<number>;\n\n /** Euclidean distance between two points. */\n distanceEuclidean(a: GeoPoint, b: GeoPoint): Promise<number>;\n\n /** Check if `b` is within `radiusMeters` of `a`. */\n within(a: GeoPoint, b: GeoPoint, radiusMeters: number): Promise<boolean>;\n\n /** Calculate the area of a polygon (minimum 3 points). */\n area(points: GeoPoint[]): Promise<number>;\n\n /** Find features within a radius of a point. */\n nearestTo(layer: string, point: GeoPoint, radiusMeters: number, limit: number): Promise<GeoFeature[]>;\n\n /** Find features inside a bounding box. */\n withinBBox(layer: string, minLat: number, minLon: number, maxLat: number, maxLon: number): Promise<GeoFeature[]>;\n\n /** Find features inside a polygon. Each coordinate is `[lat, lon]`. */\n withinPolygon(layer: string, polygon: [number, number][]): Promise<GeoFeature[]>;\n\n /** Insert a geographic feature into a layer table. */\n insert(layer: string, lat: number, lon: number, props: Record<string, unknown>): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass GeoModelImpl implements GeoModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Geo');\n }\n\n async distance(a: GeoPoint, b: GeoPoint): Promise<number> {\n this.require();\n return (\n (await this.transport.fetchval<number>('SELECT GEO_DISTANCE($1, $2, $3, $4)', [\n a.lat, a.lon, b.lat, b.lon,\n ])) ?? 0\n );\n }\n\n async distanceEuclidean(a: GeoPoint, b: GeoPoint): Promise<number> {\n this.require();\n return (\n (await this.transport.fetchval<number>('SELECT GEO_DISTANCE_EUCLIDEAN($1, $2, $3, $4)', [\n a.lat, a.lon, b.lat, b.lon,\n ])) ?? 0\n );\n }\n\n async within(a: GeoPoint, b: GeoPoint, radiusMeters: number): Promise<boolean> {\n this.require();\n return (\n (await this.transport.fetchval<boolean>('SELECT GEO_WITHIN($1, $2, $3, $4, $5)', [\n a.lat, a.lon, b.lat, b.lon, radiusMeters,\n ])) ?? false\n );\n }\n\n async area(points: GeoPoint[]): Promise<number> {\n this.require();\n if (points.length < 3) throw new Error('GEO_AREA requires at least 3 points');\n\n const args: unknown[] = [];\n const placeholders: string[] = [];\n for (let i = 0; i < points.length; i++) {\n args.push(points[i].lon, points[i].lat);\n placeholders.push(`$${i * 2 + 1}`, `$${i * 2 + 2}`);\n }\n const sql = `SELECT GEO_AREA(${placeholders.join(', ')})`;\n return (await this.transport.fetchval<number>(sql, args)) ?? 0;\n }\n\n async nearestTo(\n layer: string,\n point: GeoPoint,\n radiusMeters: number,\n limit: number,\n ): Promise<GeoFeature[]> {\n this.require();\n assertIdentifier(layer, 'layer name');\n\n const sql =\n `SELECT id, lat, lon, properties, GEO_DISTANCE($1, $2, lat, lon) AS dist ` +\n `FROM ${layer} ` +\n `WHERE GEO_WITHIN($1, $2, lat, lon, $3) ` +\n `ORDER BY dist LIMIT $4`;\n\n const result = await this.transport.query<{\n id: string; lat: number; lon: number; properties: string; dist: number;\n }>(sql, [point.lat, point.lon, radiusMeters, limit]);\n\n return result.rows.map((r) => ({\n id: r.id,\n lat: Number(r.lat),\n lon: Number(r.lon),\n properties: {\n ...(typeof r.properties === 'string' ? JSON.parse(r.properties) : (r.properties ?? {})),\n distance: Number(r.dist),\n },\n }));\n }\n\n async withinBBox(\n layer: string,\n minLat: number,\n minLon: number,\n maxLat: number,\n maxLon: number,\n ): Promise<GeoFeature[]> {\n this.require();\n assertIdentifier(layer, 'layer name');\n\n const sql =\n `SELECT id, lat, lon, properties FROM ${layer} ` +\n `WHERE lat >= $1 AND lat <= $3 AND lon >= $2 AND lon <= $4`;\n\n const result = await this.transport.query<{\n id: string; lat: number; lon: number; properties: string;\n }>(sql, [minLat, minLon, maxLat, maxLon]);\n\n return result.rows.map((r) => ({\n id: r.id,\n lat: Number(r.lat),\n lon: Number(r.lon),\n properties: typeof r.properties === 'string' ? JSON.parse(r.properties) : (r.properties ?? {}),\n }));\n }\n\n async withinPolygon(layer: string, polygon: [number, number][]): Promise<GeoFeature[]> {\n this.require();\n assertIdentifier(layer, 'layer name');\n\n // Build GeoJSON polygon ([lon, lat] coordinate order)\n const coords = polygon.map(([lat, lon]) => [lon, lat]);\n // Close the ring if not already closed\n if (\n coords.length > 0 &&\n (coords[0][0] !== coords[coords.length - 1][0] || coords[0][1] !== coords[coords.length - 1][1])\n ) {\n coords.push([...coords[0]]);\n }\n const geoJson = JSON.stringify({\n type: 'Polygon',\n coordinates: [coords],\n });\n\n const sql =\n `SELECT id, lat, lon, properties FROM ${layer} ` +\n `WHERE ST_CONTAINS(ST_GEOMFROMGEOJSON($1), ST_MAKEPOINT(lon, lat))`;\n\n const result = await this.transport.query<{\n id: string; lat: number; lon: number; properties: string;\n }>(sql, [geoJson]);\n\n return result.rows.map((r) => ({\n id: r.id,\n lat: Number(r.lat),\n lon: Number(r.lon),\n properties: typeof r.properties === 'string' ? JSON.parse(r.properties) : (r.properties ?? {}),\n }));\n }\n\n async insert(layer: string, lat: number, lon: number, props: Record<string, unknown>): Promise<void> {\n this.require();\n assertIdentifier(layer, 'layer name');\n const propsJson = JSON.stringify(props);\n await this.transport.execute(\n `INSERT INTO ${layer} (lat, lon, properties) VALUES ($1, $2, $3)`,\n [lat, lon, propsJson],\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.geo` to the client. */\nexport const withGeo: NucleusPlugin<{ geo: GeoModel }> = {\n name: 'geo',\n init(transport: Transport, features: NucleusFeatures) {\n return { geo: new GeoModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/graph/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/graph — Graph model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type Direction = 'out' | 'in' | 'both';\n\nexport interface GraphNode {\n id: number;\n labels?: string[];\n properties?: Record<string, unknown>;\n}\n\nexport interface GraphEdge {\n id: number;\n type: string;\n fromId: number;\n toId: number;\n properties?: Record<string, unknown>;\n}\n\nexport interface GraphResult {\n columns: string[];\n rows: Record<string, unknown>[];\n}\n\n// ---------------------------------------------------------------------------\n// GraphModel interface\n// ---------------------------------------------------------------------------\n\nexport interface GraphModel {\n /** Create a new node with labels and optional properties. Returns the node ID. */\n addNode(labels: string[], props?: Record<string, unknown>): Promise<number>;\n\n /** Create an edge between two nodes. Returns the edge ID. */\n addEdge(fromId: number, toId: number, edgeType: string, props?: Record<string, unknown>): Promise<number>;\n\n /** Delete a node by ID. Returns `true` if it existed. */\n deleteNode(nodeId: number): Promise<boolean>;\n\n /** Delete an edge by ID. Returns `true` if it existed. */\n deleteEdge(edgeId: number): Promise<boolean>;\n\n /** Execute a Cypher query with optional parameters. */\n query(cypher: string, params?: Record<string, unknown>): Promise<GraphResult>;\n\n /** Find neighboring nodes, optionally filtered by edge type and direction. */\n neighbors(nodeId: number, edgeType?: string, direction?: Direction): Promise<GraphNode[]>;\n\n /** Find the shortest path between two nodes. Returns node IDs along the path. */\n shortestPath(fromId: number, toId: number, maxDepth?: number): Promise<number[]>;\n\n /** Return the total number of nodes. */\n nodeCount(): Promise<number>;\n\n /** Return the total number of edges. */\n edgeCount(): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass GraphModelImpl implements GraphModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Graph');\n }\n\n async addNode(labels: string[], props?: Record<string, unknown>): Promise<number> {\n this.require();\n const label = labels.join(':');\n if (props) {\n const propsJson = JSON.stringify(props);\n return (await this.transport.fetchval<number>('SELECT GRAPH_ADD_NODE($1, $2)', [label, propsJson])) ?? 0;\n }\n return (await this.transport.fetchval<number>('SELECT GRAPH_ADD_NODE($1)', [label])) ?? 0;\n }\n\n async addEdge(\n fromId: number,\n toId: number,\n edgeType: string,\n props?: Record<string, unknown>,\n ): Promise<number> {\n this.require();\n if (props) {\n const propsJson = JSON.stringify(props);\n return (\n (await this.transport.fetchval<number>('SELECT GRAPH_ADD_EDGE($1, $2, $3, $4)', [\n fromId,\n toId,\n edgeType,\n propsJson,\n ])) ?? 0\n );\n }\n return (\n (await this.transport.fetchval<number>('SELECT GRAPH_ADD_EDGE($1, $2, $3)', [fromId, toId, edgeType])) ?? 0\n );\n }\n\n async deleteNode(nodeId: number): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT GRAPH_DELETE_NODE($1)', [nodeId])) ?? false;\n }\n\n async deleteEdge(edgeId: number): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT GRAPH_DELETE_EDGE($1)', [edgeId])) ?? false;\n }\n\n async query(cypher: string, params?: Record<string, unknown>): Promise<GraphResult> {\n this.require();\n let raw: string | null;\n if (params && Object.keys(params).length > 0) {\n const paramsJson = JSON.stringify(params);\n raw = await this.transport.fetchval<string>('SELECT GRAPH_QUERY($1, $2)', [cypher, paramsJson]);\n } else {\n raw = await this.transport.fetchval<string>('SELECT GRAPH_QUERY($1)', [cypher]);\n }\n if (!raw) return { columns: [], rows: [] };\n return JSON.parse(raw) as GraphResult;\n }\n\n async neighbors(nodeId: number, edgeType?: string, direction: Direction = 'out'): Promise<GraphNode[]> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT GRAPH_NEIGHBORS($1, $2)', [nodeId, direction]);\n if (!raw) return [];\n const nodes = JSON.parse(raw) as GraphNode[];\n\n if (edgeType) {\n return nodes.filter((n) => n.properties?._edge_type === edgeType);\n }\n return nodes;\n }\n\n async shortestPath(fromId: number, toId: number, maxDepth?: number): Promise<number[]> {\n this.require();\n let raw: string | null;\n if (maxDepth && maxDepth > 0) {\n raw = await this.transport.fetchval<string>('SELECT GRAPH_SHORTEST_PATH($1, $2, $3)', [\n fromId,\n toId,\n maxDepth,\n ]);\n } else {\n raw = await this.transport.fetchval<string>('SELECT GRAPH_SHORTEST_PATH($1, $2)', [fromId, toId]);\n }\n if (!raw) return [];\n return JSON.parse(raw) as number[];\n }\n\n async nodeCount(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT GRAPH_NODE_COUNT()')) ?? 0;\n }\n\n async edgeCount(): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT GRAPH_EDGE_COUNT()')) ?? 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.graph` to the client. */\nexport const withGraph: NucleusPlugin<{ graph: GraphModel }> = {\n name: 'graph',\n init(transport: Transport, features: NucleusFeatures) {\n return { graph: new GraphModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAG9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,sEAAsE;AACtE,MAAM,eAAe,GAA0C;IAC7D,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAyB,EAAE,WAAmB;IAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAG9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,sEAAsE;AACtE,MAAM,eAAe,GAA0C;IAC7D,EAAE,EAAE,OAAO;IACX,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,aAAa;IACvB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAyB,EAAE,WAAmB;IAC3E,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAa;IAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — shared internal helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { NucleusFeatures } from './types.js';\r\nimport { NucleusFeatureError } from './errors.js';\r\n\r\n/** Map from feature name to the corresponding NucleusFeatures key. */\r\nconst FEATURE_KEY_MAP: Record<string, keyof NucleusFeatures> = {\r\n KV: 'hasKV',\r\n Vector: 'hasVector',\r\n TimeSeries: 'hasTimeSeries',\r\n Document: 'hasDocument',\r\n Graph: 'hasGraph',\r\n FTS: 'hasFTS',\r\n Geo: 'hasGeo',\r\n Blob: 'hasBlob',\r\n Streams: 'hasStreams',\r\n Columnar: 'hasColumnar',\r\n Datalog: 'hasDatalog',\r\n CDC: 'hasCDC',\r\n PubSub: 'hasPubSub',\r\n};\r\n\r\n/**\r\n * Throw if the server is not Nucleus or the specific feature is unavailable.\r\n *\r\n * When connected to plain PostgreSQL, always throws.\r\n * When connected to Nucleus, checks the granular feature flag so that\r\n * partially configured instances report the correct error.\r\n */\r\nexport function requireNucleus(features: NucleusFeatures, featureName: string): void {\r\n if (!features.isNucleus) {\r\n throw new NucleusFeatureError(featureName);\r\n }\r\n const key = FEATURE_KEY_MAP[featureName];\r\n if (key && !features[key]) {\r\n throw new NucleusFeatureError(featureName);\r\n }\r\n}\r\n\r\n/**\r\n * Validate that `name` is a safe SQL identifier (table/column name).\r\n * Only allows `[a-zA-Z_][a-zA-Z0-9_]*`.\r\n */\r\nconst IDENTIFIER_RE = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\r\n\r\nexport function assertIdentifier(name: string, label: string): void {\r\n if (!IDENTIFIER_RE.test(name)) {\r\n throw new Error(`Invalid ${label}: ${JSON.stringify(name)}`);\r\n }\r\n}\r\n"]}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGrE,8EAA8E;AAC9E,+CAA+C;AAC/C,wEAAwE;AACxE,gCAAgC;AAChC,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGrE,8EAA8E;AAC9E,+CAA+C;AAC/C,wEAAwE;AACxE,gCAAgC;AAChC,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\r\n// @neutron/nucleus — main entry point\r\n// ---------------------------------------------------------------------------\r\n\r\nexport { createClient } from './client.js';\r\nexport type { NucleusClientConfig, NucleusClientBase, NucleusClientBuilder } from './client.js';\r\n\r\nexport type {\r\n Transport,\r\n TransactionTransport,\r\n QueryResult,\r\n IsolationLevel,\r\n NucleusFeatures,\r\n NucleusPlugin,\r\n} from './types.js';\r\n\r\nexport {\r\n NucleusError,\r\n NucleusConnectionError,\r\n NucleusQueryError,\r\n NucleusNotFoundError,\r\n NucleusConflictError,\r\n NucleusTransactionError,\r\n NucleusFeatureError,\r\n NucleusAuthError,\r\n} from './errors.js';\r\n\r\nexport { HttpTransport, MobileTransport, EmbeddedTransport, createTransport } from './transport.js';\r\nexport type { TransportConfig, MobileTransportConfig } from './transport.js';\r\nexport { detectFeatures } from './features.js';\r\nexport { requireNucleus, assertIdentifier } from './helpers.js';\r\nexport { migrate, migrateDown, migrationStatus } from './migrate.js';\r\nexport type { Migration, MigrationRecord } from './migrate.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Model plugins — re-exported for convenience.\r\n// Tree-shakeable: each plugin can also be imported from its own subpath\r\n// (e.g. `@neutron/nucleus/kv`).\r\n// ---------------------------------------------------------------------------\r\n\r\nexport { withSQL } from './sql/index.js';\r\nexport type { SQLModel } from './sql/index.js';\r\n\r\nexport { withKV } from './kv/index.js';\r\nexport type { KVModel, KVSetOptions } from './kv/index.js';\r\n\r\nexport { withVector } from './vector/index.js';\r\nexport type { VectorModel, VectorSearchResult, VectorSearchOptions, DistanceMetric } from './vector/index.js';\r\n\r\nexport { withTimeSeries } from './timeseries/index.js';\r\nexport type { TimeSeriesModel, TimeSeriesPoint, AggFunc, BucketInterval, TimeSeriesQueryOptions } from './timeseries/index.js';\r\n\r\nexport { withDocument } from './document/index.js';\r\nexport type { DocumentModel, DocFindOptions } from './document/index.js';\r\n\r\nexport { withGraph } from './graph/index.js';\r\nexport type { GraphModel, GraphNode, GraphEdge, GraphResult, Direction } from './graph/index.js';\r\n\r\nexport { withFTS } from './fts/index.js';\r\nexport type { FTSModel, FTSResult, FTSSearchOptions } from './fts/index.js';\r\n\r\nexport { withGeo } from './geo/index.js';\r\nexport type { GeoModel, GeoPoint, GeoFeature } from './geo/index.js';\r\n\r\nexport { withBlob } from './blob/index.js';\r\nexport type { BlobModel, BlobMeta, BlobPutOptions } from './blob/index.js';\r\n\r\nexport { withPubSub } from './pubsub/index.js';\r\nexport type { PubSubModel } from './pubsub/index.js';\r\n\r\nexport { withStreams } from './streams/index.js';\r\nexport type { StreamsModel, StreamEntry } from './streams/index.js';\r\n\r\nexport { withColumnar } from './columnar/index.js';\r\nexport type { ColumnarModel } from './columnar/index.js';\r\n\r\nexport { withDatalog } from './datalog/index.js';\r\nexport type { DatalogModel } from './datalog/index.js';\r\n\r\nexport { withCDC } from './cdc/index.js';\r\nexport type { CDCModel } from './cdc/index.js';\r\n"]}
|
package/dist/kv/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kv/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kv/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\r\n// @neutron/nucleus/kv — KV model plugin\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\r\nimport { requireNucleus } from '../helpers.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Options\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface KVSetOptions {\r\n /** Time-to-live in seconds. */\r\n ttl?: number;\r\n /** Key namespace prefix (prepended as `namespace:key`). */\r\n namespace?: string;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// KVModel interface\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface KVModel {\r\n // -- Base ------------------------------------------------------------------\r\n\r\n /** Get a raw string value. Returns `null` if the key does not exist. */\r\n get(key: string): Promise<string | null>;\r\n\r\n /** Get a value and JSON-parse it into `T`. Returns `null` if missing. */\r\n getTyped<T>(key: string): Promise<T | null>;\r\n\r\n /** Set a raw string value. */\r\n set(key: string, value: string, opts?: KVSetOptions): Promise<void>;\r\n\r\n /** JSON-stringify `value` and store it. */\r\n setTyped<T>(key: string, value: T, opts?: KVSetOptions): Promise<void>;\r\n\r\n /** Set the key only if it does not already exist. Returns `true` if set. */\r\n setNX(key: string, value: string): Promise<boolean>;\r\n\r\n /** Delete a key. Returns `true` if it existed. */\r\n delete(key: string): Promise<boolean>;\r\n\r\n /** Check whether a key exists. */\r\n exists(key: string): Promise<boolean>;\r\n\r\n /** Atomically increment a key's integer value. Returns the new value. */\r\n incr(key: string, amount?: number): Promise<number>;\r\n\r\n /** Get the remaining TTL in seconds. -1 = no TTL, -2 = missing key. */\r\n ttl(key: string): Promise<number>;\r\n\r\n /** Set a TTL on an existing key. Returns `true` if the key existed. */\r\n expire(key: string, seconds: number): Promise<boolean>;\r\n\r\n /** Return the total number of keys. */\r\n dbSize(): Promise<number>;\r\n\r\n /** Delete all keys. */\r\n flushDB(): Promise<void>;\r\n\r\n /** Scan keys matching a pattern. Returns matching key-value pairs. */\r\n scan(pattern: string, count?: number): Promise<Array<{ key: string; value: string }>>;\r\n\r\n // -- Lists -----------------------------------------------------------------\r\n\r\n /** Prepend a value to a list. Returns the new list length. */\r\n lpush(key: string, value: string): Promise<number>;\r\n\r\n /** Append a value to a list. Returns the new list length. */\r\n rpush(key: string, value: string): Promise<number>;\r\n\r\n /** Remove and return the first element of a list. */\r\n lpop(key: string): Promise<string | null>;\r\n\r\n /** Remove and return the last element of a list. */\r\n rpop(key: string): Promise<string | null>;\r\n\r\n /** Return elements between `start` and `stop` (inclusive). */\r\n lrange(key: string, start: number, stop: number): Promise<string[]>;\r\n\r\n /** Return the length of a list. */\r\n llen(key: string): Promise<number>;\r\n\r\n /** Return the element at `index`. */\r\n lindex(key: string, index: number): Promise<string | null>;\r\n\r\n // -- Hashes ----------------------------------------------------------------\r\n\r\n /** Set a field in a hash. Returns `true` if the field is new. */\r\n hset(key: string, field: string, value: string): Promise<boolean>;\r\n\r\n /** Get a hash field value. */\r\n hget(key: string, field: string): Promise<string | null>;\r\n\r\n /** Remove a field from a hash. Returns `true` if removed. */\r\n hdel(key: string, field: string): Promise<boolean>;\r\n\r\n /** Check if a field exists in a hash. */\r\n hexists(key: string, field: string): Promise<boolean>;\r\n\r\n /** Return all fields and values of a hash. */\r\n hgetall(key: string): Promise<Record<string, string>>;\r\n\r\n /** Return the number of fields in a hash. */\r\n hlen(key: string): Promise<number>;\r\n\r\n // -- Sets ------------------------------------------------------------------\r\n\r\n /** Add a member to a set. Returns `true` if it was new. */\r\n sadd(key: string, member: string): Promise<boolean>;\r\n\r\n /** Remove a member from a set. Returns `true` if removed. */\r\n srem(key: string, member: string): Promise<boolean>;\r\n\r\n /** Return all members of a set. */\r\n smembers(key: string): Promise<string[]>;\r\n\r\n /** Check if a member exists in a set. */\r\n sismember(key: string, member: string): Promise<boolean>;\r\n\r\n /** Return the number of members in a set. */\r\n scard(key: string): Promise<number>;\r\n\r\n // -- Sorted Sets -----------------------------------------------------------\r\n\r\n /** Add a member with a score to a sorted set. Returns `true` if new. */\r\n zadd(key: string, score: number, member: string): Promise<boolean>;\r\n\r\n /** Return members by rank range. */\r\n zrange(key: string, start: number, stop: number): Promise<string[]>;\r\n\r\n /** Return members with scores between `min` and `max`. */\r\n zrangeByScore(key: string, min: number, max: number): Promise<string[]>;\r\n\r\n /** Remove a member from a sorted set. Returns `true` if removed. */\r\n zrem(key: string, member: string): Promise<boolean>;\r\n\r\n /** Return the number of members in a sorted set. */\r\n zcard(key: string): Promise<number>;\r\n\r\n // -- HyperLogLog -----------------------------------------------------------\r\n\r\n /** Add an element to a HyperLogLog. Returns `true` if the internal state changed. */\r\n pfadd(key: string, element: string): Promise<boolean>;\r\n\r\n /** Return the approximate cardinality. */\r\n pfcount(key: string): Promise<number>;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Implementation\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction resolveKey(key: string, namespace?: string): string {\r\n return namespace ? `${namespace}:${key}` : key;\r\n}\r\n\r\nclass KVModelImpl implements KVModel {\r\n constructor(\r\n private readonly transport: Transport,\r\n private readonly features: NucleusFeatures,\r\n ) {}\r\n\r\n private require(): void {\r\n requireNucleus(this.features, 'KV');\r\n }\r\n\r\n // -- Base ------------------------------------------------------------------\r\n\r\n async get(key: string): Promise<string | null> {\r\n this.require();\r\n return this.transport.fetchval<string>('SELECT KV_GET($1)', [key]);\r\n }\r\n\r\n async getTyped<T>(key: string): Promise<T | null> {\r\n const raw = await this.get(key);\r\n if (raw === null) return null;\r\n return JSON.parse(raw) as T;\r\n }\r\n\r\n async set(key: string, value: string, opts?: KVSetOptions): Promise<void> {\r\n this.require();\r\n const k = resolveKey(key, opts?.namespace);\r\n if (opts?.ttl !== undefined) {\r\n await this.transport.execute('SELECT KV_SET($1, $2, $3)', [k, value, opts.ttl]);\r\n } else {\r\n await this.transport.execute('SELECT KV_SET($1, $2)', [k, value]);\r\n }\r\n }\r\n\r\n async setTyped<T>(key: string, value: T, opts?: KVSetOptions): Promise<void> {\r\n await this.set(key, JSON.stringify(value), opts);\r\n }\r\n\r\n async setNX(key: string, value: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_SETNX($1, $2)', [key, value])) ?? false;\r\n }\r\n\r\n async delete(key: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_DEL($1)', [key])) ?? false;\r\n }\r\n\r\n async exists(key: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_EXISTS($1)', [key])) ?? false;\r\n }\r\n\r\n async incr(key: string, amount?: number): Promise<number> {\r\n this.require();\r\n if (amount !== undefined) {\r\n return (await this.transport.fetchval<number>('SELECT KV_INCR($1, $2)', [key, amount])) ?? 0;\r\n }\r\n return (await this.transport.fetchval<number>('SELECT KV_INCR($1)', [key])) ?? 0;\r\n }\r\n\r\n async ttl(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_TTL($1)', [key])) ?? -2;\r\n }\r\n\r\n async expire(key: string, seconds: number): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_EXPIRE($1, $2)', [key, seconds])) ?? false;\r\n }\r\n\r\n async dbSize(): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_DBSIZE()')) ?? 0;\r\n }\r\n\r\n async flushDB(): Promise<void> {\r\n this.require();\r\n await this.transport.execute('SELECT KV_FLUSHDB()');\r\n }\r\n\r\n async scan(pattern: string, count = 100): Promise<Array<{ key: string; value: string }>> {\r\n this.require();\r\n const result = await this.transport.query<{ key: string; value: string }>(\r\n 'SELECT KV_SCAN($1, $2)',\r\n [pattern, count],\r\n );\r\n return result.rows;\r\n }\r\n\r\n // -- Lists -----------------------------------------------------------------\r\n\r\n async lpush(key: string, value: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_LPUSH($1, $2)', [key, value])) ?? 0;\r\n }\r\n\r\n async rpush(key: string, value: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_RPUSH($1, $2)', [key, value])) ?? 0;\r\n }\r\n\r\n async lpop(key: string): Promise<string | null> {\r\n this.require();\r\n return this.transport.fetchval<string>('SELECT KV_LPOP($1)', [key]);\r\n }\r\n\r\n async rpop(key: string): Promise<string | null> {\r\n this.require();\r\n return this.transport.fetchval<string>('SELECT KV_RPOP($1)', [key]);\r\n }\r\n\r\n async lrange(key: string, start: number, stop: number): Promise<string[]> {\r\n this.require();\r\n const raw = await this.transport.fetchval<string>('SELECT KV_LRANGE($1, $2, $3)', [key, start, stop]);\r\n if (!raw) return [];\r\n return raw.split(',');\r\n }\r\n\r\n async llen(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_LLEN($1)', [key])) ?? 0;\r\n }\r\n\r\n async lindex(key: string, index: number): Promise<string | null> {\r\n this.require();\r\n return this.transport.fetchval<string>('SELECT KV_LINDEX($1, $2)', [key, index]);\r\n }\r\n\r\n // -- Hashes ----------------------------------------------------------------\r\n\r\n async hset(key: string, field: string, value: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_HSET($1, $2, $3)', [key, field, value])) ?? false;\r\n }\r\n\r\n async hget(key: string, field: string): Promise<string | null> {\r\n this.require();\r\n return this.transport.fetchval<string>('SELECT KV_HGET($1, $2)', [key, field]);\r\n }\r\n\r\n async hdel(key: string, field: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_HDEL($1, $2)', [key, field])) ?? false;\r\n }\r\n\r\n async hexists(key: string, field: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_HEXISTS($1, $2)', [key, field])) ?? false;\r\n }\r\n\r\n async hgetall(key: string): Promise<Record<string, string>> {\r\n this.require();\r\n const raw = await this.transport.fetchval<string>('SELECT KV_HGETALL($1)', [key]);\r\n if (!raw) return {};\r\n const result: Record<string, string> = {};\r\n for (const pair of raw.split(',')) {\r\n const eqIdx = pair.indexOf('=');\r\n if (eqIdx !== -1) {\r\n result[pair.slice(0, eqIdx)] = pair.slice(eqIdx + 1);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async hlen(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_HLEN($1)', [key])) ?? 0;\r\n }\r\n\r\n // -- Sets ------------------------------------------------------------------\r\n\r\n async sadd(key: string, member: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_SADD($1, $2)', [key, member])) ?? false;\r\n }\r\n\r\n async srem(key: string, member: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_SREM($1, $2)', [key, member])) ?? false;\r\n }\r\n\r\n async smembers(key: string): Promise<string[]> {\r\n this.require();\r\n const raw = await this.transport.fetchval<string>('SELECT KV_SMEMBERS($1)', [key]);\r\n if (!raw) return [];\r\n return raw.split(',');\r\n }\r\n\r\n async sismember(key: string, member: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_SISMEMBER($1, $2)', [key, member])) ?? false;\r\n }\r\n\r\n async scard(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_SCARD($1)', [key])) ?? 0;\r\n }\r\n\r\n // -- Sorted Sets -----------------------------------------------------------\r\n\r\n async zadd(key: string, score: number, member: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_ZADD($1, $2, $3)', [key, score, member])) ?? false;\r\n }\r\n\r\n async zrange(key: string, start: number, stop: number): Promise<string[]> {\r\n this.require();\r\n const raw = await this.transport.fetchval<string>('SELECT KV_ZRANGE($1, $2, $3)', [key, start, stop]);\r\n if (!raw) return [];\r\n return raw.split(',');\r\n }\r\n\r\n async zrangeByScore(key: string, min: number, max: number): Promise<string[]> {\r\n this.require();\r\n const raw = await this.transport.fetchval<string>('SELECT KV_ZRANGEBYSCORE($1, $2, $3)', [key, min, max]);\r\n if (!raw) return [];\r\n return raw.split(',');\r\n }\r\n\r\n async zrem(key: string, member: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_ZREM($1, $2)', [key, member])) ?? false;\r\n }\r\n\r\n async zcard(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_ZCARD($1)', [key])) ?? 0;\r\n }\r\n\r\n // -- HyperLogLog -----------------------------------------------------------\r\n\r\n async pfadd(key: string, element: string): Promise<boolean> {\r\n this.require();\r\n return (await this.transport.fetchval<boolean>('SELECT KV_PFADD($1, $2)', [key, element])) ?? false;\r\n }\r\n\r\n async pfcount(key: string): Promise<number> {\r\n this.require();\r\n return (await this.transport.fetchval<number>('SELECT KV_PFCOUNT($1)', [key])) ?? 0;\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Plugin\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Plugin: adds `.kv` to the client. */\r\nexport const withKV: NucleusPlugin<{ kv: KVModel }> = {\r\n name: 'kv',\r\n init(transport: Transport, features: NucleusFeatures) {\r\n return { kv: new KVModelImpl(transport, features) };\r\n },\r\n};\r\n"]}
|
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — migration system\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport } from './types.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\n/** A single migration definition. */\r\nexport interface Migration {\r\n /** Monotonically increasing version number. */\r\n version: number;\r\n /** Human-readable name. */\r\n name: string;\r\n /** SQL to apply the migration. */\r\n up: string;\r\n /** SQL to revert the migration (optional). */\r\n down?: string;\r\n}\r\n\r\n/** A migration that has already been applied. */\r\nexport interface MigrationRecord {\r\n version: number;\r\n name: string;\r\n appliedAt: Date;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Internal helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nconst MIGRATIONS_TABLE_SQL = `\r\nCREATE TABLE IF NOT EXISTS _neutron_migrations (\r\n version INTEGER PRIMARY KEY,\r\n name TEXT NOT NULL,\r\n applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()\r\n)`;\r\n\r\nasync function ensureTable(transport: Transport): Promise<void> {\r\n await transport.execute(MIGRATIONS_TABLE_SQL);\r\n}\r\n\r\nasync function appliedVersions(transport: Transport): Promise<Set<number>> {\r\n await ensureTable(transport);\r\n const result = await transport.query<{ version: number }>('SELECT version FROM _neutron_migrations');\r\n return new Set(result.rows.map((r) => r.version));\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public API\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Run all pending migrations in ascending version order.\r\n *\r\n * Each migration runs inside its own transaction. Returns the names of the\r\n * migrations that were applied.\r\n */\r\nexport async function migrate(transport: Transport, migrations: Migration[]): Promise<string[]> {\r\n const applied = await appliedVersions(transport);\r\n const sorted = [...migrations].sort((a, b) => a.version - b.version);\r\n const ran: string[] = [];\r\n\r\n for (const m of sorted) {\r\n if (applied.has(m.version)) continue;\r\n\r\n const tx = await transport.beginTransaction();\r\n try {\r\n await tx.execute(m.up);\r\n await tx.execute(\r\n 'INSERT INTO _neutron_migrations (version, name) VALUES ($1, $2)',\r\n [m.version, m.name],\r\n );\r\n await tx.commit();\r\n ran.push(m.name);\r\n } catch (err) {\r\n await tx.rollback();\r\n throw err;\r\n }\r\n }\r\n\r\n return ran;\r\n}\r\n\r\n/**\r\n * Roll back the most recently applied migrations.\r\n *\r\n * @param steps Number of migrations to roll back (default 1).\r\n * @returns Names of the migrations that were rolled back.\r\n */\r\nexport async function migrateDown(\r\n transport: Transport,\r\n migrations: Migration[],\r\n steps = 1,\r\n): Promise<string[]> {\r\n const applied = await appliedVersions(transport);\r\n const sorted = [...migrations].sort((a, b) => b.version - a.version); // descending\r\n const rolled: string[] = [];\r\n\r\n for (const m of sorted) {\r\n if (rolled.length >= steps) break;\r\n if (!applied.has(m.version)) continue;\r\n if (!m.down) {\r\n throw new Error(`Migration ${m.version} (${m.name}) has no down SQL`);\r\n }\r\n\r\n const tx = await transport.beginTransaction();\r\n try {\r\n await tx.execute(m.down);\r\n await tx.execute('DELETE FROM _neutron_migrations WHERE version = $1', [m.version]);\r\n await tx.commit();\r\n rolled.push(m.name);\r\n } catch (err) {\r\n await tx.rollback();\r\n throw err;\r\n }\r\n }\r\n\r\n return rolled;\r\n}\r\n\r\n/**\r\n * Return all previously applied migrations, ordered by version ascending.\r\n */\r\nexport async function migrationStatus(transport: Transport): Promise<MigrationRecord[]> {\r\n await ensureTable(transport);\r\n const result = await transport.query<{ version: number; name: string; applied_at: string }>(\r\n 'SELECT version, name, applied_at FROM _neutron_migrations ORDER BY version',\r\n );\r\n return result.rows.map((r) => ({\r\n version: r.version,\r\n name: r.name,\r\n appliedAt: new Date(r.applied_at),\r\n }));\r\n}\r\n"]}
|
package/dist/pubsub/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pubsub/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiB/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,eAAe;IAEA;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAe;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,4BAA4B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClG,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAA2C;IAChE,IAAI,EAAE,QAAQ;IACd,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC9D,CAAC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pubsub/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAiB/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,eAAe;IAEA;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAe;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,4BAA4B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,+BAA+B,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClG,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAA2C;IAChE,IAAI,EAAE,QAAQ;IACd,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC9D,CAAC;CACF,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/pubsub — PubSub model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// PubSubModel interface\n// ---------------------------------------------------------------------------\n\nexport interface PubSubModel {\n /** Publish a message on a channel. Returns the number of subscribers reached. */\n publish(channel: string, message: string): Promise<number>;\n\n /** Return active channels matching an optional pattern (empty = all). */\n channels(pattern?: string): Promise<string>;\n\n /** Return the number of subscribers on a channel. */\n subscribers(channel: string): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass PubSubModelImpl implements PubSubModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'PubSub');\n }\n\n async publish(channel: string, message: string): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT PUBSUB_PUBLISH($1, $2)', [channel, message])) ?? 0;\n }\n\n async channels(pattern?: string): Promise<string> {\n this.require();\n if (pattern) {\n return (await this.transport.fetchval<string>('SELECT PUBSUB_CHANNELS($1)', [pattern])) ?? '';\n }\n return (await this.transport.fetchval<string>('SELECT PUBSUB_CHANNELS()')) ?? '';\n }\n\n async subscribers(channel: string): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT PUBSUB_SUBSCRIBERS($1)', [channel])) ?? 0;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.pubsub` to the client. */\nexport const withPubSub: NucleusPlugin<{ pubsub: PubSubModel }> = {\n name: 'pubsub',\n init(transport: Transport, features: NucleusFeatures) {\n return { pubsub: new PubSubModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/sql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\r\n// @neutron/nucleus/sql — SQL model plugin\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport, NucleusPlugin, NucleusFeatures, IsolationLevel } from '../types.js';\r\nimport { NucleusNotFoundError } from '../errors.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// SQLModel interface\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface SQLModel {\r\n /** Query rows into typed results. */\r\n query<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T[]>;\r\n\r\n /** Query exactly one row. Throws `NucleusNotFoundError` if none. */\r\n queryOne<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T>;\r\n\r\n /** Query one row, or `null` if none. */\r\n queryOneOrNull<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T | null>;\r\n\r\n /** Execute a DML statement and return the affected row count. */\r\n execute(sql: string, ...params: unknown[]): Promise<number>;\r\n\r\n /** Execute many statements in batch and return each affected-row count. */\r\n executeBatch(statements: Array<{ sql: string; params?: unknown[] }>): Promise<number[]>;\r\n\r\n /** Fetch a single scalar value from the first column of the first row. */\r\n fetchval<T = unknown>(sql: string, ...params: unknown[]): Promise<T | null>;\r\n\r\n /**\r\n * Run `fn` inside a transaction. Commits on success, rolls back on error.\r\n * The callback receives a scoped `SQLModel` whose operations all execute\r\n * within the same transaction.\r\n */\r\n transaction<T>(fn: (tx: SQLModel) => Promise<T>, opts?: { isolationLevel?: IsolationLevel }): Promise<T>;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Implementation\r\n// ---------------------------------------------------------------------------\r\n\r\nclass SQLModelImpl implements SQLModel {\r\n constructor(private readonly transport: Transport) {}\r\n\r\n async query<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T[]> {\r\n const result = await this.transport.query<T>(sql, params);\r\n return result.rows;\r\n }\r\n\r\n async queryOne<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T> {\r\n const rows = await this.query<T>(sql, ...params);\r\n if (rows.length === 0) {\r\n throw new NucleusNotFoundError('Expected one row but found none');\r\n }\r\n return rows[0];\r\n }\r\n\r\n async queryOneOrNull<T = Record<string, unknown>>(sql: string, ...params: unknown[]): Promise<T | null> {\r\n const rows = await this.query<T>(sql, ...params);\r\n return rows.length > 0 ? rows[0] : null;\r\n }\r\n\r\n async execute(sql: string, ...params: unknown[]): Promise<number> {\r\n return this.transport.execute(sql, params);\r\n }\r\n\r\n async executeBatch(statements: Array<{ sql: string; params?: unknown[] }>): Promise<number[]> {\r\n const results: number[] = [];\r\n for (const stmt of statements) {\r\n results.push(await this.transport.execute(stmt.sql, stmt.params));\r\n }\r\n return results;\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, ...params: unknown[]): Promise<T | null> {\r\n return this.transport.fetchval<T>(sql, params);\r\n }\r\n\r\n async transaction<T>(\r\n fn: (tx: SQLModel) => Promise<T>,\r\n opts?: { isolationLevel?: IsolationLevel },\r\n ): Promise<T> {\r\n const txTransport = await this.transport.beginTransaction(opts?.isolationLevel);\r\n const txSql = new SQLModelImpl(txTransport);\r\n try {\r\n const result = await fn(txSql);\r\n await txTransport.commit();\r\n return result;\r\n } catch (err) {\r\n await txTransport.rollback();\r\n throw err;\r\n }\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Plugin\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Plugin: adds `.sql` to the client. */\r\nexport const withSQL: NucleusPlugin<{ sql: SQLModel }> = {\r\n name: 'sql',\r\n init(transport: Transport, _features: NucleusFeatures) {\r\n return { sql: new SQLModelImpl(transport) };\r\n },\r\n};\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/streams — Streams model plugin (Redis Streams-compatible)\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface StreamEntry {\n id: string;\n fields: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// StreamsModel interface\n// ---------------------------------------------------------------------------\n\nexport interface StreamsModel {\n /** Append an entry to a stream. Returns the generated entry ID. */\n xadd(stream: string, fields: Record<string, unknown>): Promise<string>;\n\n /** Return the number of entries in a stream. */\n xlen(stream: string): Promise<number>;\n\n /** Return entries between `startMs` and `endMs` timestamps (inclusive). */\n xrange(stream: string, startMs: number, endMs: number, count: number): Promise<StreamEntry[]>;\n\n /** Read new entries after `lastIdMs`. */\n xread(stream: string, lastIdMs: number, count: number): Promise<StreamEntry[]>;\n\n /** Create a consumer group on a stream. */\n xgroupCreate(stream: string, group: string, startId: number): Promise<boolean>;\n\n /** Read entries from a consumer group. */\n xreadGroup(stream: string, group: string, consumer: string, count: number): Promise<StreamEntry[]>;\n\n /** Acknowledge processing of an entry in a consumer group. */\n xack(stream: string, group: string, idMs: number, idSeq: number): Promise<boolean>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass StreamsModelImpl implements StreamsModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Streams');\n }\n\n async xadd(stream: string, fields: Record<string, unknown>): Promise<string> {\n this.require();\n // Build variadic args: stream, k1, v1, k2, v2, ...\n const args: unknown[] = [stream];\n for (const [k, v] of Object.entries(fields)) {\n args.push(k, v);\n }\n const placeholders = args.map((_, i) => `$${i + 1}`).join(', ');\n const sql = `SELECT STREAM_XADD(${placeholders})`;\n return (await this.transport.fetchval<string>(sql, args)) ?? '';\n }\n\n async xlen(stream: string): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT STREAM_XLEN($1)', [stream])) ?? 0;\n }\n\n async xrange(stream: string, startMs: number, endMs: number, count: number): Promise<StreamEntry[]> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT STREAM_XRANGE($1, $2, $3, $4)', [\n stream, startMs, endMs, count,\n ]);\n if (!raw) return [];\n return JSON.parse(raw) as StreamEntry[];\n }\n\n async xread(stream: string, lastIdMs: number, count: number): Promise<StreamEntry[]> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT STREAM_XREAD($1, $2, $3)', [\n stream, lastIdMs, count,\n ]);\n if (!raw) return [];\n return JSON.parse(raw) as StreamEntry[];\n }\n\n async xgroupCreate(stream: string, group: string, startId: number): Promise<boolean> {\n this.require();\n return (\n (await this.transport.fetchval<boolean>('SELECT STREAM_XGROUP_CREATE($1, $2, $3)', [\n stream, group, startId,\n ])) ?? false\n );\n }\n\n async xreadGroup(stream: string, group: string, consumer: string, count: number): Promise<StreamEntry[]> {\n this.require();\n const raw = await this.transport.fetchval<string>('SELECT STREAM_XREADGROUP($1, $2, $3, $4)', [\n stream, group, consumer, count,\n ]);\n if (!raw) return [];\n return JSON.parse(raw) as StreamEntry[];\n }\n\n async xack(stream: string, group: string, idMs: number, idSeq: number): Promise<boolean> {\n this.require();\n return (\n (await this.transport.fetchval<boolean>('SELECT STREAM_XACK($1, $2, $3, $4)', [\n stream, group, idMs, idSeq,\n ])) ?? false\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.streams` to the client. */\nexport const withStreams: NucleusPlugin<{ streams: StreamsModel }> = {\n name: 'streams',\n init(transport: Transport, features: NucleusFeatures) {\n return { streams: new StreamsModelImpl(transport, features) };\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timeseries/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timeseries/index.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/timeseries — Time-Series model plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface TimeSeriesPoint {\n timestamp: Date;\n value: number;\n tags?: Record<string, string>;\n}\n\nexport type AggFunc = 'sum' | 'avg' | 'min' | 'max' | 'count' | 'first' | 'last';\n\nexport type BucketInterval = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month';\n\nexport interface TimeSeriesQueryOptions {\n /** Filter by tags. */\n tags?: Record<string, string>;\n /** Downsample into buckets. */\n downsample?: {\n /** Bucket interval name. */\n interval: BucketInterval;\n /** Aggregation function. */\n fn: AggFunc;\n };\n}\n\n// ---------------------------------------------------------------------------\n// TimeSeriesModel interface\n// ---------------------------------------------------------------------------\n\nexport interface TimeSeriesModel {\n /** Write data points to a measurement (series). */\n write(measurement: string, points: TimeSeriesPoint[]): Promise<void>;\n\n /** Return the most recent value for a series. */\n last(measurement: string): Promise<number | null>;\n\n /** Return the total number of data points. */\n count(measurement: string): Promise<number>;\n\n /** Count data points in a time range. */\n rangeCount(measurement: string, from: Date, to: Date): Promise<number>;\n\n /** Average value in a time range. */\n rangeAvg(measurement: string, from: Date, to: Date): Promise<number | null>;\n\n /** Set the data retention period (in days). */\n retention(measurement: string, days: number): Promise<boolean>;\n\n /** Match series names against a pattern. */\n match(measurement: string, pattern: string): Promise<string>;\n\n /** Truncate a timestamp to a bucket boundary. */\n timeBucket(interval: BucketInterval, timestamp: Date): Promise<number>;\n\n /** Query raw data points in a time range. */\n query(measurement: string, from: Date, to: Date, opts?: TimeSeriesQueryOptions): Promise<TimeSeriesPoint[]>;\n\n /** Aggregate data points into time buckets. */\n aggregate(\n measurement: string,\n from: Date,\n to: Date,\n interval: BucketInterval,\n fn: AggFunc,\n ): Promise<TimeSeriesPoint[]>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass TimeSeriesModelImpl implements TimeSeriesModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'TimeSeries');\n }\n\n async write(measurement: string, points: TimeSeriesPoint[]): Promise<void> {\n this.require();\n for (const p of points) {\n const tsMs = p.timestamp.getTime();\n await this.transport.execute('SELECT TS_INSERT($1, $2, $3)', [measurement, tsMs, p.value]);\n }\n }\n\n async last(measurement: string): Promise<number | null> {\n this.require();\n return this.transport.fetchval<number>('SELECT TS_LAST($1)', [measurement]);\n }\n\n async count(measurement: string): Promise<number> {\n this.require();\n return (await this.transport.fetchval<number>('SELECT TS_COUNT($1)', [measurement])) ?? 0;\n }\n\n async rangeCount(measurement: string, from: Date, to: Date): Promise<number> {\n this.require();\n return (\n (await this.transport.fetchval<number>('SELECT TS_RANGE_COUNT($1, $2, $3)', [\n measurement, from.getTime(), to.getTime(),\n ])) ?? 0\n );\n }\n\n async rangeAvg(measurement: string, from: Date, to: Date): Promise<number | null> {\n this.require();\n return this.transport.fetchval<number>('SELECT TS_RANGE_AVG($1, $2, $3)', [\n measurement, from.getTime(), to.getTime(),\n ]);\n }\n\n async retention(measurement: string, days: number): Promise<boolean> {\n this.require();\n return (await this.transport.fetchval<boolean>('SELECT TS_RETENTION($1, $2)', [measurement, days])) ?? false;\n }\n\n async match(measurement: string, pattern: string): Promise<string> {\n this.require();\n return (await this.transport.fetchval<string>('SELECT TS_MATCH($1, $2)', [measurement, pattern])) ?? '';\n }\n\n async timeBucket(interval: BucketInterval, timestamp: Date): Promise<number> {\n this.require();\n return (\n (await this.transport.fetchval<number>('SELECT TIME_BUCKET($1, $2)', [interval, timestamp.getTime()])) ?? 0\n );\n }\n\n async query(\n measurement: string,\n from: Date,\n to: Date,\n opts: TimeSeriesQueryOptions = {},\n ): Promise<TimeSeriesPoint[]> {\n this.require();\n\n // Delegate to aggregate if downsample is requested\n if (opts.downsample) {\n return this.aggregate(measurement, from, to, opts.downsample.interval, opts.downsample.fn);\n }\n\n const fromMs = from.getTime();\n const toMs = to.getTime();\n\n let sql: string;\n let params: unknown[];\n\n if (opts.tags && Object.keys(opts.tags).length > 0) {\n const tagsJson = JSON.stringify(opts.tags);\n sql =\n `SELECT COALESCE((SELECT json_agg(row_to_json(t)) FROM (` +\n `SELECT timestamp_ms, value FROM ts_data WHERE series = $1 AND timestamp_ms >= $2 AND timestamp_ms <= $3 AND tags @> $4::jsonb ORDER BY timestamp_ms` +\n `) t), '[]')`;\n params = [measurement, fromMs, toMs, tagsJson];\n } else {\n sql =\n `SELECT COALESCE((SELECT json_agg(row_to_json(t)) FROM (` +\n `SELECT timestamp_ms, value FROM ts_data WHERE series = $1 AND timestamp_ms >= $2 AND timestamp_ms <= $3 ORDER BY timestamp_ms` +\n `) t), '[]')`;\n params = [measurement, fromMs, toMs];\n }\n\n const raw = await this.transport.fetchval<string>(sql, params);\n if (!raw) return [];\n\n const points = JSON.parse(raw) as Array<{ timestamp_ms: number; value: number }>;\n return points.map((p) => ({\n timestamp: new Date(p.timestamp_ms),\n value: p.value,\n }));\n }\n\n async aggregate(\n measurement: string,\n from: Date,\n to: Date,\n interval: BucketInterval,\n fn: AggFunc,\n ): Promise<TimeSeriesPoint[]> {\n this.require();\n\n const VALID_AGG_FUNCS = ['sum', 'avg', 'min', 'max', 'count', 'first', 'last'] as const;\n if (!VALID_AGG_FUNCS.includes(fn)) {\n throw new Error(`Invalid aggregation function: ${fn}. Must be one of: ${VALID_AGG_FUNCS.join(', ')}`);\n }\n\n const sql =\n `SELECT COALESCE((SELECT json_agg(row_to_json(t)) FROM (` +\n `SELECT TIME_BUCKET($1, timestamp_ms) AS bucket_ms, ${fn}(value) AS value ` +\n `FROM ts_data WHERE series = $2 AND timestamp_ms >= $3 AND timestamp_ms <= $4 ` +\n `GROUP BY bucket_ms ORDER BY bucket_ms` +\n `) t), '[]')`;\n\n const raw = await this.transport.fetchval<string>(sql, [interval, measurement, from.getTime(), to.getTime()]);\n if (!raw) return [];\n\n const points = JSON.parse(raw) as Array<{ bucket_ms: number; value: number }>;\n return points.map((p) => ({\n timestamp: new Date(p.bucket_ms),\n value: p.value,\n }));\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.timeseries` to the client. */\nexport const withTimeSeries: NucleusPlugin<{ timeseries: TimeSeriesModel }> = {\n name: 'timeseries',\n init(transport: Transport, features: NucleusFeatures) {\n return { timeseries: new TimeSeriesModelImpl(transport, features) };\n },\n};\n"]}
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — transport implementations\r\n// ---------------------------------------------------------------------------\r\n\r\nimport type { Transport, TransactionTransport, QueryResult, IsolationLevel } from './types.js';\r\nimport {\r\n NucleusAuthError,\r\n NucleusConflictError,\r\n NucleusConnectionError,\r\n NucleusNotFoundError,\r\n NucleusQueryError,\r\n NucleusTransactionError,\r\n} from './errors.js';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Transport configuration types\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Configuration for the base HTTP transport. */\r\nexport interface TransportConfig {\r\n /** Base URL of the Nucleus server. */\r\n url: string;\r\n /** Extra HTTP headers sent with every request. */\r\n headers?: Record<string, string>;\r\n /** Request timeout in milliseconds (default 30000). */\r\n timeout?: number;\r\n}\r\n\r\n/** Extended configuration for mobile transport with retry, cache, and offline queue. */\r\nexport interface MobileTransportConfig extends TransportConfig {\r\n /** Maximum number of retry attempts for failed requests (default 3). */\r\n maxRetries?: number;\r\n /** Base delay in ms between retries — uses exponential backoff (default 1000). */\r\n retryDelay?: number;\r\n /** Whether to cache SELECT query results (default true). */\r\n cacheEnabled?: boolean;\r\n /** Time-to-live for cached entries in ms (default 60000). */\r\n cacheTTL?: number;\r\n /** Whether to queue writes when the device is offline (default true). */\r\n offlineQueueEnabled?: boolean;\r\n /** Maximum number of queued offline operations (default 100). */\r\n maxQueueSize?: number;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// URL sanitization\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction sanitizeUrl(url: string): string {\r\n try {\r\n const parsed = new URL(url);\r\n if (parsed.username || parsed.password) {\r\n parsed.username = '***';\r\n parsed.password = '***';\r\n }\r\n return parsed.toString();\r\n } catch {\r\n return url.replace(/\\/\\/[^@]+@/, '//***:***@');\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// HTTP helpers\r\n// ---------------------------------------------------------------------------\r\n\r\ninterface ApiResponse<T = unknown> {\r\n ok: boolean;\r\n data?: T;\r\n error?: string;\r\n rowCount?: number;\r\n affected?: number;\r\n}\r\n\r\nasync function request<T>(\r\n url: string,\r\n body: unknown,\r\n headers: Record<string, string>,\r\n timeout?: number,\r\n): Promise<ApiResponse<T>> {\r\n let res: Response;\r\n const controller = timeout != null ? new AbortController() : undefined;\r\n const timer = controller ? setTimeout(() => controller.abort(), timeout) : undefined;\r\n\r\n try {\r\n res = await fetch(url, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', ...headers },\r\n body: JSON.stringify(body),\r\n signal: controller?.signal,\r\n keepalive: true,\r\n });\r\n } catch (err) {\r\n throw new NucleusConnectionError('Failed to reach Nucleus server', {\r\n cause: err instanceof Error ? err : undefined,\r\n meta: { url: sanitizeUrl(url) },\r\n });\r\n } finally {\r\n if (timer != null) clearTimeout(timer);\r\n }\r\n\r\n if (!res.ok) {\r\n const text = await res.text().catch(() => '');\r\n mapHttpError(res.status, text, url);\r\n }\r\n\r\n return (await res.json()) as ApiResponse<T>;\r\n}\r\n\r\nfunction mapHttpError(status: number, body: string, url: string): never {\r\n const meta = { status, url: sanitizeUrl(url) };\r\n switch (status) {\r\n case 401:\r\n case 403:\r\n throw new NucleusAuthError(body || 'Authentication failed', { meta });\r\n case 404:\r\n throw new NucleusNotFoundError(body || 'Resource not found', { meta });\r\n case 409:\r\n throw new NucleusConflictError(body || 'Conflict', { meta });\r\n default:\r\n throw new NucleusQueryError(body || `HTTP ${status}`, { meta });\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// HttpTransport\r\n// ---------------------------------------------------------------------------\r\n\r\nexport class HttpTransport implements Transport {\r\n private readonly baseUrl: string;\r\n private readonly headers: Record<string, string>;\r\n private readonly timeout: number | undefined;\r\n\r\n constructor(url: string, headers: Record<string, string> = {}, timeout?: number) {\r\n // Strip trailing slash for consistent URL building\r\n this.baseUrl = url.replace(/\\/+$/, '');\r\n this.headers = headers;\r\n this.timeout = timeout;\r\n\r\n // Warn about insecure connections\r\n if (this.baseUrl.startsWith('http://') && typeof process !== 'undefined' && process.env.NODE_ENV === 'production') {\r\n console.warn('[neutron-nucleus] WARNING: Using unencrypted HTTP connection. Use HTTPS in production.');\r\n }\r\n }\r\n\r\n async query<T = Record<string, unknown>>(sql: string, params: unknown[] = []): Promise<QueryResult<T>> {\r\n const res = await request<T[]>(`${this.baseUrl}/api/query`, { sql, params }, this.headers, this.timeout);\r\n const rows = (res.data ?? []) as T[];\r\n return { rows, rowCount: res.rowCount ?? rows.length };\r\n }\r\n\r\n async execute(sql: string, params: unknown[] = []): Promise<number> {\r\n const res = await request<void>(`${this.baseUrl}/api/execute`, { sql, params }, this.headers, this.timeout);\r\n return res.affected ?? 0;\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, params: unknown[] = []): Promise<T | null> {\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n if (result.rows.length === 0) return null;\r\n const first = result.rows[0];\r\n const keys = Object.keys(first);\r\n if (keys.length === 0) return null;\r\n return first[keys[0]] as T;\r\n }\r\n\r\n async beginTransaction(isolationLevel?: IsolationLevel): Promise<TransactionTransport> {\r\n const res = await request<{ txId: string }>(\r\n `${this.baseUrl}/api/transaction/begin`,\r\n { isolationLevel },\r\n this.headers,\r\n this.timeout,\r\n );\r\n const txId = res.data?.txId;\r\n if (!txId) {\r\n throw new NucleusTransactionError('Server did not return a transaction ID');\r\n }\r\n return new HttpTransactionTransport(this.baseUrl, this.headers, txId, this.timeout);\r\n }\r\n\r\n async close(): Promise<void> {\r\n // HTTP is stateless — nothing to close.\r\n }\r\n\r\n async ping(): Promise<void> {\r\n await request<void>(`${this.baseUrl}/api/query`, { sql: 'SELECT 1', params: [] }, this.headers, this.timeout);\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// HttpTransactionTransport\r\n// ---------------------------------------------------------------------------\r\n\r\nclass HttpTransactionTransport implements TransactionTransport {\r\n private readonly baseUrl: string;\r\n private readonly headers: Record<string, string>;\r\n private readonly txId: string;\r\n private readonly timeout: number | undefined;\r\n private finished = false;\r\n\r\n constructor(baseUrl: string, headers: Record<string, string>, txId: string, timeout?: number) {\r\n this.baseUrl = baseUrl;\r\n this.headers = { ...headers, 'X-Nucleus-TxId': txId };\r\n this.txId = txId;\r\n this.timeout = timeout;\r\n }\r\n\r\n private assertOpen(): void {\r\n if (this.finished) {\r\n throw new NucleusTransactionError('Transaction has already been committed or rolled back');\r\n }\r\n }\r\n\r\n async query<T = Record<string, unknown>>(sql: string, params: unknown[] = []): Promise<QueryResult<T>> {\r\n this.assertOpen();\r\n const res = await request<T[]>(\r\n `${this.baseUrl}/api/query`,\r\n { sql, params, txId: this.txId },\r\n this.headers,\r\n this.timeout,\r\n );\r\n const rows = (res.data ?? []) as T[];\r\n return { rows, rowCount: res.rowCount ?? rows.length };\r\n }\r\n\r\n async execute(sql: string, params: unknown[] = []): Promise<number> {\r\n this.assertOpen();\r\n const res = await request<void>(\r\n `${this.baseUrl}/api/execute`,\r\n { sql, params, txId: this.txId },\r\n this.headers,\r\n this.timeout,\r\n );\r\n return res.affected ?? 0;\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, params: unknown[] = []): Promise<T | null> {\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n if (result.rows.length === 0) return null;\r\n const first = result.rows[0];\r\n const keys = Object.keys(first);\r\n if (keys.length === 0) return null;\r\n return first[keys[0]] as T;\r\n }\r\n\r\n async beginTransaction(_isolationLevel?: IsolationLevel): Promise<TransactionTransport> {\r\n throw new NucleusTransactionError('Nested transactions are not supported');\r\n }\r\n\r\n async commit(): Promise<void> {\r\n this.assertOpen();\r\n await request<void>(\r\n `${this.baseUrl}/api/transaction/commit`,\r\n { txId: this.txId },\r\n this.headers,\r\n this.timeout,\r\n );\r\n this.finished = true;\r\n }\r\n\r\n async rollback(): Promise<void> {\r\n this.assertOpen();\r\n await request<void>(\r\n `${this.baseUrl}/api/transaction/rollback`,\r\n { txId: this.txId },\r\n this.headers,\r\n this.timeout,\r\n );\r\n this.finished = true;\r\n }\r\n\r\n async close(): Promise<void> {\r\n if (!this.finished) {\r\n await this.rollback();\r\n }\r\n }\r\n\r\n async ping(): Promise<void> {\r\n this.assertOpen();\r\n await this.query('SELECT 1');\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// MobileTransport — retry, caching, offline queue\r\n// ---------------------------------------------------------------------------\r\n\r\ninterface QueuedWrite {\r\n resolve: (value: number) => void;\r\n reject: (reason: unknown) => void;\r\n sql: string;\r\n params: unknown[];\r\n}\r\n\r\n/**\r\n * Transport for mobile (React Native) environments.\r\n *\r\n * Wraps `HttpTransport` and adds:\r\n * - Automatic retry with exponential backoff for transient failures\r\n * - In-memory cache for SELECT queries\r\n * - Offline write queue that flushes when connectivity is restored\r\n */\r\nexport class MobileTransport implements Transport {\r\n private readonly http: HttpTransport;\r\n private readonly cache: Map<string, { data: unknown; timestamp: number }>;\r\n private readonly cacheTTL: number;\r\n private readonly cacheEnabled: boolean;\r\n private readonly maxRetries: number;\r\n private readonly retryDelay: number;\r\n private readonly offlineQueueEnabled: boolean;\r\n private readonly maxQueueSize: number;\r\n private offlineQueue: QueuedWrite[] = [];\r\n private isOnline: boolean;\r\n\r\n constructor(config: MobileTransportConfig) {\r\n this.http = new HttpTransport(config.url, config.headers, config.timeout);\r\n this.cache = new Map();\r\n this.cacheTTL = config.cacheTTL ?? 60_000;\r\n this.cacheEnabled = config.cacheEnabled !== false;\r\n this.maxRetries = config.maxRetries ?? 3;\r\n this.retryDelay = config.retryDelay ?? 1_000;\r\n this.offlineQueueEnabled = config.offlineQueueEnabled !== false;\r\n this.maxQueueSize = config.maxQueueSize ?? 100;\r\n this.isOnline = typeof navigator !== 'undefined' ? navigator.onLine : true;\r\n\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('online', () => {\r\n this.isOnline = true;\r\n void this.flushQueue();\r\n });\r\n window.addEventListener('offline', () => {\r\n this.isOnline = false;\r\n });\r\n }\r\n }\r\n\r\n async query<T = Record<string, unknown>>(sql: string, params: unknown[] = []): Promise<QueryResult<T>> {\r\n const isRead = sql.trimStart().toUpperCase().startsWith('SELECT');\r\n\r\n // Check cache for read queries\r\n if (isRead && this.cacheEnabled) {\r\n const cacheKey = JSON.stringify({ sql, params });\r\n const cached = this.cache.get(cacheKey);\r\n if (cached && Date.now() - cached.timestamp < this.cacheTTL) {\r\n return cached.data as QueryResult<T>;\r\n }\r\n }\r\n\r\n const result = await this.withRetry(() => this.http.query<T>(sql, params));\r\n\r\n // Cache read results\r\n if (isRead && this.cacheEnabled) {\r\n const cacheKey = JSON.stringify({ sql, params });\r\n this.cache.set(cacheKey, { data: result, timestamp: Date.now() });\r\n // Evict oldest entries when cache grows too large\r\n if (this.cache.size > 500) {\r\n const entries = [...this.cache.entries()].sort((a, b) => a[1].timestamp - b[1].timestamp);\r\n for (let i = 0; i < 100; i++) this.cache.delete(entries[i][0]);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async execute(sql: string, params: unknown[] = []): Promise<number> {\r\n if (!this.isOnline && this.offlineQueueEnabled) {\r\n return new Promise<number>((resolve, reject) => {\r\n if (this.offlineQueue.length >= this.maxQueueSize) {\r\n reject(new NucleusConnectionError('Offline queue full', { meta: { queueSize: this.maxQueueSize } }));\r\n return;\r\n }\r\n this.offlineQueue.push({ resolve, reject, sql, params });\r\n });\r\n }\r\n return this.withRetry(() => this.http.execute(sql, params));\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, params: unknown[] = []): Promise<T | null> {\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n if (result.rows.length === 0) return null;\r\n const first = result.rows[0];\r\n const keys = Object.keys(first);\r\n if (keys.length === 0) return null;\r\n return first[keys[0]] as T;\r\n }\r\n\r\n async beginTransaction(isolationLevel?: IsolationLevel): Promise<TransactionTransport> {\r\n // Transactions go through the underlying HTTP transport directly — no caching or queueing\r\n return this.withRetry(() => this.http.beginTransaction(isolationLevel));\r\n }\r\n\r\n async close(): Promise<void> {\r\n this.cache.clear();\r\n await this.http.close();\r\n }\r\n\r\n async ping(): Promise<void> {\r\n await this.withRetry(() => this.http.ping());\r\n }\r\n\r\n // -- Mobile-specific API --------------------------------------------------\r\n\r\n /** Clear all cached query results, or only those matching `pattern`. */\r\n invalidateCache(pattern?: string): void {\r\n if (!pattern) {\r\n this.cache.clear();\r\n return;\r\n }\r\n for (const key of this.cache.keys()) {\r\n if (key.includes(pattern)) this.cache.delete(key);\r\n }\r\n }\r\n\r\n /** Number of operations waiting in the offline queue. */\r\n get queueSize(): number {\r\n return this.offlineQueue.length;\r\n }\r\n\r\n // -- Internals ------------------------------------------------------------\r\n\r\n private async withRetry<T>(fn: () => Promise<T>): Promise<T> {\r\n let lastError: Error | undefined;\r\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\r\n try {\r\n return await fn();\r\n } catch (err: unknown) {\r\n lastError = err instanceof Error ? err : new Error(String(err));\r\n // Don't retry client errors (4xx)\r\n const status = (err as { meta?: { status?: number } })?.meta?.status;\r\n if (status != null && status >= 400 && status < 500) throw err;\r\n if (attempt < this.maxRetries) {\r\n await new Promise((r) => setTimeout(r, this.retryDelay * Math.pow(2, attempt)));\r\n }\r\n }\r\n }\r\n throw lastError;\r\n }\r\n\r\n private async flushQueue(): Promise<void> {\r\n const queue = this.offlineQueue;\r\n this.offlineQueue = [];\r\n for (const item of queue) {\r\n try {\r\n const result = await this.http.execute(item.sql, item.params);\r\n item.resolve(result);\r\n } catch (err) {\r\n item.reject(err);\r\n }\r\n }\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// EmbeddedTransport — Tauri / neutron:// protocol (desktop with embedded Nucleus)\r\n// ---------------------------------------------------------------------------\r\n\r\ntype InvokeFn = (cmd: string, args: Record<string, unknown>) => Promise<unknown>;\r\n\r\n/**\r\n * Transport for desktop environments where Nucleus is embedded via Tauri.\r\n *\r\n * Skips HTTP serialization overhead by calling Tauri's IPC `invoke()` directly.\r\n * Falls back to the `neutron://` custom protocol when Tauri internals are not\r\n * available.\r\n */\r\nexport class EmbeddedTransport implements Transport {\r\n private readonly invoke: InvokeFn;\r\n\r\n constructor() {\r\n // Prefer Tauri's IPC invoke when available\r\n if (typeof window !== 'undefined' && (window as unknown as Record<string, unknown>).__TAURI_INTERNALS__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.invoke = (window as any).__TAURI_INTERNALS__.invoke as InvokeFn;\r\n } else {\r\n // Fallback to neutron:// custom protocol\r\n this.invoke = async (cmd: string, args: Record<string, unknown>) => {\r\n const res = await fetch(`neutron://localhost/api/${cmd}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(args),\r\n });\r\n if (!res.ok) {\r\n const text = await res.text().catch(() => '');\r\n throw new NucleusQueryError(text || `Embedded call failed: ${res.status}`, {\r\n meta: { status: res.status, cmd },\r\n });\r\n }\r\n return res.json();\r\n };\r\n }\r\n }\r\n\r\n async query<T = Record<string, unknown>>(sql: string, params: unknown[] = []): Promise<QueryResult<T>> {\r\n const result = (await this.invoke('nucleus_query', { sql, params })) as {\r\n rows?: T[];\r\n rowCount?: number;\r\n data?: T[];\r\n };\r\n const rows = (result.rows ?? result.data ?? []) as T[];\r\n return { rows, rowCount: result.rowCount ?? rows.length };\r\n }\r\n\r\n async execute(sql: string, params: unknown[] = []): Promise<number> {\r\n const result = (await this.invoke('nucleus_execute', { sql, params })) as {\r\n affected?: number;\r\n rowsAffected?: number;\r\n };\r\n return result.affected ?? result.rowsAffected ?? 0;\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, params: unknown[] = []): Promise<T | null> {\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n if (result.rows.length === 0) return null;\r\n const first = result.rows[0];\r\n const keys = Object.keys(first);\r\n if (keys.length === 0) return null;\r\n return first[keys[0]] as T;\r\n }\r\n\r\n async beginTransaction(isolationLevel?: IsolationLevel): Promise<TransactionTransport> {\r\n const result = (await this.invoke('nucleus_transaction_begin', {\r\n isolationLevel: isolationLevel ?? null,\r\n })) as { txId?: string };\r\n const txId = result.txId;\r\n if (!txId) {\r\n throw new NucleusTransactionError('Embedded Nucleus did not return a transaction ID');\r\n }\r\n return new EmbeddedTransactionTransport(this.invoke, txId);\r\n }\r\n\r\n async close(): Promise<void> {\r\n // Embedded — nothing to close from the client side.\r\n }\r\n\r\n async ping(): Promise<void> {\r\n await this.invoke('nucleus_query', { sql: 'SELECT 1', params: [] });\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// EmbeddedTransactionTransport\r\n// ---------------------------------------------------------------------------\r\n\r\nclass EmbeddedTransactionTransport implements TransactionTransport {\r\n private readonly invoke: InvokeFn;\r\n private readonly txId: string;\r\n private finished = false;\r\n\r\n constructor(invoke: InvokeFn, txId: string) {\r\n this.invoke = invoke;\r\n this.txId = txId;\r\n }\r\n\r\n private assertOpen(): void {\r\n if (this.finished) {\r\n throw new NucleusTransactionError('Transaction has already been committed or rolled back');\r\n }\r\n }\r\n\r\n async query<T = Record<string, unknown>>(sql: string, params: unknown[] = []): Promise<QueryResult<T>> {\r\n this.assertOpen();\r\n const result = (await this.invoke('nucleus_query', { sql, params, txId: this.txId })) as {\r\n rows?: T[];\r\n rowCount?: number;\r\n data?: T[];\r\n };\r\n const rows = (result.rows ?? result.data ?? []) as T[];\r\n return { rows, rowCount: result.rowCount ?? rows.length };\r\n }\r\n\r\n async execute(sql: string, params: unknown[] = []): Promise<number> {\r\n this.assertOpen();\r\n const result = (await this.invoke('nucleus_execute', { sql, params, txId: this.txId })) as {\r\n affected?: number;\r\n rowsAffected?: number;\r\n };\r\n return result.affected ?? result.rowsAffected ?? 0;\r\n }\r\n\r\n async fetchval<T = unknown>(sql: string, params: unknown[] = []): Promise<T | null> {\r\n const result = await this.query<Record<string, unknown>>(sql, params);\r\n if (result.rows.length === 0) return null;\r\n const first = result.rows[0];\r\n const keys = Object.keys(first);\r\n if (keys.length === 0) return null;\r\n return first[keys[0]] as T;\r\n }\r\n\r\n async beginTransaction(_isolationLevel?: IsolationLevel): Promise<TransactionTransport> {\r\n throw new NucleusTransactionError('Nested transactions are not supported');\r\n }\r\n\r\n async commit(): Promise<void> {\r\n this.assertOpen();\r\n await this.invoke('nucleus_transaction_commit', { txId: this.txId });\r\n this.finished = true;\r\n }\r\n\r\n async rollback(): Promise<void> {\r\n this.assertOpen();\r\n await this.invoke('nucleus_transaction_rollback', { txId: this.txId });\r\n this.finished = true;\r\n }\r\n\r\n async close(): Promise<void> {\r\n if (!this.finished) {\r\n await this.rollback();\r\n }\r\n }\r\n\r\n async ping(): Promise<void> {\r\n this.assertOpen();\r\n await this.query('SELECT 1');\r\n }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Auto-detection factory\r\n// ---------------------------------------------------------------------------\r\n\r\n/**\r\n * Create the best transport for the current platform.\r\n *\r\n * Detection order:\r\n * 1. Desktop with Tauri internals -> `EmbeddedTransport` (IPC, zero serialization overhead)\r\n * 2. React Native -> `MobileTransport` (retries, caching, offline queue)\r\n * 3. Everything else -> `HttpTransport` (standard fetch)\r\n */\r\nexport function createTransport(config: MobileTransportConfig): Transport {\r\n // Desktop with Tauri — use embedded transport (skips HTTP entirely)\r\n if (typeof window !== 'undefined' && (window as unknown as Record<string, unknown>).__TAURI_INTERNALS__) {\r\n return new EmbeddedTransport();\r\n }\r\n\r\n // React Native — use mobile transport with retries, caching, and offline queue\r\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\r\n return new MobileTransport(config);\r\n }\r\n\r\n // Web / Node / everything else — standard HTTP\r\n return new HttpTransport(config.url, config.headers, config.timeout);\r\n}\r\n"]}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E","sourcesContent":["// ---------------------------------------------------------------------------\r\n// Nucleus client — shared types\r\n// ---------------------------------------------------------------------------\r\n\r\n/** Transport interface for communicating with a Nucleus / PostgreSQL server. */\r\nexport interface Transport {\r\n /** Execute a SQL query and return typed rows. */\r\n query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<QueryResult<T>>;\r\n\r\n /** Execute a SQL statement (INSERT / UPDATE / DELETE) and return the affected row count. */\r\n execute(sql: string, params?: unknown[]): Promise<number>;\r\n\r\n /** Execute a query and return the first column of the first row, or null. */\r\n fetchval<T = unknown>(sql: string, params?: unknown[]): Promise<T | null>;\r\n\r\n /** Begin a transaction, returning a transport scoped to that transaction. */\r\n beginTransaction(isolationLevel?: IsolationLevel): Promise<TransactionTransport>;\r\n\r\n /** Close the transport and release resources. */\r\n close(): Promise<void>;\r\n\r\n /** Verify the server is reachable. */\r\n ping(): Promise<void>;\r\n}\r\n\r\n/** A transport that lives inside a transaction and can commit / rollback. */\r\nexport interface TransactionTransport extends Transport {\r\n commit(): Promise<void>;\r\n rollback(): Promise<void>;\r\n}\r\n\r\n/** Rows returned from a query. */\r\nexport interface QueryResult<T> {\r\n rows: T[];\r\n rowCount: number;\r\n}\r\n\r\n/** SQL transaction isolation levels. */\r\nexport type IsolationLevel = 'read_committed' | 'repeatable_read' | 'serializable';\r\n\r\n/** Feature flags detected from the connected database on connect. */\r\nexport interface NucleusFeatures {\r\n isNucleus: boolean;\r\n hasKV: boolean;\r\n hasVector: boolean;\r\n hasTimeSeries: boolean;\r\n hasDocument: boolean;\r\n hasGraph: boolean;\r\n hasFTS: boolean;\r\n hasGeo: boolean;\r\n hasBlob: boolean;\r\n hasStreams: boolean;\r\n hasColumnar: boolean;\r\n hasDatalog: boolean;\r\n hasCDC: boolean;\r\n hasPubSub: boolean;\r\n version: string;\r\n}\r\n\r\n/**\r\n * Plugin interface for the `.use()` composition pattern.\r\n *\r\n * `T` is the shape that gets merged into the client when the plugin is used.\r\n * For example `NucleusPlugin<{ sql: SQLModel }>` adds a `sql` property.\r\n */\r\nexport interface NucleusPlugin<T> {\r\n /** Human-readable plugin name (used for diagnostics). */\r\n name: string;\r\n /** Called once when `.connect()` resolves. Must return the object to merge. */\r\n init(transport: Transport, features: NucleusFeatures): T;\r\n}\r\n"]}
|
package/dist/vector/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAG9E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA+CjE,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,eAAe;IAEA;IACA;IAFnB,YACmB,SAAoB,EACpB,QAAyB;QADzB,cAAS,GAAT,SAAS,CAAW;QACpB,aAAQ,GAAR,QAAQ,CAAiB;IACzC,CAAC;IAEI,OAAO;QACb,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,SAAiB,EAAE,SAAyB,QAAQ;QACvF,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,uCAAuC,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAU,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,qBAAqB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,8BAA8B,IAAI,2CAA2C,SAAS,iCAAiC,CACxH,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,kCAAkC,IAAI,iBAAiB,IAAI,6CAA6C,MAAM,IAAI,CACnH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,EAAU,EACV,MAAgB,EAChB,WAAoC,EAAE;QAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,eAAe,UAAU,wDAAwD,EACjF,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,EAAU;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,UAAU,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,MAAM,CACV,UAAkB,EAClB,KAAe,EACf,OAA4B,EAAE;QAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAEtC,0CAA0C;QAC1C,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,GAAG,GACP,8EAA8E;YAC9E,QAAQ,UAAU,GAAG,YAAY,6BAA6B,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqD,GAAG,EAAE,MAAM,CAAC,CAAC;QAE3G,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,IAAI,GAA4B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBACpE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO;gBACL,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAgB;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,gCAAgC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,CAAW,EAAE,CAAW,EAAE,SAAyB,QAAQ;QACxE,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,CACL,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAS,oDAAoD,EAAE;YAC3F,KAAK;YACL,KAAK;YACL,MAAM;SACP,CAAC,CAAC,IAAI,CAAC,CACT,CAAC;IACJ,CAAC;CACF;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAA2C;IAChE,IAAI,EAAE,QAAQ;IACd,IAAI,CAAC,SAAoB,EAAE,QAAyB;QAClD,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC9D,CAAC;CACF,CAAC","sourcesContent":["// ---------------------------------------------------------------------------\n// @neutron/nucleus/vector — Vector similarity search plugin\n// ---------------------------------------------------------------------------\n\nimport type { Transport, NucleusPlugin, NucleusFeatures } from '../types.js';\nimport { requireNucleus, assertIdentifier } from '../helpers.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type DistanceMetric = 'cosine' | 'l2' | 'inner';\n\nexport interface VectorSearchResult<T = Record<string, unknown>> {\n item: T;\n score: number;\n distance: number;\n}\n\nexport interface VectorSearchOptions {\n /** Maximum number of results (default 10). */\n limit?: number;\n /** Distance metric (default `'cosine'`). */\n metric?: DistanceMetric;\n /** Metadata key/value filters. */\n filter?: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// VectorModel interface\n// ---------------------------------------------------------------------------\n\nexport interface VectorModel {\n /** Create a collection (table) with a VECTOR column and index. */\n createCollection(name: string, dimension: number, metric?: DistanceMetric): Promise<void>;\n\n /** Insert a vector with metadata into a collection. */\n insert(collection: string, id: string, vector: number[], metadata?: Record<string, unknown>): Promise<void>;\n\n /** Delete a vector by ID from a collection. */\n delete(collection: string, id: string): Promise<void>;\n\n /** Perform a vector similarity search. */\n search(collection: string, query: number[], opts?: VectorSearchOptions): Promise<VectorSearchResult[]>;\n\n /** Return the dimensionality of a vector. */\n dims(vector: number[]): Promise<number>;\n\n /** Compute the distance between two vectors. */\n distance(a: number[], b: number[], metric?: DistanceMetric): Promise<number>;\n}\n\n// ---------------------------------------------------------------------------\n// Implementation\n// ---------------------------------------------------------------------------\n\nclass VectorModelImpl implements VectorModel {\n constructor(\n private readonly transport: Transport,\n private readonly features: NucleusFeatures,\n ) {}\n\n private require(): void {\n requireNucleus(this.features, 'Vector');\n }\n\n async createCollection(name: string, dimension: number, metric: DistanceMetric = 'cosine'): Promise<void> {\n this.require();\n assertIdentifier(name, 'collection name');\n\n if (!Number.isInteger(dimension) || dimension <= 0 || dimension > 65535) {\n throw new Error(`Invalid vector dimension: ${dimension}. Must be a positive integer <= 65535`);\n }\n\n const VALID_METRICS = ['cosine', 'l2', 'inner'] as const;\n if (!VALID_METRICS.includes(metric)) {\n throw new Error(`Invalid distance metric: ${metric}. Must be one of: ${VALID_METRICS.join(', ')}`);\n }\n\n await this.transport.execute(\n `CREATE TABLE IF NOT EXISTS ${name} (id TEXT PRIMARY KEY, embedding VECTOR(${dimension}), metadata JSONB DEFAULT '{}')`,\n );\n await this.transport.execute(\n `CREATE INDEX IF NOT EXISTS idx_${name}_embedding ON ${name} USING VECTOR (embedding) WITH (metric = '${metric}')`,\n );\n }\n\n async insert(\n collection: string,\n id: string,\n vector: number[],\n metadata: Record<string, unknown> = {},\n ): Promise<void> {\n this.require();\n assertIdentifier(collection, 'collection name');\n\n const vecJson = JSON.stringify(vector);\n const metaJson = JSON.stringify(metadata);\n await this.transport.execute(\n `INSERT INTO ${collection} (id, embedding, metadata) VALUES ($1, VECTOR($2), $3)`,\n [id, vecJson, metaJson],\n );\n }\n\n async delete(collection: string, id: string): Promise<void> {\n this.require();\n assertIdentifier(collection, 'collection name');\n await this.transport.execute(`DELETE FROM ${collection} WHERE id = $1`, [id]);\n }\n\n async search(\n collection: string,\n query: number[],\n opts: VectorSearchOptions = {},\n ): Promise<VectorSearchResult[]> {\n this.require();\n assertIdentifier(collection, 'collection name');\n\n const limit = opts.limit ?? 10;\n const metric = opts.metric ?? 'cosine';\n const vecJson = JSON.stringify(query);\n\n // Build optional WHERE clause from filter\n let filterClause = '';\n const params: unknown[] = [vecJson, metric, limit];\n if (opts.filter) {\n const clauses: string[] = [];\n for (const [k, v] of Object.entries(opts.filter)) {\n const ki = params.length + 1;\n const vi = params.length + 2;\n clauses.push(`metadata->>$${ki} = $${vi}`);\n params.push(k, String(v));\n }\n filterClause = ' WHERE ' + clauses.join(' AND ');\n }\n\n const sql =\n `SELECT id, metadata, VECTOR_DISTANCE(embedding, VECTOR($1), $2) AS distance ` +\n `FROM ${collection}${filterClause} ORDER BY distance LIMIT $3`;\n\n const result = await this.transport.query<{ id: string; metadata: string; distance: number }>(sql, params);\n\n return result.rows.map((row) => {\n const meta: Record<string, unknown> = typeof row.metadata === 'string'\n ? JSON.parse(row.metadata)\n : (row.metadata ?? {});\n meta.id = row.id;\n const dist = Number(row.distance);\n return {\n item: meta,\n score: dist > 0 ? 1 / dist : 0,\n distance: dist,\n };\n });\n }\n\n async dims(vector: number[]): Promise<number> {\n this.require();\n const vecJson = JSON.stringify(vector);\n return (await this.transport.fetchval<number>('SELECT VECTOR_DIMS(VECTOR($1))', [vecJson])) ?? 0;\n }\n\n async distance(a: number[], b: number[], metric: DistanceMetric = 'cosine'): Promise<number> {\n this.require();\n const aJson = JSON.stringify(a);\n const bJson = JSON.stringify(b);\n return (\n (await this.transport.fetchval<number>('SELECT VECTOR_DISTANCE(VECTOR($1), VECTOR($2), $3)', [\n aJson,\n bJson,\n metric,\n ])) ?? 0\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n/** Plugin: adds `.vector` to the client. */\nexport const withVector: NucleusPlugin<{ vector: VectorModel }> = {\n name: 'vector',\n init(transport: Transport, features: NucleusFeatures) {\n return { vector: new VectorModelImpl(transport, features) };\n },\n};\n"]}
|