@undefineds.co/xpod 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/config/local.json +5 -5
  2. package/config/xpod.json +24 -10
  3. package/dist/cli/commands/auth.d.ts +1 -0
  4. package/dist/cli/commands/auth.js +117 -37
  5. package/dist/cli/commands/auth.js.map +1 -1
  6. package/dist/cli/commands/login.js +16 -23
  7. package/dist/cli/commands/login.js.map +1 -1
  8. package/dist/cli/commands/logs.d.ts +2 -0
  9. package/dist/cli/commands/logs.js +20 -5
  10. package/dist/cli/commands/logs.js.map +1 -1
  11. package/dist/cli/commands/obj.d.ts +44 -0
  12. package/dist/cli/commands/obj.js +1059 -0
  13. package/dist/cli/commands/obj.js.map +1 -0
  14. package/dist/cli/commands/rdf.d.ts +14 -0
  15. package/dist/cli/commands/rdf.js +235 -0
  16. package/dist/cli/commands/rdf.js.map +1 -0
  17. package/dist/cli/commands/resource.d.ts +31 -0
  18. package/dist/cli/commands/resource.js +191 -0
  19. package/dist/cli/commands/resource.js.map +1 -0
  20. package/dist/cli/commands/secret.d.ts +36 -0
  21. package/dist/cli/commands/secret.js +285 -0
  22. package/dist/cli/commands/secret.js.map +1 -0
  23. package/dist/cli/commands/server.d.ts +11 -0
  24. package/dist/cli/commands/server.js +168 -0
  25. package/dist/cli/commands/server.js.map +1 -0
  26. package/dist/cli/commands/start.d.ts +1 -0
  27. package/dist/cli/commands/start.js +5 -0
  28. package/dist/cli/commands/start.js.map +1 -1
  29. package/dist/cli/commands/status.d.ts +1 -0
  30. package/dist/cli/commands/status.js +21 -6
  31. package/dist/cli/commands/status.js.map +1 -1
  32. package/dist/cli/commands/stop.d.ts +3 -0
  33. package/dist/cli/commands/stop.js +40 -6
  34. package/dist/cli/commands/stop.js.map +1 -1
  35. package/dist/cli/index.js +23 -8
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/cli/lib/auth-context.d.ts +24 -0
  38. package/dist/cli/lib/auth-context.js +70 -0
  39. package/dist/cli/lib/auth-context.js.map +1 -0
  40. package/dist/cli/lib/css-account.js +29 -2
  41. package/dist/cli/lib/css-account.js.map +1 -1
  42. package/dist/cli/lib/output.d.ts +23 -0
  43. package/dist/cli/lib/output.js +63 -0
  44. package/dist/cli/lib/output.js.map +1 -0
  45. package/dist/cli/lib/resource.d.ts +29 -0
  46. package/dist/cli/lib/resource.js +114 -0
  47. package/dist/cli/lib/resource.js.map +1 -0
  48. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +11 -10
  49. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +13 -24
  50. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -1
  51. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +4 -4
  52. package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +8 -4
  53. package/dist/identity/oidc/AutoDetectOidcHandler.js +10 -6
  54. package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -1
  55. package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +3 -3
  56. package/dist/runtime/bootstrap.js +7 -0
  57. package/dist/runtime/bootstrap.js.map +1 -1
  58. package/dist/runtime/css-process.js +7 -0
  59. package/dist/runtime/css-process.js.map +1 -1
  60. package/dist/storage/accessors/MixDataAccessor.js +3 -0
  61. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  62. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js +6 -3
  63. package/dist/storage/accessors/QuadstoreSparqlDataAccessor.js.map +1 -1
  64. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js +12 -4
  65. package/dist/storage/accessors/QuintStoreSparqlDataAccessor.js.map +1 -1
  66. package/dist/storage/quint/SqliteQuintStore.d.ts +26 -1
  67. package/dist/storage/quint/SqliteQuintStore.js +551 -318
  68. package/dist/storage/quint/SqliteQuintStore.js.map +1 -1
  69. package/dist/storage/quint/SqliteQuintStore.jsonld +102 -2
  70. package/dist/storage/quint/schema.d.ts +76 -0
  71. package/dist/storage/quint/schema.js +13 -7
  72. package/dist/storage/quint/schema.js.map +1 -1
  73. package/dist/storage/sparql/ComunicaQuintEngine.js +16 -3
  74. package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -1
  75. package/package.json +1 -1
  76. package/dist/cli/commands/config.d.ts +0 -42
  77. package/dist/cli/commands/config.js +0 -289
  78. package/dist/cli/commands/config.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"QuintStoreSparqlDataAccessor.js","sourceRoot":"","sources":["../../../src/storage/accessors/QuintStoreSparqlDataAccessor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * QuintStoreSparqlDataAccessor - Data accessor using QuintStore\n * \n * Key features:\n * 1. Graph prefix filtering for efficient subgraph queries\n * 2. Backend-agnostic storage (SQLite, PostgreSQL, etc.)\n * 3. Future: vector similarity search\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport { Readable } from 'node:stream';\nimport arrayifyStream from 'arrayify-stream';\n\nimport { DataFactory } from 'n3';\nimport type { NamedNode, Quad, Term } from '@rdfjs/types';\nimport type {\n ConstructQuery,\n GraphPattern,\n GraphQuads,\n InsertDeleteOperation,\n SparqlGenerator,\n Update,\n UpdateOperation,\n} from 'sparqljs';\nimport { Generator } from 'sparqljs';\nimport {\n DataAccessor,\n RepresentationMetadata,\n IdentifierStrategy,\n addResourceMetadata,\n updateModifiedDate,\n \n type Representation,\n type ResourceIdentifier,\n INTERNAL_QUADS,\n ConflictHttpError,\n NotFoundHttpError,\n NotImplementedHttpError,\n UnsupportedMediaTypeHttpError,\n guardStream,\n type Guarded,\n isContainerIdentifier,\n CONTENT_TYPE_TERM,\n LDP,\n createErrorMessage,\n} from '@solid/community-server';\n\nimport type { QuintStore, Quint } from '../quint/types';\nimport { ComunicaQuintEngine } from '../sparql/ComunicaQuintEngine';\nimport type { RdfSourceInput } from '../rdf/types';\n\nconst { defaultGraph, namedNode, quad, variable } = DataFactory;\n\nexport class QuintStoreSparqlDataAccessor implements DataAccessor {\n protected readonly logger = getLoggerFor(this);\n private readonly identifierStrategy: IdentifierStrategy;\n private readonly store: QuintStore;\n private readonly engine: ComunicaQuintEngine;\n private readonly generator: SparqlGenerator;\n private readonly baseUrl: string;\n private initialized = false;\n private initializing: Promise<void> | null = null;\n\n public constructor(\n store: QuintStore,\n identifierStrategy: IdentifierStrategy,\n ) {\n this.store = store;\n this.identifierStrategy = identifierStrategy;\n this.generator = new Generator();\n this.engine = new ComunicaQuintEngine(this.store);\n // Get baseUrl from identifierStrategy\n const strategy = identifierStrategy as unknown as { baseUrl?: string };\n this.baseUrl = strategy.baseUrl ?? '';\n this.logger.info(`QuintStoreSparqlDataAccessor initialized with identifierStrategy: ${identifierStrategy.constructor.name}, baseUrl: ${this.baseUrl || 'N/A'}`);\n }\n\n /**\n * Initialize the store (open database connection)\n */\n public async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n this.initializing ??= this.initializeStore().finally(() => {\n this.initializing = null;\n });\n\n await this.initializing;\n }\n\n private async initializeStore(): Promise<void> {\n await this.store.open();\n this.initialized = true;\n this.logger.info('QuintStore initialized');\n }\n\n /**\n * Close the store\n */\n public async finalize(): Promise<void> {\n if (this.initializing) {\n await this.initializing.catch(() => {});\n }\n if (this.initialized) {\n await this.store.close();\n this.initialized = false;\n this.logger.info('QuintStore closed');\n }\n }\n\n /**\n * Only Quad data streams are supported.\n */\n public async canHandle(representation: Representation): Promise<void> {\n if (representation.binary || representation.metadata.contentType !== INTERNAL_QUADS) {\n throw new UnsupportedMediaTypeHttpError('Only Quad data is supported.');\n }\n }\n\n /**\n * Returns all triples stored for the corresponding identifier.\n */\n public async getData(identifier: ResourceIdentifier): Promise<Guarded<Readable>> {\n await this.initialize();\n const name = namedNode(identifier.path);\n return this.sendSparqlConstruct(this.sparqlConstruct(name));\n }\n\n /**\n * Returns the metadata for the corresponding identifier.\n */\n public async getMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n console.log(`[getMetadata] Starting for ${identifier.path}`);\n await this.initialize();\n const name = namedNode(identifier.path);\n const query = this.sparqlConstruct(this.getMetadataNode(name));\n console.log(`[getMetadata] Sending CONSTRUCT for ${identifier.path}`);\n const stream = await this.sendSparqlConstruct(query);\n console.log(`[getMetadata] Got stream for ${identifier.path}, reading...`);\n const quads: Quad[] = await arrayifyStream(stream);\n console.log(`[getMetadata] Read ${quads.length} quads for ${identifier.path}`);\n\n if (quads.length === 0) {\n throw new NotFoundHttpError();\n }\n\n const metadata = new RepresentationMetadata(identifier).addQuads(quads);\n // Only set default contentType if not already present in metadata\n if (!isContainerIdentifier(identifier) && !metadata.contentType) {\n metadata.contentType = INTERNAL_QUADS;\n }\n\n return metadata;\n }\n\n public async* getChildren(identifier: ResourceIdentifier): AsyncIterableIterator<RepresentationMetadata> {\n await this.initialize();\n const name = namedNode(identifier.path);\n const stream = await this.sendSparqlConstruct(this.sparqlConstruct(name));\n for await (const entry of stream) {\n yield new RepresentationMetadata((entry as Quad).object as NamedNode);\n }\n }\n\n /**\n * Writes the given metadata for the container.\n */\n public async writeContainer(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n console.log(`[writeContainer] Starting for ${identifier.path}`);\n await this.initialize();\n addResourceMetadata(metadata, true);\n updateModifiedDate(metadata);\n const { name, parent } = this.getRelatedNames(identifier);\n console.log(`[writeContainer] Sending SPARQL update for ${identifier.path}, parent: ${parent?.value || 'none'}`);\n console.log(`[writeContainer] Metadata quads: ${metadata.quads().length}`);\n const result = await this.sendSparqlUpdate(this.sparqlInsert(name, metadata, parent));\n console.log(`[writeContainer] Completed for ${identifier.path}`);\n return result;\n }\n\n /**\n * Reads the given data stream and stores it together with the metadata.\n */\n public async writeDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n console.log(`[writeDocument] Starting for ${identifier.path}`);\n await this.initialize();\n if (this.isMetadataIdentifier(identifier)) {\n throw new ConflictHttpError('Not allowed to create NamedNodes with the metadata extension.');\n }\n const { name, parent } = this.getRelatedNames(identifier);\n console.log(`[writeDocument] Reading stream for ${identifier.path}`);\n\n // 添加超时处理\n const timeoutMs = 5000;\n const triplesPromise = arrayifyStream<Quad>(data);\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(`arrayifyStream timed out after ${timeoutMs}ms`)), timeoutMs);\n });\n \n let triples: Quad[];\n try {\n triples = await Promise.race([triplesPromise, timeoutPromise]);\n console.log(`[writeDocument] Read ${triples.length} triples for ${identifier.path}`);\n } catch (e: any) {\n console.error(`[writeDocument] Failed to read stream for ${identifier.path}:`, e?.message || e);\n throw e;\n }\n \n const def = defaultGraph();\n if (triples.some((triple): boolean => !def.equals(triple.graph))) {\n throw new NotImplementedHttpError('Only triples in the default graph are supported.');\n }\n\n metadata.removeAll(CONTENT_TYPE_TERM);\n console.log(`[writeDocument] Sending SPARQL update for ${identifier.path}`);\n const result = await this.sendSparqlUpdate(this.sparqlInsert(name, metadata, parent, triples));\n console.log(`[writeDocument] Completed for ${identifier.path}`);\n return result;\n }\n\n public async writeRdfSourceDocument(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n source: RdfSourceInput,\n ): Promise<void> {\n await this.initialize();\n\n const sourceScopedStore = this.sourceScopedStore();\n if (!sourceScopedStore) {\n await this.writeDocument(identifier, guardStream(Readable.from(quads)), metadata);\n return;\n }\n\n if (this.isMetadataIdentifier(identifier)) {\n throw new ConflictHttpError('Not allowed to create NamedNodes with the metadata extension.');\n }\n\n const def = defaultGraph();\n if (quads.some((triple): boolean => !def.equals(triple.graph))) {\n throw new NotImplementedHttpError('Only triples in the default graph are supported.');\n }\n\n metadata.removeAll(CONTENT_TYPE_TERM);\n const { name, parent } = this.getRelatedNames(identifier);\n await this.replaceCompatibilityMetadata(name, metadata, parent);\n await sourceScopedStore.replaceSource(\n quads.map((value) => quad(value.subject, value.predicate, value.object, name)),\n source,\n );\n }\n\n public async deleteRdfSourceDocument(identifier: ResourceIdentifier): Promise<void> {\n await this.initialize();\n\n const sourceScopedStore = this.sourceScopedStore();\n if (!sourceScopedStore) {\n await this.deleteResource(identifier);\n return;\n }\n\n const { name, parent } = this.getRelatedNames(identifier);\n const metaName = this.getMetadataNode(name);\n await sourceScopedStore.deleteSource(identifier.path);\n await this.store.del({ graph: metaName });\n if (parent) {\n await this.store.del({\n graph: parent,\n subject: parent,\n predicate: LDP.terms.contains,\n object: name,\n });\n }\n }\n\n /**\n * Reads the metadata and stores it.\n */\n public async writeMetadata(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n await this.initialize();\n const { name } = this.getRelatedNames(identifier);\n const metaName = this.getMetadataNode(name);\n return this.sendSparqlUpdate(this.sparqlInsertMetadata(metaName, metadata));\n }\n\n /**\n * Removes all graph data relevant to the given identifier.\n */\n public async deleteResource(identifier: ResourceIdentifier): Promise<void> {\n await this.initialize();\n const { name, parent } = this.getRelatedNames(identifier);\n return this.sendSparqlUpdate(this.sparqlDelete(name, parent));\n }\n\n // ============================================\n // QuintStore specific methods\n // ============================================\n\n /**\n * Get data with graph prefix filtering (key feature!)\n * This is much more efficient than full SPARQL for subgraph queries.\n */\n public async getDataByGraphPrefix(prefix: string): Promise<Quint[]> {\n await this.initialize();\n return this.store.getByGraphPrefix(prefix);\n }\n\n /**\n * Execute SPARQL query with graph prefix filtering\n */\n public async queryWithGraphPrefix(\n query: string,\n graphPrefix: string,\n ): Promise<Quad[]> {\n await this.initialize();\n const stream = await this.engine.queryBindings(query, { graphPrefix });\n return arrayifyStream(stream);\n }\n\n // ============================================\n // Private helpers\n // ============================================\n\n private getRelatedNames(identifier: ResourceIdentifier): { name: NamedNode; parent?: NamedNode } {\n const name = namedNode(identifier.path);\n\n if (this.identifierStrategy.isRootContainer(identifier)) {\n return { name };\n }\n\n const parentIdentifier = this.identifierStrategy.getParentContainer(identifier);\n const parent = namedNode(parentIdentifier.path);\n return { name, parent };\n }\n\n protected getMetadataNode(name: NamedNode): NamedNode {\n return namedNode(`meta:${name.value}`);\n }\n\n private isMetadataIdentifier(identifier: ResourceIdentifier): boolean {\n return identifier.path.startsWith('meta:');\n }\n\n protected sparqlConstruct(name: NamedNode): ConstructQuery {\n const pattern = quad(variable('s'), variable('p'), variable('o'));\n return {\n queryType: 'CONSTRUCT',\n template: [pattern],\n where: [this.sparqlSelectGraph(name, [pattern])],\n type: 'query',\n prefixes: {},\n };\n }\n\n private sparqlSelectGraph(name: NamedNode, triples: Quad[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns: [{ type: 'bgp', triples }],\n } as GraphPattern;\n }\n\n private sparqlSelectGraphAsQuads(name: NamedNode, triples: Quad[]): any {\n return this.sparqlSelectGraph(name, triples);\n }\n\n /**\n * Creates an update query that overwrites the data and metadata of a resource.\n * If triples is undefined, we assume it's a container (so don't overwrite the main graph with containment triples).\n * This follows the same pattern as CSS's SparqlDataAccessor.\n *\n * @param name - Name of the resource to update.\n * @param metadata - New metadata of the resource.\n * @param parent - Name of the parent to update the containment triples.\n * @param triples - New data of the resource (undefined for containers).\n */\n private sparqlInsert(\n name: NamedNode,\n metadata: RepresentationMetadata,\n parent?: NamedNode,\n triples?: Quad[],\n ): Update {\n const metaName = this.getMetadataNode(name);\n\n // Insert new metadata and containment triple\n const insert: GraphQuads[] = [\n {\n type: 'graph',\n name: metaName,\n triples: metadata.quads() as Quad[],\n },\n ];\n\n if (parent) {\n insert.push({\n type: 'graph',\n name: parent,\n triples: [quad(parent, LDP.terms.contains, name)],\n });\n }\n\n // Necessary updates: delete metadata and insert new data\n const updates: InsertDeleteOperation[] = [\n // Always delete and reinsert metadata\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n {\n updateType: 'insert',\n insert,\n },\n ];\n\n // Only overwrite data triples for documents (when triples is defined)\n // For containers, we don't touch the data graph to preserve ldp:contains triples\n if (triples !== undefined) {\n // This needs to be first so it happens before the insert\n updates.unshift({\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(name, [quad(variable('s'), variable('p'), variable('o'))])],\n });\n\n if (triples.length > 0) {\n insert.push({\n type: 'graph',\n name,\n triples,\n });\n }\n }\n\n return {\n type: 'update',\n updates,\n prefixes: {},\n };\n }\n\n private sparqlInsertMetadata(metaName: NamedNode, metadata: RepresentationMetadata): Update {\n const metaGraphs: GraphQuads = {\n type: 'graph',\n name: metaName,\n triples: metadata.quads() as Quad[],\n };\n\n const deleteOp: InsertDeleteOperation = {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n };\n\n const insertOp: InsertDeleteOperation = {\n updateType: 'insert',\n insert: [metaGraphs],\n };\n\n return {\n type: 'update',\n updates: [deleteOp, insertOp],\n prefixes: {},\n };\n }\n\n private sparqlDelete(name: NamedNode, parent?: NamedNode): Update {\n const metaName = this.getMetadataNode(name);\n\n const updates: UpdateOperation[] = [\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(name, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n ];\n\n if (parent) {\n updates.push({\n updateType: 'deletewhere',\n delete: [{\n type: 'graph',\n name: parent,\n triples: [quad(parent, LDP.terms.contains, name)],\n }],\n });\n }\n\n return {\n type: 'update',\n updates,\n prefixes: {},\n };\n }\n\n private async sendSparqlConstruct(query: ConstructQuery): Promise<Guarded<Readable>> {\n const queryString = this.generator.stringify(query);\n this.logger.verbose(`SPARQL CONSTRUCT: ${queryString}`);\n\n try {\n const quadStream = await this.engine.queryQuads(queryString);\n return guardStream(Readable.from(quadStream as unknown as AsyncIterable<any>));\n } catch (error: unknown) {\n this.logger.error(`SPARQL query failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n\n private async sendSparqlUpdate(query: Update): Promise<void> {\n const queryString = this.generator.stringify(query);\n this.logger.verbose(`SPARQL UPDATE: ${queryString}`);\n\n try {\n await this.engine.queryVoid(queryString);\n } catch (error: unknown) {\n this.logger.error(`SPARQL update failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n\n private sourceScopedStore(): {\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n } | undefined {\n const store = this.store as Partial<{\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n }>;\n if (typeof store.replaceSource === 'function' && typeof store.deleteSource === 'function') {\n return store as {\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n };\n }\n return undefined;\n }\n\n private async replaceCompatibilityMetadata(\n name: NamedNode,\n metadata: RepresentationMetadata,\n parent?: NamedNode,\n ): Promise<void> {\n const metaName = this.getMetadataNode(name);\n await this.store.del({ graph: metaName });\n const inserts: Quint[] = metadata.quads().map((value) => quad(\n value.subject,\n value.predicate,\n value.object,\n metaName,\n ) as Quint);\n if (parent) {\n inserts.push(quad(parent, LDP.terms.contains, name, parent) as Quint);\n }\n if (inserts.length > 0) {\n await this.store.multiPut(inserts);\n }\n }\n\n /**\n * Execute a SPARQL UPDATE query string directly.\n * Used by SparqlUpdateResourceStore for LDP PATCH operations.\n */\n public async executeSparqlUpdate(query: string, baseIri?: string): Promise<void> {\n this.logger.verbose(`executeSparqlUpdate: ${query}`);\n try {\n await this.engine.queryVoid(query);\n } catch (error: unknown) {\n this.logger.error(`SPARQL update failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"QuintStoreSparqlDataAccessor.js","sourceRoot":"","sources":["../../../src/storage/accessors/QuintStoreSparqlDataAccessor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * QuintStoreSparqlDataAccessor - Data accessor using QuintStore\n * \n * Key features:\n * 1. Graph prefix filtering for efficient subgraph queries\n * 2. Backend-agnostic storage (SQLite, PostgreSQL, etc.)\n * 3. Future: vector similarity search\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport { Readable } from 'node:stream';\nimport arrayifyStream from 'arrayify-stream';\n\nimport { DataFactory } from 'n3';\nimport type { NamedNode, Quad, Term } from '@rdfjs/types';\nimport type {\n ConstructQuery,\n GraphPattern,\n GraphQuads,\n InsertDeleteOperation,\n SparqlGenerator,\n Update,\n UpdateOperation,\n} from 'sparqljs';\nimport { Generator } from 'sparqljs';\nimport {\n DataAccessor,\n RepresentationMetadata,\n IdentifierStrategy,\n addResourceMetadata,\n updateModifiedDate,\n \n type Representation,\n type ResourceIdentifier,\n INTERNAL_QUADS,\n ConflictHttpError,\n NotFoundHttpError,\n NotImplementedHttpError,\n UnsupportedMediaTypeHttpError,\n guardStream,\n type Guarded,\n isContainerIdentifier,\n CONTENT_TYPE_TERM,\n LDP,\n createErrorMessage,\n} from '@solid/community-server';\n\nimport type { QuintStore, Quint } from '../quint/types';\nimport { ComunicaQuintEngine } from '../sparql/ComunicaQuintEngine';\nimport type { RdfSourceInput } from '../rdf/types';\n\nconst { defaultGraph, namedNode, quad, variable } = DataFactory;\n\nexport class QuintStoreSparqlDataAccessor implements DataAccessor {\n protected readonly logger = getLoggerFor(this);\n private readonly identifierStrategy: IdentifierStrategy;\n private readonly store: QuintStore;\n private readonly engine: ComunicaQuintEngine;\n private readonly generator: SparqlGenerator;\n private readonly baseUrl: string;\n private initialized = false;\n private initializing: Promise<void> | null = null;\n\n public constructor(\n store: QuintStore,\n identifierStrategy: IdentifierStrategy,\n ) {\n this.store = store;\n this.identifierStrategy = identifierStrategy;\n this.generator = new Generator();\n this.engine = new ComunicaQuintEngine(this.store);\n // Get baseUrl from identifierStrategy\n const strategy = identifierStrategy as unknown as { baseUrl?: string };\n this.baseUrl = strategy.baseUrl ?? '';\n this.logger.info(`QuintStoreSparqlDataAccessor initialized with identifierStrategy: ${identifierStrategy.constructor.name}, baseUrl: ${this.baseUrl || 'N/A'}`);\n }\n\n /**\n * Initialize the store (open database connection)\n */\n public async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\n this.initializing ??= this.initializeStore().finally(() => {\n this.initializing = null;\n });\n\n await this.initializing;\n }\n\n private async initializeStore(): Promise<void> {\n await this.store.open();\n this.initialized = true;\n this.logger.info('QuintStore initialized');\n }\n\n /**\n * Close the store\n */\n public async finalize(): Promise<void> {\n if (this.initializing) {\n await this.initializing.catch(() => {});\n }\n if (this.initialized) {\n await this.store.close();\n this.initialized = false;\n this.logger.info('QuintStore closed');\n }\n }\n\n /**\n * Only Quad data streams are supported.\n */\n public async canHandle(representation: Representation): Promise<void> {\n if (representation.binary || representation.metadata.contentType !== INTERNAL_QUADS) {\n throw new UnsupportedMediaTypeHttpError('Only Quad data is supported.');\n }\n }\n\n /**\n * Returns all triples stored for the corresponding identifier.\n */\n public async getData(identifier: ResourceIdentifier): Promise<Guarded<Readable>> {\n await this.initialize();\n const name = namedNode(identifier.path);\n return this.sendSparqlConstruct(this.sparqlConstruct(name));\n }\n\n /**\n * Returns the metadata for the corresponding identifier.\n */\n public async getMetadata(identifier: ResourceIdentifier): Promise<RepresentationMetadata> {\n console.log(`[getMetadata] Starting for ${identifier.path}`);\n await this.initialize();\n const name = namedNode(identifier.path);\n const query = this.sparqlConstruct(this.getMetadataNode(name));\n console.log(`[getMetadata] Sending CONSTRUCT for ${identifier.path}`);\n const stream = await this.sendSparqlConstruct(query);\n console.log(`[getMetadata] Got stream for ${identifier.path}, reading...`);\n const quads: Quad[] = await arrayifyStream(stream);\n console.log(`[getMetadata] Read ${quads.length} quads for ${identifier.path}`);\n\n if (quads.length === 0) {\n throw new NotFoundHttpError();\n }\n\n const metadata = new RepresentationMetadata(identifier).addQuads(quads);\n // Only set default contentType if not already present in metadata\n if (!isContainerIdentifier(identifier) && !metadata.contentType) {\n metadata.contentType = INTERNAL_QUADS;\n }\n\n return metadata;\n }\n\n public async* getChildren(identifier: ResourceIdentifier): AsyncIterableIterator<RepresentationMetadata> {\n await this.initialize();\n const name = namedNode(identifier.path);\n const stream = await this.sendSparqlConstruct(this.sparqlConstruct(name));\n for await (const entry of stream) {\n yield new RepresentationMetadata((entry as Quad).object as NamedNode);\n }\n }\n\n /**\n * Writes the given metadata for the container.\n */\n public async writeContainer(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n console.log(`[writeContainer] Starting for ${identifier.path}`);\n await this.initialize();\n addResourceMetadata(metadata, true);\n updateModifiedDate(metadata);\n const { name, parent } = this.getRelatedNames(identifier);\n console.log(`[writeContainer] Sending SPARQL update for ${identifier.path}, parent: ${parent?.value || 'none'}`);\n console.log(`[writeContainer] Metadata quads: ${metadata.quads().length}`);\n const result = await this.sendSparqlUpdate(this.sparqlInsert(name, metadata, parent));\n console.log(`[writeContainer] Completed for ${identifier.path}`);\n return result;\n }\n\n /**\n * Reads the given data stream and stores it together with the metadata.\n */\n public async writeDocument(\n identifier: ResourceIdentifier,\n data: Guarded<Readable>,\n metadata: RepresentationMetadata,\n ): Promise<void> {\n console.log(`[writeDocument] Starting for ${identifier.path}`);\n await this.initialize();\n if (this.isMetadataIdentifier(identifier)) {\n throw new ConflictHttpError('Not allowed to create NamedNodes with the metadata extension.');\n }\n const { name, parent } = this.getRelatedNames(identifier);\n console.log(`[writeDocument] Reading stream for ${identifier.path}`);\n\n // 添加超时处理\n const timeoutMs = 5000;\n const triplesPromise = arrayifyStream<Quad>(data);\n const timeoutPromise = new Promise<never>((_, reject) => {\n setTimeout(() => reject(new Error(`arrayifyStream timed out after ${timeoutMs}ms`)), timeoutMs);\n });\n \n let triples: Quad[];\n try {\n triples = await Promise.race([triplesPromise, timeoutPromise]);\n console.log(`[writeDocument] Read ${triples.length} triples for ${identifier.path}`);\n } catch (e: any) {\n console.error(`[writeDocument] Failed to read stream for ${identifier.path}:`, e?.message || e);\n throw e;\n }\n \n const def = defaultGraph();\n if (triples.some((triple): boolean => !def.equals(triple.graph))) {\n throw new NotImplementedHttpError('Only triples in the default graph are supported.');\n }\n\n metadata.removeAll(CONTENT_TYPE_TERM);\n console.log(`[writeDocument] Sending SPARQL update for ${identifier.path}`);\n const result = await this.sendSparqlUpdate(this.sparqlInsert(name, metadata, parent, triples));\n console.log(`[writeDocument] Completed for ${identifier.path}`);\n return result;\n }\n\n public async writeRdfSourceDocument(\n identifier: ResourceIdentifier,\n quads: Quad[],\n metadata: RepresentationMetadata,\n source: RdfSourceInput,\n ): Promise<void> {\n await this.initialize();\n\n const sourceScopedStore = this.sourceScopedStore();\n if (!sourceScopedStore) {\n await this.writeDocument(identifier, guardStream(Readable.from(quads)), metadata);\n return;\n }\n\n if (this.isMetadataIdentifier(identifier)) {\n throw new ConflictHttpError('Not allowed to create NamedNodes with the metadata extension.');\n }\n\n const def = defaultGraph();\n if (quads.some((triple): boolean => !def.equals(triple.graph))) {\n throw new NotImplementedHttpError('Only triples in the default graph are supported.');\n }\n\n metadata.removeAll(CONTENT_TYPE_TERM);\n const { name, parent } = this.getRelatedNames(identifier);\n await this.replaceCompatibilityMetadata(name, metadata, parent);\n await sourceScopedStore.replaceSource(\n quads.map((value) => quad(value.subject, value.predicate, value.object, name)),\n source,\n );\n }\n\n public async deleteRdfSourceDocument(identifier: ResourceIdentifier): Promise<void> {\n await this.initialize();\n\n const sourceScopedStore = this.sourceScopedStore();\n if (!sourceScopedStore) {\n await this.deleteResource(identifier);\n return;\n }\n\n const { name, parent } = this.getRelatedNames(identifier);\n const metaName = this.getMetadataNode(name);\n await sourceScopedStore.deleteSource(identifier.path);\n await this.store.del({ graph: metaName });\n if (parent) {\n await this.store.del({\n graph: parent,\n subject: parent,\n predicate: LDP.terms.contains,\n object: name,\n });\n }\n }\n\n /**\n * Reads the metadata and stores it.\n */\n public async writeMetadata(identifier: ResourceIdentifier, metadata: RepresentationMetadata): Promise<void> {\n await this.initialize();\n const { name, parent } = this.getRelatedNames(identifier);\n const metaName = this.getMetadataNode(name);\n return this.sendSparqlUpdate(this.sparqlInsertMetadata(metaName, metadata, parent, name));\n }\n\n /**\n * Removes all graph data relevant to the given identifier.\n */\n public async deleteResource(identifier: ResourceIdentifier): Promise<void> {\n await this.initialize();\n const { name, parent } = this.getRelatedNames(identifier);\n return this.sendSparqlUpdate(this.sparqlDelete(name, parent));\n }\n\n // ============================================\n // QuintStore specific methods\n // ============================================\n\n /**\n * Get data with graph prefix filtering (key feature!)\n * This is much more efficient than full SPARQL for subgraph queries.\n */\n public async getDataByGraphPrefix(prefix: string): Promise<Quint[]> {\n await this.initialize();\n return this.store.getByGraphPrefix(prefix);\n }\n\n /**\n * Execute SPARQL query with graph prefix filtering\n */\n public async queryWithGraphPrefix(\n query: string,\n graphPrefix: string,\n ): Promise<Quad[]> {\n await this.initialize();\n const stream = await this.engine.queryBindings(query, { graphPrefix });\n return arrayifyStream(stream);\n }\n\n // ============================================\n // Private helpers\n // ============================================\n\n private getRelatedNames(identifier: ResourceIdentifier): { name: NamedNode; parent?: NamedNode } {\n const name = namedNode(identifier.path);\n\n if (this.identifierStrategy.isRootContainer(identifier)) {\n return { name };\n }\n\n const parentIdentifier = this.identifierStrategy.getParentContainer(identifier);\n const parent = namedNode(parentIdentifier.path);\n return { name, parent };\n }\n\n protected getMetadataNode(name: NamedNode): NamedNode {\n return namedNode(`meta:${name.value}`);\n }\n\n private isMetadataIdentifier(identifier: ResourceIdentifier): boolean {\n return identifier.path.startsWith('meta:');\n }\n\n protected sparqlConstruct(name: NamedNode): ConstructQuery {\n const pattern = quad(variable('s'), variable('p'), variable('o'));\n return {\n queryType: 'CONSTRUCT',\n template: [pattern],\n where: [this.sparqlSelectGraph(name, [pattern])],\n type: 'query',\n prefixes: {},\n };\n }\n\n private sparqlSelectGraph(name: NamedNode, triples: Quad[]): GraphPattern {\n return {\n type: 'graph',\n name,\n patterns: [{ type: 'bgp', triples }],\n } as GraphPattern;\n }\n\n private sparqlSelectGraphAsQuads(name: NamedNode, triples: Quad[]): any {\n return this.sparqlSelectGraph(name, triples);\n }\n\n /**\n * Creates an update query that overwrites the data and metadata of a resource.\n * If triples is undefined, we assume it's a container (so don't overwrite the main graph with containment triples).\n * This follows the same pattern as CSS's SparqlDataAccessor.\n *\n * @param name - Name of the resource to update.\n * @param metadata - New metadata of the resource.\n * @param parent - Name of the parent to update the containment triples.\n * @param triples - New data of the resource (undefined for containers).\n */\n private sparqlInsert(\n name: NamedNode,\n metadata: RepresentationMetadata,\n parent?: NamedNode,\n triples?: Quad[],\n ): Update {\n const metaName = this.getMetadataNode(name);\n\n // Insert new metadata and containment triple\n const insert: GraphQuads[] = [\n {\n type: 'graph',\n name: metaName,\n triples: metadata.quads() as Quad[],\n },\n ];\n\n if (parent) {\n insert.push({\n type: 'graph',\n name: parent,\n triples: [quad(parent, LDP.terms.contains, name)],\n });\n }\n\n // Necessary updates: delete metadata and insert new data\n const updates: InsertDeleteOperation[] = [\n // Always delete and reinsert metadata\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n {\n updateType: 'insert',\n insert,\n },\n ];\n\n // Only overwrite data triples for documents (when triples is defined)\n // For containers, we don't touch the data graph to preserve ldp:contains triples\n if (triples !== undefined) {\n // This needs to be first so it happens before the insert\n updates.unshift({\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(name, [quad(variable('s'), variable('p'), variable('o'))])],\n });\n\n if (triples.length > 0) {\n insert.push({\n type: 'graph',\n name,\n triples,\n });\n }\n }\n\n return {\n type: 'update',\n updates,\n prefixes: {},\n };\n }\n\n private sparqlInsertMetadata(\n metaName: NamedNode,\n metadata: RepresentationMetadata,\n parent?: NamedNode,\n name?: NamedNode,\n ): Update {\n const metaGraphs: GraphQuads = {\n type: 'graph',\n name: metaName,\n triples: metadata.quads() as Quad[],\n };\n const insert: GraphQuads[] = [metaGraphs];\n if (parent && name) {\n insert.push({\n type: 'graph',\n name: parent,\n triples: [quad(parent, LDP.terms.contains, name)],\n });\n }\n\n const deleteOp: InsertDeleteOperation = {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n };\n\n const insertOp: InsertDeleteOperation = {\n updateType: 'insert',\n insert,\n };\n\n return {\n type: 'update',\n updates: [deleteOp, insertOp],\n prefixes: {},\n };\n }\n\n private sparqlDelete(name: NamedNode, parent?: NamedNode): Update {\n const metaName = this.getMetadataNode(name);\n\n const updates: UpdateOperation[] = [\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(name, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n {\n updateType: 'deletewhere',\n delete: [this.sparqlSelectGraphAsQuads(metaName, [quad(variable('s'), variable('p'), variable('o'))])],\n },\n ];\n\n if (parent) {\n updates.push({\n updateType: 'deletewhere',\n delete: [{\n type: 'graph',\n name: parent,\n triples: [quad(parent, LDP.terms.contains, name)],\n }],\n });\n }\n\n return {\n type: 'update',\n updates,\n prefixes: {},\n };\n }\n\n private async sendSparqlConstruct(query: ConstructQuery): Promise<Guarded<Readable>> {\n const queryString = this.generator.stringify(query);\n this.logger.verbose(`SPARQL CONSTRUCT: ${queryString}`);\n\n try {\n const quadStream = await this.engine.queryQuads(queryString);\n return guardStream(Readable.from(quadStream as unknown as AsyncIterable<any>));\n } catch (error: unknown) {\n this.logger.error(`SPARQL query failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n\n private async sendSparqlUpdate(query: Update): Promise<void> {\n const queryString = this.generator.stringify(query);\n this.logger.verbose(`SPARQL UPDATE: ${queryString}`);\n\n try {\n await this.engine.queryVoid(queryString);\n } catch (error: unknown) {\n this.logger.error(`SPARQL update failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n\n private sourceScopedStore(): {\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n } | undefined {\n const store = this.store as Partial<{\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n }>;\n if (typeof store.replaceSource === 'function' && typeof store.deleteSource === 'function') {\n return store as {\n replaceSource(quints: Quint[], source: RdfSourceInput): Promise<void>;\n deleteSource(source: string): Promise<number>;\n };\n }\n return undefined;\n }\n\n private async replaceCompatibilityMetadata(\n name: NamedNode,\n metadata: RepresentationMetadata,\n parent?: NamedNode,\n ): Promise<void> {\n const metaName = this.getMetadataNode(name);\n await this.store.del({ graph: metaName });\n const inserts: Quint[] = metadata.quads().map((value) => quad(\n value.subject,\n value.predicate,\n value.object,\n metaName,\n ) as Quint);\n if (parent) {\n inserts.push(quad(parent, LDP.terms.contains, name, parent) as Quint);\n }\n if (inserts.length > 0) {\n await this.store.multiPut(inserts);\n }\n }\n\n /**\n * Execute a SPARQL UPDATE query string directly.\n * Used by SparqlUpdateResourceStore for LDP PATCH operations.\n */\n public async executeSparqlUpdate(query: string, baseIri?: string): Promise<void> {\n this.logger.verbose(`executeSparqlUpdate: ${query}`);\n try {\n await this.engine.queryVoid(query);\n } catch (error: unknown) {\n this.logger.error(`SPARQL update failed: ${createErrorMessage(error)}`);\n throw error;\n }\n }\n}\n"]}
@@ -55,8 +55,33 @@ export declare class SqliteQuintStore {
55
55
  private estimatePageSize;
56
56
  clear(): Promise<void>;
57
57
  private ensureOpen;
58
- private buildConditions;
58
+ private ensureTypedObjectSchema;
59
+ private addColumnIfMissing;
60
+ private backfillMissingObjectIndexFields;
61
+ private buildSelectQuery;
62
+ private buildWhereClause;
63
+ private addTermConditions;
64
+ private serializeOpValue;
65
+ private addObjectConditions;
66
+ private addObjectExactCondition;
67
+ private addObjectExactValueCondition;
68
+ private addObjectExactSerializedCondition;
69
+ private addObjectComparableCondition;
70
+ private addObjectTextCondition;
71
+ private addObjectLexicalStringCondition;
72
+ private addObjectLanguageCondition;
59
73
  private objectLexicalSql;
74
+ private objectPredicateForOperatorValue;
75
+ private objectFieldsForOperatorValue;
76
+ private objectIndexForTerm;
77
+ private objectIndexForSerialized;
78
+ private objectFieldsForPrefix;
79
+ private objectDigestForIndex;
80
+ private assertComparableObject;
81
+ private extractExactPredicate;
82
+ private resolveObjectDataTypeForPattern;
83
+ private predicateForIndex;
84
+ private writeStatementForRow;
60
85
  private quintToRow;
61
86
  private rowToQuint;
62
87
  }