@manta-eu/codegen 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,6 +27,11 @@ The run writes one `.ts` file per namespace (`manta.ts`, `meta.ts`, `google.ts`
27
27
  `namespaces.ts` for the vocabulary constants, and an `index.ts` that re-exports every file. It writes
28
28
  nothing else: the directory holds generated code, and the CLI keeps no copy of either graph it read.
29
29
 
30
+ An app that pushed its own vocabulary and shapes with `manta ontology push` and `manta shapes push` (from
31
+ `@manta-eu/cli`) gets schemas for its classes too, in a file named after the prefix its vocabulary declared
32
+ (`todo.ts` for `@prefix todo:`). The run stops if two apps, or an app and the realm, use one prefix for two
33
+ namespaces.
34
+
30
35
  A run removes the `.ts` files of the run before it, so a class the shapes no longer describe loses
31
36
  its file. It leaves every other file in the directory alone.
32
37
 
package/dist/cli.js CHANGED
@@ -1,17 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { cachedToken, ciClientId, clientIdHelp, defaultDeployment, describeError, mintWithClientCredentials, publicClientFrom, registerAuthCommands, userTokenSource, } from "@manta-eu/auth";
2
+ import { clientIdHelp, cliTokenSource, defaultDeployment, describeError, registerAuthCommands, } from "@manta-eu/auth";
3
3
  import { Command, Option } from "commander";
4
4
  import { resolve } from "node:path";
5
5
  import { fetchRealmShapes, sparqlEndpoint } from "./fetch-shapes.js";
6
6
  import { generatePackage } from "./generate.js";
7
- // The secret stays out of the flags: an argument list is readable to every process on the machine.
8
7
  function tokenSourceFor(options) {
9
- const secret = process.env.MANTA_CLIENT_SECRET;
10
- if (secret) {
11
- const client = publicClientFrom({ ...options, clientId: options.clientId ?? ciClientId });
12
- return cachedToken(() => mintWithClientCredentials({ ...client, clientSecret: secret, scope: options.scope }));
13
- }
14
- return userTokenSource(publicClientFrom(options), { label: "manta-codegen", useDeviceCode: options.useDeviceCode });
8
+ return cliTokenSource(options, { label: "manta-codegen" });
15
9
  }
16
10
  function reportTargetClasses(targetClasses) {
17
11
  const total = Object.values(targetClasses).reduce((sum, count) => sum + count, 0);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export type RealmShapes = {
4
4
  ontologyGraphIri: string;
5
5
  shacl: string;
6
6
  ontology: string;
7
+ apps: string;
7
8
  targetClasses: Record<string, number>;
8
9
  };
9
10
  export declare function sparqlEndpoint(apiUrl: string, datastoreId: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-shapes.d.ts","sourceRoot":"","sources":["../src/fetch-shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAU/E,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAkBtB"}
1
+ {"version":3,"file":"fetch-shapes.d.ts","sourceRoot":"","sources":["../src/fetch-shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAe,MAAM,gBAAgB,CAAC;AAW/E,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,SAAiB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAwBtB"}
@@ -1,5 +1,5 @@
1
1
  import { withRenewal } from "@manta-eu/auth";
2
- import { countTargetClasses, fetchGraphList, fetchGraphTurtle, findOntologyGraph, shaclGraphIri, vocabBaseFromOntologyGraph, } from "./shapes.js";
2
+ import { countTargetClasses, fetchAppGraphsTurtle, fetchGraphList, fetchGraphTurtle, findOntologyGraph, shaclGraphIri, vocabBaseFromOntologyGraph, } from "./shapes.js";
3
3
  export function sparqlEndpoint(apiUrl, datastoreId) {
4
4
  return `${apiUrl.replace(/\/$/, "")}/d/${encodeURIComponent(datastoreId)}/sparql`;
5
5
  }
@@ -8,12 +8,15 @@ export async function fetchRealmShapes(endpoint, token, fetchImpl = fetch) {
8
8
  const ontologyGraphIri = findOntologyGraph(graphs);
9
9
  const shacl = await withRenewal(token, (accessToken) => fetchGraphTurtle({ endpoint, graphIri: shaclGraphIri, token: accessToken }, fetchImpl));
10
10
  const ontology = await withRenewal(token, (accessToken) => fetchGraphTurtle({ endpoint, graphIri: ontologyGraphIri, token: accessToken }, fetchImpl));
11
+ const vocabBase = vocabBaseFromOntologyGraph(ontologyGraphIri);
12
+ const apps = await withRenewal(token, (accessToken) => fetchAppGraphsTurtle({ endpoint, token: accessToken }, fetchImpl));
11
13
  return {
12
- vocabBase: vocabBaseFromOntologyGraph(ontologyGraphIri),
14
+ vocabBase,
13
15
  ontologyGraphIri,
14
16
  shacl,
15
17
  ontology,
16
- targetClasses: countTargetClasses(`${shacl}\n${ontology}`),
18
+ apps,
19
+ targetClasses: countTargetClasses(`${shacl}\n${ontology}\n${apps}`),
17
20
  };
18
21
  }
19
22
  //# sourceMappingURL=fetch-shapes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-shapes.js","sourceRoot":"","sources":["../src/fetch-shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAUrB,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,WAAmB;IAChE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,KAAkB,EAClB,YAAuB,KAAK;IAE5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACtH,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CACrD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CACvF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CACxD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAC1F,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,0BAA0B,CAAC,gBAAgB,CAAC;QACvD,gBAAgB;QAChB,KAAK;QACL,QAAQ;QACR,aAAa,EAAE,kBAAkB,CAAC,GAAG,KAAK,KAAK,QAAQ,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fetch-shapes.js","sourceRoot":"","sources":["../src/fetch-shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAWrB,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,WAAmB;IAChE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,KAAkB,EAClB,YAAuB,KAAK;IAE5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACtH,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CACrD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CACvF,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CACxD,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAC1F,CAAC;IAEF,MAAM,SAAS,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE,CACpD,oBAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAClE,CAAC;IAEF,OAAO;QACL,SAAS;QACT,gBAAgB;QAChB,KAAK;QACL,QAAQ;QACR,IAAI;QACJ,aAAa,EAAE,kBAAkB,CAAC,GAAG,KAAK,KAAK,QAAQ,KAAK,IAAI,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC"}
@@ -9,6 +9,7 @@ export type ShapeSources = {
9
9
  shacl: string;
10
10
  ontology: string;
11
11
  vocabBase: string;
12
+ apps?: string;
12
13
  };
13
- export declare function generatePackage({ shacl, ontology, vocabBase }: ShapeSources, outDir: string): Promise<void>;
14
+ export declare function generatePackage({ shacl, ontology, vocabBase, apps }: ShapeSources, outDir: string): Promise<void>;
14
15
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAqB,GAAG,MAAM,CAOjE;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpF;AAOD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAGD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAchE;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,wBAAsB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjH"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAqB,GAAG,MAAM,CAOjE;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAGD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpF;AAOD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;AAMD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAGD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAchE;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,wBAAsB,eAAe,CACnC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAClD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAWf"}
package/dist/generate.js CHANGED
@@ -63,11 +63,11 @@ export function runLdkit(shaclPath, outDir) {
63
63
  }
64
64
  failOnUnknownNamespace(outDir);
65
65
  }
66
- export async function generatePackage({ shacl, ontology, vocabBase }, outDir) {
66
+ export async function generatePackage({ shacl, ontology, vocabBase, apps }, outDir) {
67
67
  const stageDir = mkdtempSync(join(tmpdir(), "manta-codegen-"));
68
68
  try {
69
69
  const merged = join(stageDir, "shapes.ttl");
70
- writeFileSync(merged, await mergeShapes(shacl, ontology, vocabBase));
70
+ writeFileSync(merged, await mergeShapes(shacl, ontology, vocabBase, apps));
71
71
  runLdkit(merged, outDir);
72
72
  await normalizeGeneratedFiles(outDir);
73
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
package/dist/shapes.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type FetchLike } from "@manta-eu/auth";
2
2
  export declare const shaclGraphIri = "https://rdfox.com/default-base-iri/shacl";
3
3
  export declare function constructGraphQuery(graphIri: string): string;
4
+ export declare function appGraphsQuery(): string;
4
5
  export declare function graphListQuery(): string;
5
6
  export declare function readGraphList(results: unknown): string[];
6
7
  export declare function findOntologyGraph(graphIris: readonly string[]): string;
@@ -13,6 +14,7 @@ export type GraphRequest = DatastoreAccess & {
13
14
  graphIri: string;
14
15
  };
15
16
  export declare function fetchGraphTurtle(request: GraphRequest, fetchImpl?: FetchLike): Promise<string>;
17
+ export declare function fetchAppGraphsTurtle(access: DatastoreAccess, fetchImpl?: FetchLike): Promise<string>;
16
18
  export declare function fetchGraphList(access: DatastoreAccess, fetchImpl?: FetchLike): Promise<string[]>;
17
19
  export declare const realmGroup = "(realm)";
18
20
  export declare function countTargetClasses(turtle: string): Record<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../src/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,gBAAgB,CAAC;AAG7E,eAAO,MAAM,aAAa,6CAA6C,CAAC;AAMxE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAIxD;AAID,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAiBtE;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAkClE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3G;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7G;AAMD,eAAO,MAAM,UAAU,YAAY,CAAC;AAGpC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAazE"}
1
+ {"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../src/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,gBAAgB,CAAC;AAG7E,eAAO,MAAM,aAAa,6CAA6C,CAAC;AAMxE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM5D;AAGD,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAIxD;AAID,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAiBtE;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAkClE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3G;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjH;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,GAAE,SAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7G;AAMD,eAAO,MAAM,UAAU,YAAY,CAAC;AAGpC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAazE"}
package/dist/shapes.js CHANGED
@@ -9,6 +9,13 @@ export function constructGraphQuery(graphIri) {
9
9
  }
10
10
  return `CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <${graphIri}> { ?s ?p ?o } }`;
11
11
  }
12
+ // Each app's vocabulary graph describes itself as an owl:Ontology with an identifier, so it is found from triples.
13
+ export function appGraphsQuery() {
14
+ return `CONSTRUCT { ?s ?p ?o } WHERE {
15
+ GRAPH ?g { ?appGraph a <http://www.w3.org/2002/07/owl#Ontology> ; <http://purl.org/dc/terms/identifier> ?name . ?s ?p ?o }
16
+ FILTER(?appGraph = ?g)
17
+ }`;
18
+ }
12
19
  export function graphListQuery() {
13
20
  return "SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }";
14
21
  }
@@ -55,6 +62,14 @@ export async function fetchGraphTurtle(request, fetchImpl = fetch) {
55
62
  };
56
63
  return (await runSparql(request, call, fetchImpl)).text();
57
64
  }
65
+ export async function fetchAppGraphsTurtle(access, fetchImpl = fetch) {
66
+ const call = {
67
+ query: appGraphsQuery(),
68
+ accept: "text/turtle",
69
+ action: "the read of the apps' vocabularies",
70
+ };
71
+ return (await runSparql(access, call, fetchImpl)).text();
72
+ }
58
73
  export async function fetchGraphList(access, fetchImpl = fetch) {
59
74
  const call = { query: graphListQuery(), accept: "application/sparql-results+json", action: "the graph list" };
60
75
  return readGraphList(await (await runSparql(access, call, fetchImpl)).json());
@@ -1 +1 @@
1
- {"version":3,"file":"shapes.js","sourceRoot":"","sources":["../src/shapes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shapes.js","sourceRoot":"","sources":["../src/shapes.ts"],"names":[],"mappings":"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"}
package/dist/turtle.d.ts CHANGED
@@ -9,5 +9,6 @@ export declare function writeTurtle({ quads, prefixes }: ParsedTurtle): Promise<
9
9
  export declare function namePrefixes(prefixes: Record<string, string>, vocabBase: string): Record<string, string>;
10
10
  export declare function quadKey(quad: Quad): string;
11
11
  export declare function sortQuads(quads: readonly Quad[]): Quad[];
12
- export declare function mergeShapes(shacl: string, ontology: string, vocabBase: string): Promise<string>;
12
+ export declare function declaredPrefixes(quads: readonly Quad[]): Record<string, string>;
13
+ export declare function mergeShapes(shacl: string, ontology: string, vocabBase: string, apps?: string): Promise<string>;
13
14
  //# sourceMappingURL=turtle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turtle.d.ts","sourceRoot":"","sources":["../src/turtle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,IAAI,CAAC;AAIrC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAOxD;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAO9E;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxG;AAUD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE1C;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,EAAE,CAKxD;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/F"}
1
+ {"version":3,"file":"turtle.d.ts","sourceRoot":"","sources":["../src/turtle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,IAAI,CAAC;AAIrC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE/E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAOxD;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAO9E;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxG;AAUD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE1C;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,IAAI,EAAE,CAKxD;AAyBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB/E;AAcD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAWhH"}
package/dist/turtle.js CHANGED
@@ -43,13 +43,53 @@ export function sortQuads(quads) {
43
43
  keyed.sort((left, right) => (left.key < right.key ? -1 : left.key > right.key ? 1 : 0));
44
44
  return keyed.map((each) => each.quad);
45
45
  }
46
+ const shaclNamespace = "http://www.w3.org/ns/shacl#";
47
+ const rdfType = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
48
+ const owlOntology = "http://www.w3.org/2002/07/owl#Ontology";
49
+ const dctermsIdentifier = "http://purl.org/dc/terms/identifier";
50
+ // The app ontologies' headers: an app's vocabulary graph describes itself as an owl:Ontology with an identifier.
51
+ function appOntologies(quads) {
52
+ const typed = new Set(quads
53
+ .filter((quad) => quad.predicate.value === rdfType && quad.object.value === owlOntology)
54
+ .map((quad) => quad.subject.value));
55
+ return new Set(quads
56
+ .filter((quad) => quad.predicate.value === dctermsIdentifier && typed.has(quad.subject.value))
57
+ .map((quad) => quad.subject.value));
58
+ }
59
+ // An app declares its prefixes with sh:declare from its ontology, since the store keeps no prefix of an app's.
60
+ export function declaredPrefixes(quads) {
61
+ const valueOf = (subject, predicate) => quads.find((quad) => quad.subject.value === subject && quad.predicate.value === `${shaclNamespace}${predicate}`)
62
+ ?.object.value;
63
+ const ontologies = appOntologies(quads);
64
+ const declarations = new Set(quads
65
+ .filter((quad) => quad.predicate.value === `${shaclNamespace}declare` && ontologies.has(quad.subject.value))
66
+ .map((quad) => quad.object.value));
67
+ const prefixes = {};
68
+ for (const declaration of declarations) {
69
+ const prefix = valueOf(declaration, "prefix");
70
+ const namespace = valueOf(declaration, "namespace");
71
+ if (prefix === undefined || namespace === undefined)
72
+ continue;
73
+ addPrefix(prefixes, prefix, namespace);
74
+ }
75
+ return prefixes;
76
+ }
77
+ function addPrefix(prefixes, prefix, namespace) {
78
+ const taken = prefixes[prefix];
79
+ if (taken !== undefined && taken !== namespace) {
80
+ throw new Error(`the prefix ${prefix}: names both <${taken}> and <${namespace}>. Give one of the apps another prefix.`);
81
+ }
82
+ prefixes[prefix] = namespace;
83
+ }
46
84
  // LDkit reads one document.
47
- export function mergeShapes(shacl, ontology, vocabBase) {
85
+ export async function mergeShapes(shacl, ontology, vocabBase, apps = "") {
48
86
  const shapes = parseTurtle(shacl);
49
87
  const subclasses = parseTurtle(ontology);
50
- return writeTurtle({
51
- quads: sortQuads([...shapes.quads, ...subclasses.quads]),
52
- prefixes: namePrefixes({ ...shapes.prefixes, ...subclasses.prefixes }, vocabBase),
53
- });
88
+ const appGraphs = parseTurtle(apps);
89
+ const prefixes = namePrefixes({ ...shapes.prefixes, ...subclasses.prefixes }, vocabBase);
90
+ for (const [prefix, namespace] of Object.entries(declaredPrefixes(appGraphs.quads))) {
91
+ addPrefix(prefixes, prefix, namespace);
92
+ }
93
+ return writeTurtle({ quads: sortQuads([...shapes.quads, ...subclasses.quads, ...appGraphs.quads]), prefixes });
54
94
  }
55
95
  //# sourceMappingURL=turtle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"turtle.js","sourceRoot":"","sources":["../src/turtle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turtle.js","sourceRoot":"","sources":["../src/turtle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manta-eu/codegen",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "CLI that generates LDkit schemas from a realm's SHACL shapes, read from its datastore",
5
5
  "homepage": "https://developers.manta.eu",
6
6
  "keywords": [
@@ -29,7 +29,7 @@
29
29
  "ldkit": "^2.9.0",
30
30
  "n3": "^2.7.12",
31
31
  "prettier": "^3.8.1",
32
- "@manta-eu/auth": "0.5.0"
32
+ "@manta-eu/auth": "0.6.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^24.13.3",
package/src/cli.ts CHANGED
@@ -1,15 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- cachedToken,
4
- ciClientId,
5
3
  clientIdHelp,
4
+ cliTokenSource,
6
5
  defaultDeployment,
7
6
  describeError,
8
- mintWithClientCredentials,
9
- publicClientFrom,
10
7
  registerAuthCommands,
11
8
  type TokenSource,
12
- userTokenSource,
13
9
  } from "@manta-eu/auth";
14
10
  import { Command, Option } from "commander";
15
11
  import { resolve } from "node:path";
@@ -27,17 +23,8 @@ type FetchOptions = {
27
23
  out: string;
28
24
  };
29
25
 
30
- // The secret stays out of the flags: an argument list is readable to every process on the machine.
31
26
  function tokenSourceFor(options: FetchOptions): TokenSource {
32
- const secret = process.env.MANTA_CLIENT_SECRET;
33
-
34
- if (secret) {
35
- const client = publicClientFrom({ ...options, clientId: options.clientId ?? ciClientId });
36
-
37
- return cachedToken(() => mintWithClientCredentials({ ...client, clientSecret: secret, scope: options.scope }));
38
- }
39
-
40
- return userTokenSource(publicClientFrom(options), { label: "manta-codegen", useDeviceCode: options.useDeviceCode });
27
+ return cliTokenSource(options, { label: "manta-codegen" });
41
28
  }
42
29
 
43
30
  function reportTargetClasses(targetClasses: Record<string, number>): void {
@@ -1,6 +1,7 @@
1
1
  import { type FetchLike, type TokenSource, withRenewal } from "@manta-eu/auth";
2
2
  import {
3
3
  countTargetClasses,
4
+ fetchAppGraphsTurtle,
4
5
  fetchGraphList,
5
6
  fetchGraphTurtle,
6
7
  findOntologyGraph,
@@ -13,6 +14,7 @@ export type RealmShapes = {
13
14
  ontologyGraphIri: string;
14
15
  shacl: string;
15
16
  ontology: string;
17
+ apps: string;
16
18
  targetClasses: Record<string, number>;
17
19
  };
18
20
 
@@ -35,11 +37,17 @@ export async function fetchRealmShapes(
35
37
  fetchGraphTurtle({ endpoint, graphIri: ontologyGraphIri, token: accessToken }, fetchImpl),
36
38
  );
37
39
 
40
+ const vocabBase = vocabBaseFromOntologyGraph(ontologyGraphIri);
41
+ const apps = await withRenewal(token, (accessToken) =>
42
+ fetchAppGraphsTurtle({ endpoint, token: accessToken }, fetchImpl),
43
+ );
44
+
38
45
  return {
39
- vocabBase: vocabBaseFromOntologyGraph(ontologyGraphIri),
46
+ vocabBase,
40
47
  ontologyGraphIri,
41
48
  shacl,
42
49
  ontology,
43
- targetClasses: countTargetClasses(`${shacl}\n${ontology}`),
50
+ apps,
51
+ targetClasses: countTargetClasses(`${shacl}\n${ontology}\n${apps}`),
44
52
  };
45
53
  }
package/src/generate.ts CHANGED
@@ -83,14 +83,17 @@ export function runLdkit(shaclPath: string, outDir: string): void {
83
83
  failOnUnknownNamespace(outDir);
84
84
  }
85
85
 
86
- export type ShapeSources = { shacl: string; ontology: string; vocabBase: string };
86
+ export type ShapeSources = { shacl: string; ontology: string; vocabBase: string; apps?: string };
87
87
 
88
- export async function generatePackage({ shacl, ontology, vocabBase }: ShapeSources, outDir: string): Promise<void> {
88
+ export async function generatePackage(
89
+ { shacl, ontology, vocabBase, apps }: ShapeSources,
90
+ outDir: string,
91
+ ): Promise<void> {
89
92
  const stageDir = mkdtempSync(join(tmpdir(), "manta-codegen-"));
90
93
 
91
94
  try {
92
95
  const merged = join(stageDir, "shapes.ttl");
93
- writeFileSync(merged, await mergeShapes(shacl, ontology, vocabBase));
96
+ writeFileSync(merged, await mergeShapes(shacl, ontology, vocabBase, apps));
94
97
  runLdkit(merged, outDir);
95
98
  await normalizeGeneratedFiles(outDir);
96
99
  } finally {
package/src/shapes.ts CHANGED
@@ -15,6 +15,14 @@ export function constructGraphQuery(graphIri: string): string {
15
15
  return `CONSTRUCT { ?s ?p ?o } WHERE { GRAPH <${graphIri}> { ?s ?p ?o } }`;
16
16
  }
17
17
 
18
+ // Each app's vocabulary graph describes itself as an owl:Ontology with an identifier, so it is found from triples.
19
+ export function appGraphsQuery(): string {
20
+ return `CONSTRUCT { ?s ?p ?o } WHERE {
21
+ GRAPH ?g { ?appGraph a <http://www.w3.org/2002/07/owl#Ontology> ; <http://purl.org/dc/terms/identifier> ?name . ?s ?p ?o }
22
+ FILTER(?appGraph = ?g)
23
+ }`;
24
+ }
25
+
18
26
  export function graphListQuery(): string {
19
27
  return "SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }";
20
28
  }
@@ -98,6 +106,16 @@ export async function fetchGraphTurtle(request: GraphRequest, fetchImpl: FetchLi
98
106
  return (await runSparql(request, call, fetchImpl)).text();
99
107
  }
100
108
 
109
+ export async function fetchAppGraphsTurtle(access: DatastoreAccess, fetchImpl: FetchLike = fetch): Promise<string> {
110
+ const call = {
111
+ query: appGraphsQuery(),
112
+ accept: "text/turtle",
113
+ action: "the read of the apps' vocabularies",
114
+ };
115
+
116
+ return (await runSparql(access, call, fetchImpl)).text();
117
+ }
118
+
101
119
  export async function fetchGraphList(access: DatastoreAccess, fetchImpl: FetchLike = fetch): Promise<string[]> {
102
120
  const call = { query: graphListQuery(), accept: "application/sparql-results+json", action: "the graph list" };
103
121
 
package/src/turtle.ts CHANGED
@@ -57,13 +57,73 @@ export function sortQuads(quads: readonly Quad[]): Quad[] {
57
57
  return keyed.map((each) => each.quad);
58
58
  }
59
59
 
60
+ const shaclNamespace = "http://www.w3.org/ns/shacl#";
61
+
62
+ const rdfType = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
63
+
64
+ const owlOntology = "http://www.w3.org/2002/07/owl#Ontology";
65
+
66
+ const dctermsIdentifier = "http://purl.org/dc/terms/identifier";
67
+
68
+ // The app ontologies' headers: an app's vocabulary graph describes itself as an owl:Ontology with an identifier.
69
+ function appOntologies(quads: readonly Quad[]): Set<string> {
70
+ const typed = new Set(
71
+ quads
72
+ .filter((quad) => quad.predicate.value === rdfType && quad.object.value === owlOntology)
73
+ .map((quad) => quad.subject.value),
74
+ );
75
+ return new Set(
76
+ quads
77
+ .filter((quad) => quad.predicate.value === dctermsIdentifier && typed.has(quad.subject.value))
78
+ .map((quad) => quad.subject.value),
79
+ );
80
+ }
81
+
82
+ // An app declares its prefixes with sh:declare from its ontology, since the store keeps no prefix of an app's.
83
+ export function declaredPrefixes(quads: readonly Quad[]): Record<string, string> {
84
+ const valueOf = (subject: string, predicate: string) =>
85
+ quads.find((quad) => quad.subject.value === subject && quad.predicate.value === `${shaclNamespace}${predicate}`)
86
+ ?.object.value;
87
+ const ontologies = appOntologies(quads);
88
+ const declarations = new Set(
89
+ quads
90
+ .filter((quad) => quad.predicate.value === `${shaclNamespace}declare` && ontologies.has(quad.subject.value))
91
+ .map((quad) => quad.object.value),
92
+ );
93
+ const prefixes: Record<string, string> = {};
94
+
95
+ for (const declaration of declarations) {
96
+ const prefix = valueOf(declaration, "prefix");
97
+ const namespace = valueOf(declaration, "namespace");
98
+ if (prefix === undefined || namespace === undefined) continue;
99
+
100
+ addPrefix(prefixes, prefix, namespace);
101
+ }
102
+
103
+ return prefixes;
104
+ }
105
+
106
+ function addPrefix(prefixes: Record<string, string>, prefix: string, namespace: string): void {
107
+ const taken = prefixes[prefix];
108
+ if (taken !== undefined && taken !== namespace) {
109
+ throw new Error(
110
+ `the prefix ${prefix}: names both <${taken}> and <${namespace}>. Give one of the apps another prefix.`,
111
+ );
112
+ }
113
+
114
+ prefixes[prefix] = namespace;
115
+ }
116
+
60
117
  // LDkit reads one document.
61
- export function mergeShapes(shacl: string, ontology: string, vocabBase: string): Promise<string> {
118
+ export async function mergeShapes(shacl: string, ontology: string, vocabBase: string, apps = ""): Promise<string> {
62
119
  const shapes = parseTurtle(shacl);
63
120
  const subclasses = parseTurtle(ontology);
121
+ const appGraphs = parseTurtle(apps);
122
+ const prefixes = namePrefixes({ ...shapes.prefixes, ...subclasses.prefixes }, vocabBase);
64
123
 
65
- return writeTurtle({
66
- quads: sortQuads([...shapes.quads, ...subclasses.quads]),
67
- prefixes: namePrefixes({ ...shapes.prefixes, ...subclasses.prefixes }, vocabBase),
68
- });
124
+ for (const [prefix, namespace] of Object.entries(declaredPrefixes(appGraphs.quads))) {
125
+ addPrefix(prefixes, prefix, namespace);
126
+ }
127
+
128
+ return writeTurtle({ quads: sortQuads([...shapes.quads, ...subclasses.quads, ...appGraphs.quads]), prefixes });
69
129
  }