@undefineds.co/xpod 0.3.14 → 0.3.16

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 (76) 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/output.d.ts +23 -0
  41. package/dist/cli/lib/output.js +63 -0
  42. package/dist/cli/lib/output.js.map +1 -0
  43. package/dist/cli/lib/resource.d.ts +29 -0
  44. package/dist/cli/lib/resource.js +114 -0
  45. package/dist/cli/lib/resource.js.map +1 -0
  46. package/dist/components/context.jsonld +6 -0
  47. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.d.ts +11 -10
  48. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js +13 -24
  49. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.js.map +1 -1
  50. package/dist/identity/oidc/AutoDetectIdentityProviderHandler.jsonld +4 -4
  51. package/dist/identity/oidc/AutoDetectOidcHandler.d.ts +8 -4
  52. package/dist/identity/oidc/AutoDetectOidcHandler.js +10 -6
  53. package/dist/identity/oidc/AutoDetectOidcHandler.js.map +1 -1
  54. package/dist/identity/oidc/AutoDetectOidcHandler.jsonld +3 -3
  55. package/dist/storage/accessors/MixDataAccessor.js +3 -0
  56. package/dist/storage/accessors/MixDataAccessor.js.map +1 -1
  57. package/dist/storage/quint/SqliteQuintStore.d.ts +26 -1
  58. package/dist/storage/quint/SqliteQuintStore.js +551 -318
  59. package/dist/storage/quint/SqliteQuintStore.js.map +1 -1
  60. package/dist/storage/quint/SqliteQuintStore.jsonld +102 -2
  61. package/dist/storage/quint/schema.d.ts +76 -0
  62. package/dist/storage/quint/schema.js +13 -7
  63. package/dist/storage/quint/schema.js.map +1 -1
  64. package/dist/storage/rdf/RdfLocalQueryEngine.d.ts +4 -1
  65. package/dist/storage/rdf/RdfLocalQueryEngine.js +77 -8
  66. package/dist/storage/rdf/RdfLocalQueryEngine.js.map +1 -1
  67. package/dist/storage/rdf/SolidRdfEngine.d.ts +5 -0
  68. package/dist/storage/rdf/SolidRdfEngine.js +31 -3
  69. package/dist/storage/rdf/SolidRdfEngine.js.map +1 -1
  70. package/dist/storage/rdf/SolidRdfEngine.jsonld +34 -0
  71. package/dist/storage/sparql/ComunicaQuintEngine.js +16 -3
  72. package/dist/storage/sparql/ComunicaQuintEngine.js.map +1 -1
  73. package/package.json +1 -1
  74. package/dist/cli/commands/config.d.ts +0 -42
  75. package/dist/cli/commands/config.js +0 -289
  76. package/dist/cli/commands/config.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj.js","sourceRoot":"","sources":["../../../src/cli/commands/obj.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Argv, CommandModule } from 'yargs';\nimport { readFileSync, writeFileSync } from 'fs';\nimport {\n createPodStorage,\n podSchema,\n type PodModelDescriptor,\n type PodModelFieldDescriptor,\n type PodStorageMutationPlan,\n} from '@undefineds.co/models';\nimport { requireAuthContext, type CliAuthContext } from '../lib/auth-context';\nimport { CliCommandError, handleCliError, writeJsonItems, writeJsonResult } from '../lib/output';\nimport {\n ensureOk,\n fetchResource,\n readBodyFile,\n resolveResourceTarget,\n responseData,\n} from '../lib/resource';\nimport { documentResourceInput, resolveSparqlEndpoint } from './rdf';\n\ninterface ObjArgs {\n url?: string;\n json: boolean;\n}\n\ninterface ObjImportArgs extends ObjArgs {\n file: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjUpsertArgs extends ObjArgs {\n schema: string;\n from: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjSelectorArgs extends ObjArgs {\n selector?: string;\n schema?: string;\n subject?: string;\n resource?: string;\n path?: string;\n where?: string;\n status?: string;\n relation?: string[];\n format: string;\n out?: string;\n limit: number;\n since?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjGetArgs extends ObjArgs {\n schema?: string;\n subject: string;\n out?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjPatchArgs extends ObjArgs {\n schema?: string;\n subject: string;\n set: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjLinkArgs extends ObjArgs {\n schema?: string;\n subject: string;\n predicate: string;\n object: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjDeleteArgs extends ObjArgs {\n schema?: string;\n subject: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjMutationRow {\n op?: string;\n schema?: string;\n match?: Record<string, unknown>;\n set?: Record<string, unknown>;\n subject?: string;\n path?: string;\n resource?: string;\n predicate?: string;\n object?: string;\n ifMatch?: string;\n body?: string;\n from?: string;\n contentType?: string;\n}\n\ninterface ResolvedObjSelector {\n descriptor: PodModelDescriptor;\n subject?: string;\n resourceUrl?: string;\n where: Record<string, unknown>;\n relations: Record<string, string>;\n limit: number;\n includeMetadata: boolean;\n}\n\ninterface DescriptorObject {\n schema: string;\n subject: string;\n resourceUrl: string;\n etag?: string | null;\n revision?: string | null;\n object: Record<string, unknown>;\n}\n\ntype SparqlBinding = {\n type?: string;\n value?: string;\n datatype?: string;\n};\n\ntype ItemResult = {\n index: number;\n ok: boolean;\n code: string;\n message?: string;\n [key: string]: unknown;\n};\n\nfunction objOptions<T>(yargs: Argv): Argv<T> {\n return yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL override',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Output JSON envelope',\n }) as unknown as Argv<T>;\n}\n\nfunction selectorOptions<T extends ObjSelectorArgs>(yargs: Argv): Argv<T> {\n return objOptions<T>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', description: 'Exact object subject URI or Pod-relative subject' })\n .option('resource', { type: 'string', description: 'Exact RDF document/resource URI or Pod-relative path' })\n .option('path', { type: 'string', description: 'Pod-relative resource path' })\n .option('where', { type: 'string', description: 'JSON object of descriptor field filters' })\n .option('status', { type: 'string', description: 'Shortcut for --where {\"status\": \"...\"} when the descriptor has a status field' })\n .option('relation', { type: 'array', string: true, description: 'Descriptor URI relation filter, field=uri. Repeatable.' })\n .option('limit', { type: 'number', default: 100, description: 'Maximum number of rows' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }) as unknown as Argv<T>;\n}\n\nfunction mutationModeCheck(argv: { 'dry-run'?: boolean; commit?: boolean }): true {\n if (argv['dry-run'] === argv.commit) {\n throw new Error('Specify exactly one of --dry-run or --commit.');\n }\n return true;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction parseJsonObject(value: string, code: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError(code, message, 2);\n }\n}\n\nasync function readStdinText(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nasync function readTextInput(input: string): Promise<string> {\n return input === '-' ? readStdinText() : readFileSync(input, 'utf-8');\n}\n\nasync function readJsonl(input: string): Promise<ObjMutationRow[]> {\n return (await readTextInput(input))\n .split(/\\r?\\n/u)\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n try {\n const parsed = JSON.parse(line) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed as ObjMutationRow;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError('invalid_jsonl', `Invalid JSONL at line ${index + 1}: ${message}`, 2);\n }\n });\n}\n\nfunction descriptorLocalName(value: string): string {\n return value.split(/[\\/#]/u).filter(Boolean).pop() ?? value;\n}\n\nfunction resolveDescriptorOrNull(schema: string): PodModelDescriptor | null {\n const exact = podSchema.describe({ schemaUri: schema });\n if (exact) return exact;\n\n const normalized = schema.trim().toLowerCase();\n return podSchema.list().find((descriptor) =>\n descriptor.resourceKind.toLowerCase() === normalized ||\n descriptorLocalName(descriptor.uri).toLowerCase() === normalized ||\n descriptorLocalName(descriptor.class).toLowerCase() === normalized,\n ) ?? null;\n}\n\nfunction resolveDescriptor(schema: string): PodModelDescriptor {\n const descriptor = resolveDescriptorOrNull(schema);\n if (!descriptor) {\n throw new CliCommandError('schema_unknown', `Schema is not known by @undefineds.co/models: ${schema}`, 2);\n }\n return descriptor;\n}\n\nfunction resourceUrlFromPlan(podRoot: string, plan: PodStorageMutationPlan): string {\n return new URL(plan.resourceUri.replace(/^\\/+/, ''), podRoot).toString();\n}\n\nfunction varName(field: string): string {\n return `v_${field.replace(/[^A-Za-z0-9_]/gu, '_')}`;\n}\n\nfunction fieldVar(field: string): string {\n return `?${varName(field)}`;\n}\n\nfunction sparqlIri(value: string): string {\n if (!/^https?:\\/\\//iu.test(value)) {\n throw new CliCommandError('invalid_uri', `Expected an absolute URI: ${value}`, 2);\n }\n return `<${value.replace(/[<>]/gu, '')}>`;\n}\n\nfunction sparqlValue(value: unknown, field?: PodModelFieldDescriptor): string {\n if (field?.type === 'uri') {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_uri', `Field expects a URI value: ${String(value)}`, 2);\n }\n return sparqlIri(value);\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return JSON.stringify(value);\n }\n if (field?.type === 'json') {\n return JSON.stringify(JSON.stringify(value));\n }\n return JSON.stringify(String(value));\n}\n\nfunction assertKnownFields(descriptor: PodModelDescriptor, values: Record<string, unknown>, code = 'field_unknown'): void {\n const unknown = Object.keys(values).filter((field) => !descriptor.fields[field]);\n if (unknown.length > 0) {\n throw new CliCommandError(code, `Fields are not known by descriptor ${descriptor.uri}: ${unknown.join(', ')}`, 2);\n }\n}\n\nfunction assertWritableFields(descriptor: PodModelDescriptor, values: Record<string, unknown>): void {\n assertKnownFields(descriptor, values);\n const invalid = Object.keys(values).filter((field) => !descriptor.writableFields.includes(field));\n if (invalid.length > 0) {\n throw new CliCommandError('invalid_set_fields', `Fields are not writable: ${invalid.join(', ')}`, 2);\n }\n}\n\nexport function redactDescriptorObject(descriptor: PodModelDescriptor, value: Record<string, unknown>): Record<string, unknown> {\n const redacted: Record<string, unknown> = {};\n for (const [ key, item ] of Object.entries(value)) {\n redacted[key] = descriptor.fields[key]?.secret ? '[redacted]' : item;\n }\n return redacted;\n}\n\nexport function buildDescriptorUpsertSparql(descriptor: PodModelDescriptor, subject: string, row: ObjMutationRow): string {\n const fields = descriptor.fields;\n const match = row.match ?? {};\n const set = row.set ?? {};\n assertKnownFields(descriptor, match);\n assertWritableFields(descriptor, set);\n\n const merged = { ...match, ...set };\n const deleteFields = Object.keys(set).filter((field) => fields[field]);\n const deletes = deleteFields.map((field) =>\n `<${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} .`,\n );\n const optionals = deleteFields.map((field) =>\n `OPTIONAL { <${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} }`,\n );\n const inserts = [\n `<${subject}> a <${descriptor.class}>`,\n ...Object.entries(merged)\n .filter(([ field, value ]) => fields[field] && value !== undefined && value !== null)\n .map(([ field, value ]) => `<${subject}> <${fields[field].predicate}> ${sparqlValue(value, fields[field])}`),\n ];\n\n return `DELETE {\\n ${deletes.join('\\n ')}\\n}\\nINSERT {\\n ${inserts.join(' .\\n ')} .\\n}\\nWHERE {\\n ${optionals.join('\\n ')}\\n}`;\n}\n\nexport function buildDescriptorPatchSparql(descriptor: PodModelDescriptor, subject: string, set: Record<string, unknown>): string {\n return buildDescriptorUpsertSparql(descriptor, subject, { set });\n}\n\nexport function buildDescriptorLinkSparql(subject: string, predicate: string, object: string): string {\n return `INSERT DATA {\\n <${subject}> <${predicate}> ${sparqlIri(object)} .\\n}`;\n}\n\nexport function buildDescriptorDeleteSparql(subject: string): string {\n return `DELETE {\\n <${subject}> ?p ?o .\\n}\\nWHERE {\\n <${subject}> ?p ?o .\\n}`;\n}\n\nfunction parseWhere(where?: string): Record<string, unknown> {\n return where ? parseJsonObject(where, 'invalid_where') : {};\n}\n\nexport function extractReservedWhereSelectors(where: Record<string, unknown>): {\n where: Record<string, unknown>;\n subject?: string;\n resource?: string;\n path?: string;\n} {\n const filters = { ...where };\n const selectors: { subject?: string; resource?: string; path?: string } = {};\n\n for (const key of [ 'subject', 'resource', 'path' ] as const) {\n const value = filters[key];\n if (value === undefined) continue;\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_where', `Reserved selector field \"${key}\" must be a string.`, 2);\n }\n selectors[key] = value;\n delete filters[key];\n }\n\n return { where: filters, ...selectors };\n}\n\nfunction applyReservedSelector(\n current: string | undefined,\n reserved: string | undefined,\n key: 'subject' | 'resource' | 'path',\n): string | undefined {\n if (!reserved) return current;\n if (current && current !== reserved) {\n throw new CliCommandError('selector_conflict', `Conflicting ${key} selectors were provided.`, 2);\n }\n return reserved;\n}\n\nfunction parseRelations(input?: string[]): Record<string, string> {\n const relations: Record<string, string> = {};\n for (const item of input ?? []) {\n const trimmed = item.trim();\n if (!trimmed) continue;\n if (trimmed.startsWith('{')) {\n const parsed = parseJsonObject(trimmed, 'invalid_relation');\n for (const [ key, value ] of Object.entries(parsed)) {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_relation', `Relation filter ${key} must be a URI string.`, 2);\n }\n relations[key] = value;\n }\n continue;\n }\n const eq = trimmed.indexOf('=');\n if (eq <= 0) {\n throw new CliCommandError('invalid_relation', `Relation filter must be field=uri: ${trimmed}`, 2);\n }\n relations[trimmed.slice(0, eq)] = trimmed.slice(eq + 1);\n }\n return relations;\n}\n\nfunction classifySelector(selector: string): 'schema' | 'subject' | 'resource' | 'path' {\n if (resolveDescriptorOrNull(selector)) return 'schema';\n if (selector.includes('#')) return 'subject';\n if (/^https?:\\/\\//iu.test(selector)) return 'resource';\n if (selector.includes('/')) return 'path';\n return 'schema';\n}\n\nasync function inferDescriptorForSubject(context: CliAuthContext, subject: string): Promise<PodModelDescriptor> {\n const target = resolveResourceTarget(context, documentResourceInput(subject));\n const response = await fetchResource(context, target, {\n method: 'GET',\n headers: { Accept: 'text/turtle' },\n });\n ensureOk(response, response.status === 404 ? 'resource_not_found' : 'schema_infer_failed', `Failed to infer schema from ${subject}`);\n const body = await response.text();\n const matches = podSchema.list().filter((descriptor) => body.includes(`<${descriptor.class}>`));\n if (matches.length === 1) {\n return matches[0];\n }\n if (matches.length > 1) {\n throw new CliCommandError('schema_ambiguous', 'Multiple known descriptor classes were found. Re-run with --schema.', 2, {\n schemas: matches.map((descriptor) => descriptor.uri),\n });\n }\n throw new CliCommandError('schema_required', 'Could not infer a known schema from the subject document. Re-run with --schema.', 2);\n}\n\nasync function resolveObjectSelector(context: CliAuthContext, argv: ObjSelectorArgs): Promise<ResolvedObjSelector> {\n let schema = argv.schema;\n let subject = argv.subject;\n let resource = argv.resource;\n let path = argv.path;\n\n if (argv.selector) {\n const kind = classifySelector(argv.selector);\n if (kind === 'schema' && !schema) schema = argv.selector;\n if (kind === 'subject' && !subject) subject = argv.selector;\n if (kind === 'resource' && !resource) resource = argv.selector;\n if (kind === 'path' && !path) path = argv.selector;\n }\n\n const parsedWhere = parseWhere(argv.where);\n if (argv.status !== undefined) {\n parsedWhere.status = argv.status;\n }\n const {\n where,\n subject: whereSubject,\n resource: whereResource,\n path: wherePath,\n } = extractReservedWhereSelectors(parsedWhere);\n\n subject = applyReservedSelector(subject, whereSubject, 'subject');\n resource = applyReservedSelector(resource, whereResource, 'resource');\n path = applyReservedSelector(path, wherePath, 'path');\n\n const subjectUrl = subject ? resolveResourceTarget(context, subject).resourceUrl : undefined;\n const resourceUrl = resource\n ? resolveResourceTarget(context, documentResourceInput(resource)).resourceUrl\n : path\n ? resolveResourceTarget(context, documentResourceInput(path)).resourceUrl\n : subjectUrl\n ? documentResourceInput(subjectUrl)\n : undefined;\n\n const descriptor = schema\n ? resolveDescriptor(schema)\n : subjectUrl\n ? await inferDescriptorForSubject(context, subjectUrl)\n : undefined;\n\n if (!descriptor) {\n throw new CliCommandError('schema_required', 'Object selectors require --schema, a schema selector, or an exact subject with an inferable RDF type.', 2);\n }\n\n return {\n descriptor,\n subject: subjectUrl,\n resourceUrl,\n where,\n relations: parseRelations(argv.relation),\n limit: Math.max(1, Math.min(argv.limit || 100, 10000)),\n includeMetadata: argv['include-metadata'] !== false,\n };\n}\n\nfunction queryFilterTerm(field: PodModelFieldDescriptor, value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => sparqlValue(item, field)).join(' ');\n }\n return sparqlValue(value, field);\n}\n\nexport function buildDescriptorObjectQuery(selector: ResolvedObjSelector): string {\n const descriptor = selector.descriptor;\n assertKnownFields(descriptor, selector.where);\n\n const triples = [ `?subject a <${descriptor.class}> .` ];\n if (selector.subject) {\n triples.push(`VALUES ?subject { <${selector.subject}> }`);\n }\n if (selector.resourceUrl) {\n triples.push(`FILTER(STR(?subject) = ${JSON.stringify(selector.resourceUrl)} || STRSTARTS(STR(?subject), ${JSON.stringify(`${selector.resourceUrl}#`)}))`);\n }\n\n for (const [ field, fieldDescriptor ] of Object.entries(descriptor.fields)) {\n triples.push(`OPTIONAL { ?subject <${fieldDescriptor.predicate}> ${fieldVar(field)} . }`);\n }\n\n for (const [ field, value ] of Object.entries(selector.where)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) continue;\n if (Array.isArray(value)) {\n triples.push(`VALUES ${fieldVar(`filter_${field}`)} { ${queryFilterTerm(descriptorField, value)} }`);\n triples.push(`?subject <${descriptorField.predicate}> ${fieldVar(`filter_${field}`)} .`);\n } else {\n triples.push(`?subject <${descriptorField.predicate}> ${queryFilterTerm(descriptorField, value)} .`);\n }\n }\n\n for (const [ field, objectUri ] of Object.entries(selector.relations)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) {\n throw new CliCommandError('predicate_unknown', `Relation field is not known by descriptor ${descriptor.uri}: ${field}`, 2);\n }\n if (descriptorField.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${field}`, 2);\n }\n triples.push(`?subject <${descriptorField.predicate}> ${sparqlIri(objectUri)} .`);\n }\n\n const fieldVars = Object.keys(descriptor.fields).map(fieldVar).join(' ');\n return `SELECT ?subject ${fieldVars} WHERE {\\n ${triples.join('\\n ')}\\n}\\nLIMIT ${selector.limit}`;\n}\n\nfunction bindingToValue(binding: SparqlBinding | undefined, field: PodModelFieldDescriptor): unknown {\n if (!binding?.value) return undefined;\n if (binding.type === 'uri') return binding.value;\n if (field.type === 'number') {\n const number = Number(binding.value);\n return Number.isNaN(number) ? binding.value : number;\n }\n if (field.type === 'boolean') {\n return binding.value === 'true' || binding.value === '1';\n }\n if (field.type === 'json') {\n try {\n return JSON.parse(binding.value);\n } catch {\n return binding.value;\n }\n }\n return binding.value;\n}\n\nasync function applyEtags(context: CliAuthContext, objects: DescriptorObject[]): Promise<void> {\n const cache = new Map<string, string | null>();\n for (const object of objects) {\n if (!cache.has(object.resourceUrl)) {\n try {\n const target = resolveResourceTarget(context, object.resourceUrl);\n const response = await fetchResource(context, target, { method: 'HEAD' });\n cache.set(object.resourceUrl, response.ok ? response.headers.get('etag') : null);\n } catch {\n cache.set(object.resourceUrl, null);\n }\n }\n const etag = cache.get(object.resourceUrl) ?? null;\n object.etag = etag;\n object.revision = etag;\n }\n}\n\nasync function queryDescriptorObjects(context: CliAuthContext, selector: ResolvedObjSelector): Promise<DescriptorObject[]> {\n const endpoint = resolveSparqlEndpoint(context.podRoot);\n const query = buildDescriptorObjectQuery(selector);\n const response = await fetchResource(context, {\n input: endpoint,\n resourceUrl: endpoint,\n webId: context.webId,\n podRoot: context.podRoot,\n baseIri: context.baseIri,\n }, {\n method: 'POST',\n headers: {\n Accept: 'application/sparql-results+json',\n 'Content-Type': 'application/sparql-query',\n },\n body: query,\n });\n ensureOk(response, 'obj_query_failed', `Failed to list objects for ${selector.descriptor.uri}`);\n const result = (await response.json()) as {\n results?: { bindings?: Array<Record<string, SparqlBinding>> };\n };\n\n const objects = (result.results?.bindings ?? []).flatMap((binding) => {\n const subject = binding.subject?.value;\n if (!subject) return [];\n const object: Record<string, unknown> = {};\n for (const [ field, descriptorField ] of Object.entries(selector.descriptor.fields)) {\n const value = bindingToValue(binding[varName(field)], descriptorField);\n if (value !== undefined) {\n object[field] = descriptorField.secret ? '[redacted]' : value;\n }\n }\n return [{\n schema: selector.descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n object,\n }];\n });\n\n if (selector.includeMetadata) {\n await applyEtags(context, objects);\n }\n return objects;\n}\n\nfunction jsonlForObjects(objects: DescriptorObject[]): string {\n return `${objects.map((object, index) => JSON.stringify({\n index,\n ok: true,\n code: 'ok',\n ...object,\n })).join('\\n')}${objects.length > 0 ? '\\n' : ''}`;\n}\n\nasync function patchSubject(input: {\n context: CliAuthContext;\n subject: string;\n sparql: string;\n ifMatch?: string;\n errorCode: string;\n}): Promise<ReturnType<typeof responseData>> {\n const target = resolveResourceTarget(input.context, documentResourceInput(input.subject));\n const headers: Record<string, string> = { 'Content-Type': 'application/sparql-update' };\n if (input.ifMatch) headers['If-Match'] = input.ifMatch;\n const response = await fetchResource(input.context, target, {\n method: 'PATCH',\n headers,\n body: input.sparql,\n });\n ensureOk(response, input.errorCode, `Failed to patch object ${input.subject}`);\n return responseData(target, response);\n}\n\nfunction mutationPlan(input: {\n operationId: string;\n context: CliAuthContext;\n summary: string;\n subject: string;\n schema?: string;\n etag?: string;\n change: string;\n diff?: unknown[];\n}): Record<string, unknown> {\n return {\n operationId: input.operationId,\n webId: input.context.webId,\n podRoot: input.context.podRoot,\n summary: input.summary,\n risk: 'normal',\n resources: [\n {\n subject: input.subject,\n schema: input.schema,\n etag: input.etag,\n change: input.change,\n },\n ],\n diff: input.diff ?? [],\n };\n}\n\nasync function resolveDescriptorForMutation(context: CliAuthContext, schema: string | undefined, subject: string): Promise<PodModelDescriptor> {\n return schema ? resolveDescriptor(schema) : inferDescriptorForSubject(context, subject);\n}\n\nasync function executePatchCommand(argv: ObjPatchArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const set = parseJsonObject(argv.set, 'invalid_set');\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n const plan = mutationPlan({\n operationId: `op_patch_${Date.now()}`,\n context,\n summary: `Patch one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'patch',\n diff: [ redactDescriptorObject(descriptor, set) ],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_patch_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeLinkCommand(argv: ObjLinkArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = argv.schema || !/^https?:\\/\\//iu.test(argv.predicate)\n ? await resolveDescriptorForMutation(context, argv.schema, subject)\n : undefined;\n let predicate = argv.predicate;\n if (!/^https?:\\/\\//iu.test(predicate)) {\n if (!descriptor?.fields[predicate]) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${predicate}`, 2);\n }\n const field = descriptor.fields[predicate];\n if (field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${predicate}`, 2);\n }\n predicate = field.predicate;\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, argv.object);\n const plan = mutationPlan({\n operationId: `op_link_${Date.now()}`,\n context,\n summary: 'Link one descriptor-backed object relation',\n subject,\n schema: descriptor?.uri,\n etag: argv['if-match'],\n change: 'link',\n diff: [{ predicate, object: argv.object }],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_link_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeDeleteCommand(argv: ObjDeleteArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const sparql = buildDescriptorDeleteSparql(subject);\n const plan = mutationPlan({\n operationId: `op_delete_${Date.now()}`,\n context,\n summary: `Delete one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'delete',\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_delete_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeRawRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const op = row.op;\n if (!op) {\n throw new CliCommandError('schema_required', 'JSONL row without schema must declare an explicit raw resource op.', 2);\n }\n const targetInput = row.path ?? row.resource ?? row.subject;\n if (!targetInput) {\n throw new CliCommandError('explicit_target_required', 'Raw JSONL rows must declare path, resource, or subject.', 2);\n }\n const target = resolveResourceTarget(context, row.subject ? documentResourceInput(targetInput) : targetInput);\n if (!commit) {\n return {\n index,\n ok: true,\n code: 'plan_ready',\n operation: op,\n resourceUrl: target.resourceUrl,\n webId: context.webId,\n podRoot: context.podRoot,\n };\n }\n if (![ 'put', 'patch', 'delete' ].includes(op)) {\n throw new CliCommandError('unsupported_operation', `Unsupported raw JSONL operation: ${op}`, 2);\n }\n\n const headers: Record<string, string> = {};\n let body: Buffer | string | undefined;\n if (op !== 'delete') {\n if (row.from) {\n const file = readBodyFile(row.from);\n body = file.body;\n headers['Content-Type'] = row.contentType ?? file.contentType;\n } else if (row.body !== undefined) {\n body = row.body;\n headers['Content-Type'] = row.contentType ?? 'text/plain';\n } else {\n throw new CliCommandError('body_required', `Raw ${op} rows require body or from.`, 2);\n }\n }\n if (row.ifMatch) headers['If-Match'] = row.ifMatch;\n\n const response = await fetchResource(context, target, {\n method: op.toUpperCase(),\n headers,\n body,\n });\n ensureOk(response, 'raw_commit_failed', `Failed to commit raw row ${index}`);\n return {\n index,\n ok: true,\n code: 'committed',\n operation: op,\n ...responseData(target, response),\n };\n}\n\nasync function executeDescriptorRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const descriptor = resolveDescriptor(row.schema!);\n const op = row.op ?? 'upsert';\n if (op !== 'upsert') {\n if (!row.subject) {\n throw new CliCommandError('subject_required', `Object operation ${op} requires subject.`, 2);\n }\n const subject = resolveResourceTarget(context, row.subject).resourceUrl;\n if (op === 'patch') {\n const set = row.set ?? {};\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_patch_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n set: redactDescriptorObject(descriptor, set),\n };\n }\n if (op === 'link') {\n if (!row.predicate || !row.object) {\n throw new CliCommandError('link_target_required', 'Link rows require predicate and object.', 2);\n }\n const field = descriptor.fields[row.predicate];\n const predicate = field ? field.predicate : row.predicate;\n if (field && field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${row.predicate}`, 2);\n }\n if (!field && !/^https?:\\/\\//iu.test(predicate)) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${row.predicate}`, 2);\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, row.object);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_link_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n predicate,\n object: row.object,\n };\n }\n if (op === 'delete') {\n const sparql = buildDescriptorDeleteSparql(subject);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_delete_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n };\n }\n throw new CliCommandError('unsupported_operation', `Unsupported object operation: ${op}`, 2);\n }\n\n const storage = createPodStorage();\n const validation = storage.validate({\n schemaUri: descriptor.uri,\n operation: 'upsert',\n match: row.match ?? {},\n set: row.set ?? {},\n });\n if (!validation.ok) {\n throw new CliCommandError(validation.error.code, validation.error.message, 2);\n }\n\n const subject = resourceUrlFromPlan(context.podRoot, validation.plan);\n if (commit) {\n const sparql = buildDescriptorUpsertSparql(descriptor, subject, row);\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_commit_failed' });\n }\n\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n planId: validation.plan.id,\n match: redactDescriptorObject(descriptor, row.match ?? {}),\n set: redactDescriptorObject(descriptor, row.set ?? {}),\n };\n}\n\nasync function executeRows(input: {\n argv: ObjArgs;\n rows: ObjMutationRow[];\n defaultSchema?: string;\n commit: boolean;\n}): Promise<ItemResult[]> {\n const context = await requireAuthContext(input.argv);\n const items: ItemResult[] = [];\n for (const [ index, originalRow ] of input.rows.entries()) {\n const row = {\n ...originalRow,\n schema: originalRow.schema ?? input.defaultSchema,\n };\n try {\n const item = row.schema\n ? await executeDescriptorRow(context, row, index, input.commit)\n : await executeRawRow(context, row, index, input.commit);\n items.push(item);\n } catch (error) {\n const err = error instanceof CliCommandError\n ? error\n : new CliCommandError('error', error instanceof Error ? error.message : String(error));\n items.push({ index, ok: false, code: err.code, message: err.message });\n }\n }\n return items;\n}\n\nfunction printItems(items: ItemResult[]): void {\n for (const item of items) {\n console.log(`${item.index}\\t${item.ok ? item.code : `ERROR ${item.code}`}\\t${String(item.subject ?? item.resourceUrl ?? item.message ?? '')}`);\n }\n}\n\nconst importCommand: CommandModule<object, ObjImportArgs> = {\n command: 'import <file>',\n describe: 'Import descriptor-backed or explicit raw JSONL rows',\n builder: (yargs) =>\n objOptions<ObjImportArgs>(yargs)\n .positional('file', { type: 'string', demandOption: true, description: 'JSONL file to import, or - for stdin' })\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.file),\n commit: argv.commit === true,\n });\n const code = items.every((item) => item.ok)\n ? (argv.commit ? 'committed' : 'plan_ready')\n : 'partial_failure';\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst upsertCommand: CommandModule<object, ObjUpsertArgs> = {\n command: 'upsert',\n describe: 'Upsert descriptor-backed JSONL rows',\n builder: (yargs) =>\n objOptions<ObjUpsertArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' })\n .option('from', { type: 'string', demandOption: true, description: 'JSONL file to read, or - for stdin' })\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.from),\n defaultSchema: resolveDescriptor(argv.schema).uri,\n commit: argv.commit === true,\n });\n const code = items.every((item) => item.ok)\n ? (argv.commit ? 'committed' : 'plan_ready')\n : 'partial_failure';\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst listCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'list',\n describe: 'List descriptor-backed objects',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n objects,\n });\n return;\n }\n for (const object of objects) {\n console.log(object.subject);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst exportCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'export <selector>',\n describe: 'Export descriptor-backed objects as JSONL',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Export format' })\n .option('out', { type: 'string', description: 'Output file path' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const jsonl = jsonlForObjects(objects);\n if (argv.out) {\n writeFileSync(argv.out, jsonl, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n count: objects.length,\n out: argv.out ?? null,\n ...(argv.out ? {} : { objects }),\n });\n return;\n }\n if (!argv.out) {\n process.stdout.write(jsonl);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst getCommand: CommandModule<object, ObjGetArgs> = {\n command: 'get',\n describe: 'Read one descriptor-backed object as JSON',\n builder: (yargs) =>\n objOptions<ObjGetArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('out', { type: 'string', description: 'Write JSON object to file' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, {\n ...argv,\n selector: undefined,\n limit: 1,\n format: 'jsonl',\n where: undefined,\n relation: undefined,\n status: undefined,\n });\n const objects = await queryDescriptorObjects(context, selector);\n const object = objects[0];\n if (!object) {\n throw new CliCommandError('object_not_found', `Object not found: ${argv.subject}`, 1);\n }\n const body = `${JSON.stringify(object, null, 2)}\\n`;\n if (argv.out) {\n writeFileSync(argv.out, body, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({ webId: context.webId, podRoot: context.podRoot, object, out: argv.out ?? null });\n return;\n }\n if (!argv.out) {\n process.stdout.write(body);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst patchCommand: CommandModule<object, ObjPatchArgs> = {\n command: 'patch',\n describe: 'Patch one descriptor-backed object field set',\n builder: (yargs) =>\n objOptions<ObjPatchArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('set', { type: 'string', demandOption: true, description: 'JSON object of descriptor field values to set' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executePatchCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `PATCH ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst linkCommand: CommandModule<object, ObjLinkArgs> = {\n command: 'link',\n describe: 'Link one descriptor-backed object to another URI',\n builder: (yargs) =>\n objOptions<ObjLinkArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias when --predicate is a descriptor field' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('predicate', { type: 'string', demandOption: true, description: 'Predicate URI or descriptor field' })\n .option('object', { type: 'string', demandOption: true, description: 'Object URI to link' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeLinkCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `LINK ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst deleteCommand: CommandModule<object, ObjDeleteArgs> = {\n command: 'delete',\n describe: 'Delete triples for one descriptor-backed object subject',\n builder: (yargs) =>\n objOptions<ObjDeleteArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeDeleteCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `DELETE ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst watchCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'watch <selector>',\n describe: 'Stream descriptor-backed object changes as JSONL snapshots',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Watch stream format' })\n .option('since', { type: 'string', description: 'Opaque cursor from a previous watch stream' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const metadata = {\n cursorDurable: false,\n since: argv.since ?? null,\n cursor: null,\n message: 'Durable object cursors are not available; reconcile with a fresh obj list/export snapshot.',\n };\n if (argv.json) {\n writeJsonResult({ metadata, objects }, 'watch_snapshot');\n return;\n }\n console.log(JSON.stringify({ ok: true, code: 'cursor_unavailable', metadata }));\n for (const [ index, object ] of objects.entries()) {\n console.log(JSON.stringify({\n index,\n ok: true,\n code: 'snapshot',\n change: 'snapshot',\n ...object,\n }));\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nexport const objCommand: CommandModule<object, ObjArgs> = {\n command: 'obj',\n describe: 'Descriptor-backed object transport',\n builder: (yargs) =>\n (yargs\n .command(exportCommand)\n .command(importCommand)\n .command(getCommand)\n .command(listCommand)\n .command(upsertCommand)\n .command(patchCommand)\n .command(linkCommand)\n .command(deleteCommand)\n .command(watchCommand)\n .demandCommand(1, 'Please specify an object subcommand') as unknown as Argv<ObjArgs>),\n handler: () => {},\n};\n"]}
@@ -0,0 +1,14 @@
1
+ import type { CommandModule } from 'yargs';
2
+ interface RdfArgs {
3
+ url?: string;
4
+ json: boolean;
5
+ }
6
+ export declare function readInlineOrFile(value: string): string;
7
+ export declare function documentResourceInput(input: string): string;
8
+ export declare function buildSparqlPatch(input: {
9
+ insert?: string;
10
+ delete?: string;
11
+ }): string;
12
+ export declare function resolveSparqlEndpoint(podRoot: string, scope?: string): string;
13
+ export declare const rdfCommand: CommandModule<object, RdfArgs>;
14
+ export {};
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rdfCommand = void 0;
4
+ exports.readInlineOrFile = readInlineOrFile;
5
+ exports.documentResourceInput = documentResourceInput;
6
+ exports.buildSparqlPatch = buildSparqlPatch;
7
+ exports.resolveSparqlEndpoint = resolveSparqlEndpoint;
8
+ const fs_1 = require("fs");
9
+ const models_1 = require("@undefineds.co/models");
10
+ const auth_context_1 = require("../lib/auth-context");
11
+ const output_1 = require("../lib/output");
12
+ const resource_1 = require("../lib/resource");
13
+ function rdfOptions(yargs) {
14
+ return yargs
15
+ .option('url', {
16
+ alias: 'u',
17
+ type: 'string',
18
+ description: 'Server base URL override',
19
+ })
20
+ .option('json', {
21
+ type: 'boolean',
22
+ default: false,
23
+ description: 'Output JSON envelope',
24
+ });
25
+ }
26
+ function readInlineOrFile(value) {
27
+ return (0, fs_1.existsSync)(value) ? (0, fs_1.readFileSync)(value, 'utf-8') : value;
28
+ }
29
+ function documentResourceInput(input) {
30
+ const trimmed = input.trim();
31
+ if (!/^https?:\/\//i.test(trimmed)) {
32
+ const hashIndex = trimmed.indexOf('#');
33
+ return hashIndex >= 0 ? trimmed.slice(0, hashIndex) : trimmed;
34
+ }
35
+ const url = new URL(trimmed);
36
+ url.hash = '';
37
+ return url.toString();
38
+ }
39
+ function looksLikeSparqlUpdate(value) {
40
+ const withoutPrologue = value.replace(/^\s*(?:(?:PREFIX\s+[A-Za-z][\w-]*:\s+<[^>]+>|BASE\s+<[^>]+>)\s*)*/iu, '');
41
+ return /^(?:WITH|INSERT|DELETE|LOAD|CLEAR|CREATE|DROP|COPY|MOVE|ADD)\b/iu.test(withoutPrologue);
42
+ }
43
+ function buildSparqlPatch(input) {
44
+ const insert = input.insert?.trim();
45
+ const del = input.delete?.trim();
46
+ if (!insert && !del) {
47
+ throw new Error('Specify --insert and/or --delete.');
48
+ }
49
+ if (insert && !del && looksLikeSparqlUpdate(insert)) {
50
+ return insert;
51
+ }
52
+ if (del && !insert && looksLikeSparqlUpdate(del)) {
53
+ return del;
54
+ }
55
+ const operations = [];
56
+ if (del)
57
+ operations.push(`DELETE DATA {\n${del}\n}`);
58
+ if (insert)
59
+ operations.push(`INSERT DATA {\n${insert}\n}`);
60
+ return operations.join(';\n');
61
+ }
62
+ function resolveSparqlEndpoint(podRoot, scope) {
63
+ const base = scope
64
+ ? new URL(scope.replace(/^\/+/, ''), podRoot).toString()
65
+ : podRoot;
66
+ const container = base.endsWith('/') ? base : `${base}/`;
67
+ return new URL('-/sparql', container).toString();
68
+ }
69
+ const getCommand = {
70
+ command: 'get <resource>',
71
+ describe: 'Read an RDF resource as Turtle',
72
+ builder: (yargs) => rdfOptions(yargs)
73
+ .positional('resource', { type: 'string', demandOption: true, description: 'RDF resource or subject URL/path' })
74
+ .option('out', { type: 'string', description: 'Write response body to file' }),
75
+ handler: async (argv) => {
76
+ try {
77
+ const context = await (0, auth_context_1.requireAuthContext)(argv);
78
+ const target = (0, resource_1.resolveResourceTarget)(context, documentResourceInput(argv.resource));
79
+ const response = await (0, resource_1.fetchResource)(context, target, {
80
+ method: 'GET',
81
+ headers: { Accept: 'text/turtle' },
82
+ });
83
+ (0, resource_1.ensureOk)(response, response.status === 404 ? 'resource_not_found' : 'rdf_get_failed', `Failed to read RDF resource ${argv.resource}`);
84
+ const text = await response.text();
85
+ if (argv.json) {
86
+ (0, output_1.writeJsonResult)({ ...(0, resource_1.responseData)(target, response), body: text });
87
+ return;
88
+ }
89
+ if (argv.out) {
90
+ (0, fs_1.writeFileSync)(argv.out, text, 'utf-8');
91
+ return;
92
+ }
93
+ process.stdout.write(text);
94
+ }
95
+ catch (error) {
96
+ (0, output_1.handleCliError)(error, argv.json);
97
+ }
98
+ },
99
+ };
100
+ const patchCommand = {
101
+ command: 'patch <resource>',
102
+ describe: 'Patch an RDF resource with SPARQL Update',
103
+ builder: (yargs) => rdfOptions(yargs)
104
+ .positional('resource', { type: 'string', demandOption: true, description: 'RDF resource path or URL' })
105
+ .option('insert', { type: 'string', description: 'Triple snippet, SPARQL update, or file to insert' })
106
+ .option('delete', { type: 'string', description: 'Triple snippet, SPARQL update, or file to delete' })
107
+ .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })
108
+ .check((argv) => {
109
+ if (!argv.insert && !argv.delete) {
110
+ throw new Error('Specify --insert and/or --delete.');
111
+ }
112
+ return true;
113
+ }),
114
+ handler: async (argv) => {
115
+ try {
116
+ const context = await (0, auth_context_1.requireAuthContext)(argv);
117
+ const target = (0, resource_1.resolveResourceTarget)(context, documentResourceInput(argv.resource));
118
+ const sparql = buildSparqlPatch({
119
+ insert: argv.insert ? readInlineOrFile(argv.insert) : undefined,
120
+ delete: argv.delete ? readInlineOrFile(argv.delete) : undefined,
121
+ });
122
+ const headers = { 'Content-Type': 'application/sparql-update' };
123
+ if (argv['if-match'])
124
+ headers['If-Match'] = argv['if-match'];
125
+ const response = await (0, resource_1.fetchResource)(context, target, {
126
+ method: 'PATCH',
127
+ headers,
128
+ body: sparql,
129
+ });
130
+ (0, resource_1.ensureOk)(response, 'rdf_patch_failed', `Failed to patch RDF resource ${argv.resource}`);
131
+ const data = (0, resource_1.responseData)(target, response);
132
+ if (argv.json) {
133
+ (0, output_1.writeJsonResult)(data);
134
+ return;
135
+ }
136
+ console.log(`PATCH ${data.resourceUrl} -> HTTP ${data.status}`);
137
+ }
138
+ catch (error) {
139
+ (0, output_1.handleCliError)(error, argv.json);
140
+ }
141
+ },
142
+ };
143
+ const queryCommand = {
144
+ command: 'query',
145
+ describe: 'Run a read-only SPARQL query against a Pod sidecar endpoint',
146
+ builder: (yargs) => rdfOptions(yargs)
147
+ .option('sparql', { type: 'string', demandOption: true, description: 'SPARQL query or local file path' })
148
+ .option('scope', { type: 'string', description: 'Pod-relative container scope. Defaults to the Pod root.' })
149
+ .option('out', { type: 'string', description: 'Write response body to file' }),
150
+ handler: async (argv) => {
151
+ try {
152
+ const context = await (0, auth_context_1.requireAuthContext)(argv);
153
+ const endpoint = resolveSparqlEndpoint(context.podRoot, argv.scope);
154
+ const query = readInlineOrFile(argv.sparql);
155
+ const response = await (0, resource_1.fetchResource)(context, {
156
+ input: endpoint,
157
+ resourceUrl: endpoint,
158
+ webId: context.webId,
159
+ podRoot: context.podRoot,
160
+ baseIri: context.baseIri,
161
+ }, {
162
+ method: 'POST',
163
+ headers: {
164
+ Accept: 'application/sparql-results+json, application/n-quads;q=0.9, text/turtle;q=0.8, */*;q=0.1',
165
+ 'Content-Type': 'application/sparql-query',
166
+ },
167
+ body: query,
168
+ });
169
+ (0, resource_1.ensureOk)(response, 'rdf_query_failed', `Failed to query RDF scope ${argv.scope ?? '/'}`);
170
+ const body = await response.text();
171
+ if (argv.json) {
172
+ (0, output_1.writeJsonResult)({
173
+ endpoint,
174
+ contentType: response.headers.get('content-type') ?? undefined,
175
+ body,
176
+ });
177
+ return;
178
+ }
179
+ if (argv.out) {
180
+ (0, fs_1.writeFileSync)(argv.out, body, 'utf-8');
181
+ return;
182
+ }
183
+ process.stdout.write(body);
184
+ }
185
+ catch (error) {
186
+ (0, output_1.handleCliError)(error, argv.json);
187
+ }
188
+ },
189
+ };
190
+ const classesCommand = {
191
+ command: 'classes',
192
+ describe: 'List known RDF classes from shared model descriptors',
193
+ builder: (yargs) => rdfOptions(yargs)
194
+ .option('schema', { type: 'string', description: 'Schema URI filter' }),
195
+ handler: (argv) => {
196
+ const classes = models_1.podSchema.classes({ schemaUri: argv.schema });
197
+ if (argv.json) {
198
+ (0, output_1.writeJsonResult)({ classes });
199
+ return;
200
+ }
201
+ for (const entry of classes) {
202
+ console.log(`${entry.schemaUri}\t${entry.class}\t${entry.resourceKind}`);
203
+ }
204
+ },
205
+ };
206
+ const predicatesCommand = {
207
+ command: 'predicates',
208
+ describe: 'List known RDF predicates from shared model descriptors',
209
+ builder: (yargs) => rdfOptions(yargs)
210
+ .option('schema', { type: 'string', description: 'Schema URI filter' })
211
+ .option('field', { type: 'string', description: 'Descriptor field filter' }),
212
+ handler: (argv) => {
213
+ const predicates = models_1.podSchema.predicates({ schemaUri: argv.schema, field: argv.field });
214
+ if (argv.json) {
215
+ (0, output_1.writeJsonResult)({ predicates });
216
+ return;
217
+ }
218
+ for (const entry of predicates) {
219
+ console.log(`${entry.schemaUri}\t${entry.field}\t${entry.predicate}`);
220
+ }
221
+ },
222
+ };
223
+ exports.rdfCommand = {
224
+ command: 'rdf',
225
+ describe: 'RDF graph/resource operations',
226
+ builder: (yargs) => yargs
227
+ .command(getCommand)
228
+ .command(patchCommand)
229
+ .command(queryCommand)
230
+ .command(classesCommand)
231
+ .command(predicatesCommand)
232
+ .demandCommand(1, 'Please specify an RDF subcommand'),
233
+ handler: () => { },
234
+ };
235
+ //# sourceMappingURL=rdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rdf.js","sourceRoot":"","sources":["../../../src/cli/commands/rdf.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Argv, CommandModule } from 'yargs';\nimport { existsSync, readFileSync, writeFileSync } from 'fs';\nimport { podSchema } from '@undefineds.co/models';\nimport { requireAuthContext } from '../lib/auth-context';\nimport { handleCliError, writeJsonResult } from '../lib/output';\nimport {\n ensureOk,\n fetchResource,\n resolveResourceTarget,\n responseData,\n} from '../lib/resource';\n\ninterface RdfArgs {\n url?: string;\n json: boolean;\n}\n\ninterface RdfGetArgs extends RdfArgs {\n resource: string;\n out?: string;\n}\n\ninterface RdfPatchArgs extends RdfArgs {\n resource: string;\n insert?: string;\n delete?: string;\n 'if-match'?: string;\n}\n\ninterface RdfQueryArgs extends RdfArgs {\n sparql: string;\n scope?: string;\n out?: string;\n}\n\ninterface RdfSchemaArgs extends RdfArgs {\n schema?: string;\n field?: string;\n}\n\nfunction rdfOptions<T>(yargs: Argv): Argv<T> {\n return yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL override',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Output JSON envelope',\n }) as unknown as Argv<T>;\n}\n\nexport function readInlineOrFile(value: string): string {\n return existsSync(value) ? readFileSync(value, 'utf-8') : value;\n}\n\nexport function documentResourceInput(input: string): string {\n const trimmed = input.trim();\n if (!/^https?:\\/\\//i.test(trimmed)) {\n const hashIndex = trimmed.indexOf('#');\n return hashIndex >= 0 ? trimmed.slice(0, hashIndex) : trimmed;\n }\n\n const url = new URL(trimmed);\n url.hash = '';\n return url.toString();\n}\n\nfunction looksLikeSparqlUpdate(value: string): boolean {\n const withoutPrologue = value.replace(/^\\s*(?:(?:PREFIX\\s+[A-Za-z][\\w-]*:\\s+<[^>]+>|BASE\\s+<[^>]+>)\\s*)*/iu, '');\n return /^(?:WITH|INSERT|DELETE|LOAD|CLEAR|CREATE|DROP|COPY|MOVE|ADD)\\b/iu.test(withoutPrologue);\n}\n\nexport function buildSparqlPatch(input: { insert?: string; delete?: string }): string {\n const insert = input.insert?.trim();\n const del = input.delete?.trim();\n if (!insert && !del) {\n throw new Error('Specify --insert and/or --delete.');\n }\n if (insert && !del && looksLikeSparqlUpdate(insert)) {\n return insert;\n }\n if (del && !insert && looksLikeSparqlUpdate(del)) {\n return del;\n }\n\n const operations: string[] = [];\n if (del) operations.push(`DELETE DATA {\\n${del}\\n}`);\n if (insert) operations.push(`INSERT DATA {\\n${insert}\\n}`);\n return operations.join(';\\n');\n}\n\nexport function resolveSparqlEndpoint(podRoot: string, scope?: string): string {\n const base = scope\n ? new URL(scope.replace(/^\\/+/, ''), podRoot).toString()\n : podRoot;\n const container = base.endsWith('/') ? base : `${base}/`;\n return new URL('-/sparql', container).toString();\n}\n\nconst getCommand: CommandModule<object, RdfGetArgs> = {\n command: 'get <resource>',\n describe: 'Read an RDF resource as Turtle',\n builder: (yargs) =>\n rdfOptions<RdfGetArgs>(yargs)\n .positional('resource', { type: 'string', demandOption: true, description: 'RDF resource or subject URL/path' })\n .option('out', { type: 'string', description: 'Write response body to file' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const target = resolveResourceTarget(context, documentResourceInput(argv.resource));\n const response = await fetchResource(context, target, {\n method: 'GET',\n headers: { Accept: 'text/turtle' },\n });\n ensureOk(response, response.status === 404 ? 'resource_not_found' : 'rdf_get_failed', `Failed to read RDF resource ${argv.resource}`);\n const text = await response.text();\n if (argv.json) {\n writeJsonResult({ ...responseData(target, response), body: text });\n return;\n }\n if (argv.out) {\n writeFileSync(argv.out, text, 'utf-8');\n return;\n }\n process.stdout.write(text);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst patchCommand: CommandModule<object, RdfPatchArgs> = {\n command: 'patch <resource>',\n describe: 'Patch an RDF resource with SPARQL Update',\n builder: (yargs) =>\n rdfOptions<RdfPatchArgs>(yargs)\n .positional('resource', { type: 'string', demandOption: true, description: 'RDF resource path or URL' })\n .option('insert', { type: 'string', description: 'Triple snippet, SPARQL update, or file to insert' })\n .option('delete', { type: 'string', description: 'Triple snippet, SPARQL update, or file to delete' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .check((argv) => {\n if (!argv.insert && !argv.delete) {\n throw new Error('Specify --insert and/or --delete.');\n }\n return true;\n }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const target = resolveResourceTarget(context, documentResourceInput(argv.resource));\n const sparql = buildSparqlPatch({\n insert: argv.insert ? readInlineOrFile(argv.insert) : undefined,\n delete: argv.delete ? readInlineOrFile(argv.delete) : undefined,\n });\n const headers: Record<string, string> = { 'Content-Type': 'application/sparql-update' };\n if (argv['if-match']) headers['If-Match'] = argv['if-match'];\n const response = await fetchResource(context, target, {\n method: 'PATCH',\n headers,\n body: sparql,\n });\n ensureOk(response, 'rdf_patch_failed', `Failed to patch RDF resource ${argv.resource}`);\n const data = responseData(target, response);\n if (argv.json) {\n writeJsonResult(data);\n return;\n }\n console.log(`PATCH ${data.resourceUrl} -> HTTP ${data.status}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst queryCommand: CommandModule<object, RdfQueryArgs> = {\n command: 'query',\n describe: 'Run a read-only SPARQL query against a Pod sidecar endpoint',\n builder: (yargs) =>\n rdfOptions<RdfQueryArgs>(yargs)\n .option('sparql', { type: 'string', demandOption: true, description: 'SPARQL query or local file path' })\n .option('scope', { type: 'string', description: 'Pod-relative container scope. Defaults to the Pod root.' })\n .option('out', { type: 'string', description: 'Write response body to file' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const endpoint = resolveSparqlEndpoint(context.podRoot, argv.scope);\n const query = readInlineOrFile(argv.sparql);\n const response = await fetchResource(context, {\n input: endpoint,\n resourceUrl: endpoint,\n webId: context.webId,\n podRoot: context.podRoot,\n baseIri: context.baseIri,\n }, {\n method: 'POST',\n headers: {\n Accept: 'application/sparql-results+json, application/n-quads;q=0.9, text/turtle;q=0.8, */*;q=0.1',\n 'Content-Type': 'application/sparql-query',\n },\n body: query,\n });\n ensureOk(response, 'rdf_query_failed', `Failed to query RDF scope ${argv.scope ?? '/'}`);\n const body = await response.text();\n if (argv.json) {\n writeJsonResult({\n endpoint,\n contentType: response.headers.get('content-type') ?? undefined,\n body,\n });\n return;\n }\n if (argv.out) {\n writeFileSync(argv.out, body, 'utf-8');\n return;\n }\n process.stdout.write(body);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst classesCommand: CommandModule<object, RdfSchemaArgs> = {\n command: 'classes',\n describe: 'List known RDF classes from shared model descriptors',\n builder: (yargs) =>\n rdfOptions<RdfSchemaArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI filter' }),\n handler: (argv) => {\n const classes = podSchema.classes({ schemaUri: argv.schema });\n if (argv.json) {\n writeJsonResult({ classes });\n return;\n }\n for (const entry of classes) {\n console.log(`${entry.schemaUri}\\t${entry.class}\\t${entry.resourceKind}`);\n }\n },\n};\n\nconst predicatesCommand: CommandModule<object, RdfSchemaArgs> = {\n command: 'predicates',\n describe: 'List known RDF predicates from shared model descriptors',\n builder: (yargs) =>\n rdfOptions<RdfSchemaArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI filter' })\n .option('field', { type: 'string', description: 'Descriptor field filter' }),\n handler: (argv) => {\n const predicates = podSchema.predicates({ schemaUri: argv.schema, field: argv.field });\n if (argv.json) {\n writeJsonResult({ predicates });\n return;\n }\n for (const entry of predicates) {\n console.log(`${entry.schemaUri}\\t${entry.field}\\t${entry.predicate}`);\n }\n },\n};\n\nexport const rdfCommand: CommandModule<object, RdfArgs> = {\n command: 'rdf',\n describe: 'RDF graph/resource operations',\n builder: (yargs) =>\n (yargs\n .command(getCommand)\n .command(patchCommand)\n .command(queryCommand)\n .command(classesCommand)\n .command(predicatesCommand)\n .demandCommand(1, 'Please specify an RDF subcommand') as unknown as Argv<RdfArgs>),\n handler: () => {},\n};\n"]}
@@ -0,0 +1,31 @@
1
+ import type { CommandModule } from 'yargs';
2
+ interface ResourceArgs {
3
+ url?: string;
4
+ json: boolean;
5
+ }
6
+ interface GetArgs extends ResourceArgs {
7
+ path: string;
8
+ accept?: string;
9
+ out?: string;
10
+ }
11
+ interface WriteArgs extends ResourceArgs {
12
+ path: string;
13
+ from: string;
14
+ 'content-type'?: string;
15
+ 'if-match'?: string;
16
+ }
17
+ interface DeleteArgs extends ResourceArgs {
18
+ path: string;
19
+ 'if-match'?: string;
20
+ }
21
+ interface ListArgs extends ResourceArgs {
22
+ path: string;
23
+ depth: number;
24
+ }
25
+ export declare const getCommand: CommandModule<object, GetArgs>;
26
+ export declare const headCommand: CommandModule<object, GetArgs>;
27
+ export declare const putCommand: CommandModule<object, WriteArgs>;
28
+ export declare const patchCommand: CommandModule<object, WriteArgs>;
29
+ export declare const deleteCommand: CommandModule<object, DeleteArgs>;
30
+ export declare const listCommand: CommandModule<object, ListArgs>;
31
+ export {};