From 97b8ec0ed693677d8f26d55e9c990329707c5de0 Mon Sep 17 00:00:00 2001 From: Polle Pas Date: Wed, 27 Sep 2023 12:08:58 +0200 Subject: [PATCH] #665 Type generator + Typed Resources --- browser/.eslintrc.cjs | 3 +- browser/bun.lockb | Bin 465953 -> 0 bytes browser/cli/.gitignore | 1 + browser/cli/package.json | 32 ++++ browser/cli/readme.md | 161 ++++++++++++++++++ browser/cli/src/commands/init.ts | 33 ++++ browser/cli/src/commands/ontologies.ts | 49 ++++++ browser/cli/src/config.ts | 28 +++ browser/cli/src/generateBaseObject.ts | 72 ++++++++ browser/cli/src/generateClassExports.ts | 29 ++++ browser/cli/src/generateClasses.ts | 64 +++++++ browser/cli/src/generateIndex.ts | 49 ++++++ browser/cli/src/generateOntology.ts | 68 ++++++++ browser/cli/src/generatePropTypeMapping.ts | 43 +++++ .../cli/src/generateSubjectToNameMapping.ts | 23 +++ browser/cli/src/index.ts | 26 +++ browser/cli/src/store.ts | 35 ++++ browser/cli/src/usage.ts | 7 + browser/cli/src/utils.ts | 4 + browser/cli/tsconfig.json | 17 ++ browser/lib/package.json | 2 +- browser/lib/src/index.ts | 1 + browser/lib/src/ontology.ts | 77 +++++++++ browser/lib/src/resource.ts | 39 ++++- browser/lib/src/store.ts | 25 +-- browser/package.json | 3 +- browser/pnpm-lock.yaml | 27 ++- browser/react/package.json | 2 +- browser/react/src/hooks.ts | 9 +- browser/react/src/useMemberFromCollection.ts | 11 +- 30 files changed, 908 insertions(+), 32 deletions(-) delete mode 100755 browser/bun.lockb create mode 100644 browser/cli/.gitignore create mode 100644 browser/cli/package.json create mode 100644 browser/cli/readme.md create mode 100644 browser/cli/src/commands/init.ts create mode 100644 browser/cli/src/commands/ontologies.ts create mode 100644 browser/cli/src/config.ts create mode 100644 browser/cli/src/generateBaseObject.ts create mode 100644 browser/cli/src/generateClassExports.ts create mode 100644 browser/cli/src/generateClasses.ts create mode 100644 browser/cli/src/generateIndex.ts create mode 100644 browser/cli/src/generateOntology.ts create mode 100644 browser/cli/src/generatePropTypeMapping.ts create mode 100644 browser/cli/src/generateSubjectToNameMapping.ts create mode 100644 browser/cli/src/index.ts create mode 100644 browser/cli/src/store.ts create mode 100644 browser/cli/src/usage.ts create mode 100644 browser/cli/src/utils.ts create mode 100644 browser/cli/tsconfig.json create mode 100644 browser/lib/src/ontology.ts diff --git a/browser/.eslintrc.cjs b/browser/.eslintrc.cjs index aa270894a..e9382c47f 100644 --- a/browser/.eslintrc.cjs +++ b/browser/.eslintrc.cjs @@ -31,8 +31,9 @@ module.exports = { tsconfigRootDir: __dirname, project: [ 'lib/tsconfig.json', + 'cli/tsconfig.json', 'react/tsconfig.json', - 'data-browser/tsconfig.json', + 'data-browser/tsconfig.json' ], }, plugins: ['react', '@typescript-eslint', 'prettier', 'react-hooks', 'jsx-a11y'], diff --git a/browser/bun.lockb b/browser/bun.lockb deleted file mode 100755 index a2e44c79c21aac99909a43ab93af939bc1690c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465953 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%0DHx9p;XiKfLM_m+6#`kV5?S!FNCT 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 sLT7GmS*|>g&FLbnAYvU( + 'https://myblog.com/atomic-is-awesome', +); + +const comments = myBlogpost.props.comments; // string[] automatically infered! +``` + +## Getting started + +### Installation + +You can install the package globally or as a dev dependancy of your project. + +**Globally**: + +``` +npm install -g @tomic/cli +``` + +**Dev Dependancy:** + +``` +npm install -D @tomic/cli +``` + +If you've installed it globally you can now run the `ad-generate` command in your command line. +When installing as a dependancy your PATH won't know about the command and so you will have to make a script in your `package.json` and run it via `npm ` instead. + +```json +"scripts": { + "generate": "ad-generate" +} +``` + +### Generating the files + +To start generating your ontologies you first need to configure the cli. Start by creating the config file by running: + +``` +ad-generate init +``` + +There should now be a file called `atomic.config.json` in the folder where you ran this command. The contents will look like this: + +```json +{ + "outputFolder": "./src/ontologies", + "moduleAlias": "@tomic/lib", + "ontologies": [] +} +``` + +> If you want to change the location where the files are generated you can change the `outputFolder` field. + +Next add the subjects of your atomic ontologies to the `ontologies` array in the config. + +Now we will generate the ontology files. We do this by running the `ad-generate ontologies` command. If your ontologies don't have public read rights you will have to add an agent secret to the command that has access to these resources. + +``` +ad-generate ontologies --agent +``` + +> Agent secret can also be preconfigured in the config **but be careful** when using version control as you can easily leak your secret this way. + +After running the command the files will have been generated in the specified output folder along with an `index.ts` file. The only thing left to do is to register our ontologies with @tomic/lib. This should be done as soon in your apps runtime lifecycle as possible, for example in your App.tsx when using React or root index.ts in most cases. + +```typescript +import { initOntologies } from './ontologies'; + +initOntologies(); +``` + +### Using the types + +If everything went well the generated files should now be in the output folder. +In order to gain the benefit of the typings we will need to annotate our resource with its respective class like follows: + +```typescript +import { Book, creativeWorks } from './ontologies/creativeWorks.js'; + +const book = await store.getResourceAsync( + 'https://mybookstore.com/books/1', +); +``` + +Now we know what properties are required and recommend on this resource so we can safely infer the types + +Because we know `written-by` is a required property on book we can safely infer type string; + +```typescript +const authorSubject = book.get(creativeWorks.properties.writtenBy); // string +``` + +`description` has datatype Markdown and is inferred as string but it is a recommended property and might therefore be undefined + +```typescript +const description = book.get(core.properties.description); // string | undefined +``` + +If the property is not in any ontology we can not infer the type so it will be of type `JSONValue` +(this type includes `undefined`) + +```typescript +const unknownProp = book.get('https://unknownprop.site/prop/42'); // JSONValue +``` + +### Props shorthand + +Because you have initialised your ontologies before lib is aware of what properties exist and what their name and type is. Because of this it is possible to use the props field on a resource and get full intellisense and typing on it. + +```typescript +const book = await store.getResourceAsync( + 'https://mybookstore.com/books/1', +); + +const name = book.props.name; // string +const description = book.props.description; // string | undefined +``` + +> The props field is a computed property and is readonly. +> +> If you have to read very large number of properties at a time it is more efficient to use the `resource.get()` method instead of the props field because the props field iterates over the resources propval map. + +## Configuration + +@tomic/cli loads the config file from the root of your project. This file should be called `atomic.config.json` and needs to conform to the following interface. + +```typescript +interface AtomicConfig { + /** + * Path relative to this file where the generated files should be written to. + */ + outputFolder: string; + + /** + * [OPTIONAL] The @tomic/lib module identifier. + * The default should be sufficient in most but if you have given the module an alias you should change this value + */ + moduleAlias?: string; + + /** + * [OPTIONAL] The secret of the agent that is used to access your atomic data server. This can also be provided as a command line argument if you don't want to store it in the config file. + * If left empty the public agent is used. + */ + agentSecret?: string; + + /** The list of subjects of your ontologies */ + ontologies: string[]; +} +``` + +Running `ad-generate init` will create this file for you that you can then tweak to your own preferences. diff --git a/browser/cli/src/commands/init.ts b/browser/cli/src/commands/init.ts new file mode 100644 index 000000000..5d85acf71 --- /dev/null +++ b/browser/cli/src/commands/init.ts @@ -0,0 +1,33 @@ +/* eslint-disable no-console */ +import chalk from 'chalk'; +import * as fs from 'fs'; +import * as path from 'path'; + +const TEMPLATE_CONFIG_FILE = { + outputFolder: './src/ontologies', + moduleAlias: '@tomic/lib', + ontologies: [], +}; + +export const initCommand = async (args: string[]) => { + const forced = args.includes('--force') || args.includes('-f'); + const filePath = path.join(process.cwd(), 'atomic.config.json'); + const stat = fs.statSync(filePath); + + if (stat.isFile() && !forced) { + return console.error( + chalk.red( + `ERROR: File already exists. If you meant to override the existing file, use the command with the ${chalk.cyan( + '--force', + )} flag.`, + ), + ); + } + + console.log(chalk.cyan('Creating atomic.config.json')); + + const template = JSON.stringify(TEMPLATE_CONFIG_FILE, null, 2); + fs.writeFileSync(filePath, template); + + console.log(chalk.green('Done!')); +}; diff --git a/browser/cli/src/commands/ontologies.ts b/browser/cli/src/commands/ontologies.ts new file mode 100644 index 000000000..6553b10b7 --- /dev/null +++ b/browser/cli/src/commands/ontologies.ts @@ -0,0 +1,49 @@ +/* eslint-disable no-console */ + +import * as fs from 'fs'; +import chalk from 'chalk'; + +import * as path from 'path'; +import { generateOntology } from '../generateOntology.js'; +import { atomicConfig } from '../config.js'; +import { generateIndex } from '../generateIndex.js'; + +export const ontologiesCommand = async (_args: string[]) => { + console.log( + chalk.blue( + `Found ${chalk.red( + Object.keys(atomicConfig.ontologies).length, + )} ontologies`, + ), + ); + + for (const subject of Object.values(atomicConfig.ontologies)) { + write(await generateOntology(subject)); + } + + console.log(chalk.blue('Generating index...')); + + write(generateIndex(atomicConfig.ontologies)); + + console.log(chalk.green('Done!')); +}; + +const write = ({ + filename, + content, +}: { + filename: string; + content: string; +}) => { + console.log(chalk.blue(`Writing ${chalk.red(filename)}...`)); + + const filePath = path.join( + process.cwd(), + atomicConfig.outputFolder, + filename, + ); + + fs.writeFileSync(filePath, content); + + console.log(chalk.blue('Wrote to'), chalk.cyan(filePath)); +}; diff --git a/browser/cli/src/config.ts b/browser/cli/src/config.ts new file mode 100644 index 000000000..111904059 --- /dev/null +++ b/browser/cli/src/config.ts @@ -0,0 +1,28 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +export interface AtomicConfig { + /** + * Path relative to this file where the generated files should be written to. + */ + outputFolder: string; + /** + * [OPTIONAL] The @tomic/lib module identifier. + * The default should be sufficient in most but if you have given the module an alias you should change this value + */ + moduleAlias?: string; + /** + * [OPTIONAL] The secret of the agent that is used to access your atomic data server. This can also be provided as a command line argument if you don't want to store it in the config file. + * If left empty the public agent is used. + */ + agentSecret?: string; + /** The list of subjects of your ontologies */ + + ontologies: string[]; +} + +export const atomicConfig: AtomicConfig = JSON.parse( + fs + .readFileSync(path.resolve(process.cwd(), './atomic.config.json')) + .toString(), +); diff --git a/browser/cli/src/generateBaseObject.ts b/browser/cli/src/generateBaseObject.ts new file mode 100644 index 000000000..f48cef3a6 --- /dev/null +++ b/browser/cli/src/generateBaseObject.ts @@ -0,0 +1,72 @@ +import { Resource, urls } from '@tomic/lib'; +import { store } from './store.js'; +import { camelCaseify } from './utils.js'; + +export type ReverseMapping = Record; + +type BaseObject = { + classes: Record; + properties: Record; +}; + +export const generateBaseObject = async ( + ontology: Resource, +): Promise<[string, ReverseMapping]> => { + if (ontology.error) { + throw ontology.error; + } + + const classes = ontology.get(urls.properties.classes) as string[]; + const properties = ontology.get(urls.properties.properties) as string[]; + const name = camelCaseify(ontology.title); + + const baseObj = { + classes: await listToObj(classes), + properties: await listToObj(properties), + }; + + const objStr = `export const ${name} = { + classes: ${recordToString(baseObj.classes)}, + properties: ${recordToString(baseObj.properties)}, + } as const`; + + return [objStr, createReverseMapping(name, baseObj)]; +}; + +const listToObj = async (list: string[]): Promise> => { + const entries = await Promise.all( + list.map(async subject => { + const resource = await store.getResourceAsync(subject); + + return [camelCaseify(resource.title), subject]; + }), + ); + + return Object.fromEntries(entries); +}; + +const recordToString = (obj: Record): string => { + const innerSting = Object.entries(obj).reduce( + (acc, [key, value]) => `${acc}\n\t${key}: '${value}',`, + '', + ); + + return `{${innerSting}\n }`; +}; + +const createReverseMapping = ( + ontologyTitle: string, + obj: BaseObject, +): ReverseMapping => { + const reverseMapping: ReverseMapping = {}; + + for (const [name, subject] of Object.entries(obj.classes)) { + reverseMapping[subject] = `${ontologyTitle}.classes.${name}`; + } + + for (const [name, subject] of Object.entries(obj.properties)) { + reverseMapping[subject] = `${ontologyTitle}.properties.${name}`; + } + + return reverseMapping; +}; diff --git a/browser/cli/src/generateClassExports.ts b/browser/cli/src/generateClassExports.ts new file mode 100644 index 000000000..604955f95 --- /dev/null +++ b/browser/cli/src/generateClassExports.ts @@ -0,0 +1,29 @@ +import { Resource, urls } from '@tomic/lib'; +import { ReverseMapping } from './generateBaseObject.js'; +import { store } from './store.js'; +import { camelCaseify } from './utils.js'; + +export const generateClassExports = ( + ontology: Resource, + reverseMapping: ReverseMapping, +): string => { + const classes = ontology.getArray(urls.properties.classes) as string[]; + + return classes + .map(subject => { + const res = store.getResourceLoading(subject); + const objectPath = reverseMapping[subject]; + + return createExportLine(res.title, objectPath); + }) + .join('\n'); +}; + +const createExportLine = (title: string, objectPath: string) => + `export type ${capitalize(title)} = typeof ${objectPath};`; + +const capitalize = (str: string): string => { + const camelCased = camelCaseify(str); + + return camelCased.charAt(0).toUpperCase() + camelCased.slice(1); +}; diff --git a/browser/cli/src/generateClasses.ts b/browser/cli/src/generateClasses.ts new file mode 100644 index 000000000..7c2094a01 --- /dev/null +++ b/browser/cli/src/generateClasses.ts @@ -0,0 +1,64 @@ +import { Resource } from '@tomic/lib'; +import { store } from './store.js'; +import { ReverseMapping } from './generateBaseObject.js'; + +export const generateClasses = ( + ontology: Resource, + reverseMapping: ReverseMapping, +): string => { + const classes = ontology.get( + 'https://atomicdata.dev/properties/classes', + ) as string[]; + const classStringList = classes.map(subject => { + return generateClass(subject, reverseMapping); + }); + + const innerStr = classStringList.join('\n'); + + return `interface Classes { + ${innerStr} + }`; +}; + +const generateClass = ( + subject: string, + reverseMapping: ReverseMapping, +): string => { + const resource = store.getResourceLoading(subject); + + const transformSubject = (str: string) => { + const name = reverseMapping[str]; + + if (!name) { + return `'${str}'`; + } + + return `typeof ${name}`; + }; + + const requires = (resource.get( + 'https://atomicdata.dev/properties/requires', + ) ?? []) as string[]; + const recommends = (resource.get( + 'https://atomicdata.dev/properties/recommends', + ) ?? []) as string[]; + + return classString( + reverseMapping[subject], + requires.map(transformSubject), + recommends.map(transformSubject), + ); +}; + +const classString = ( + key: string, + requires: string[], + recommends: string[], +): string => { + return `[${key}]: { + requires: BaseProps${ + requires.length > 0 ? ' | ' + requires.join(' | ') : '' + }; + recommends: ${recommends.length > 0 ? recommends.join(' | ') : 'never'}; + };`; +}; diff --git a/browser/cli/src/generateIndex.ts b/browser/cli/src/generateIndex.ts new file mode 100644 index 000000000..6b01c5307 --- /dev/null +++ b/browser/cli/src/generateIndex.ts @@ -0,0 +1,49 @@ +import { store } from './store.js'; +import { camelCaseify } from './utils.js'; +import { atomicConfig } from './config.js'; + +enum Inserts { + MODULE_ALIAS = '{{1}}', + IMPORTS = '{{2}}', + REGISTER_ARGS = '{{3}}', +} + +const TEMPLATE = ` +/* ----------------------------------- +* GENERATED WITH ATOMIC-GENERATE +* -------------------------------- */ + +import { registerOntologies } from '${Inserts.MODULE_ALIAS}'; + +${Inserts.IMPORTS} + +export function initOntologies(): void { + registerOntologies(${Inserts.REGISTER_ARGS}); +} +`; + +export const generateIndex = (ontologies: string[]) => { + const names = ontologies.map(x => { + const res = store.getResourceLoading(x); + + return camelCaseify(res.title); + }); + + const importLines = names.map(createImportLine).join('\n'); + const registerArgs = names.join(', '); + + const content = TEMPLATE.replaceAll( + Inserts.MODULE_ALIAS, + atomicConfig.moduleAlias ?? '@tomic/lib', + ) + .replace(Inserts.IMPORTS, importLines) + .replace(Inserts.REGISTER_ARGS, registerArgs); + + return { + filename: 'index.ts', + content, + }; +}; + +const createImportLine = (name: string) => + `import { ${name} } from './${name}.js';`; diff --git a/browser/cli/src/generateOntology.ts b/browser/cli/src/generateOntology.ts new file mode 100644 index 000000000..7eb1066ac --- /dev/null +++ b/browser/cli/src/generateOntology.ts @@ -0,0 +1,68 @@ +import { generateBaseObject } from './generateBaseObject.js'; +import { generateClasses } from './generateClasses.js'; +import { store } from './store.js'; +import { camelCaseify } from './utils.js'; +// TODO: Replace with actual project config file. +import { generatePropTypeMapping } from './generatePropTypeMapping.js'; +import { generateSubjectToNameMapping } from './generateSubjectToNameMapping.js'; +import { generateClassExports } from './generateClassExports.js'; + +import { atomicConfig } from './config.js'; + +enum Inserts { + MODULE_ALIAS = '{{1}}', + BASE_OBJECT = '{{2}}', + CLASS_EXPORTS = '{{3}}', + CLASSES = '{{4}}', + PROP_TYPE_MAPPING = '{{7}}', + PROP_SUBJECT_TO_NAME_MAPPING = '{{8}}', +} + +const TEMPLATE = ` +/* ----------------------------------- +* GENERATED WITH ATOMIC-GENERATE +* -------------------------------- */ + +import { BaseProps } from '${Inserts.MODULE_ALIAS}' + +${Inserts.BASE_OBJECT} + +${Inserts.CLASS_EXPORTS} + +declare module '${Inserts.MODULE_ALIAS}' { + ${Inserts.CLASSES} + + ${Inserts.PROP_TYPE_MAPPING} + + ${Inserts.PROP_SUBJECT_TO_NAME_MAPPING} +} +`; + +export const generateOntology = async ( + subject: string, +): Promise<{ + filename: string; + content: string; +}> => { + const ontology = await store.getResourceAsync(subject); + const [baseObjStr, reverseMapping] = await generateBaseObject(ontology); + const classesStr = generateClasses(ontology, reverseMapping); + const propertiesStr = generatePropTypeMapping(ontology, reverseMapping); + const subToNameStr = generateSubjectToNameMapping(ontology, reverseMapping); + const classExportsStr = generateClassExports(ontology, reverseMapping); + + const content = TEMPLATE.replaceAll( + Inserts.MODULE_ALIAS, + atomicConfig.moduleAlias ?? '@tomic/lib', + ) + .replace(Inserts.BASE_OBJECT, baseObjStr) + .replace(Inserts.CLASS_EXPORTS, classExportsStr) + .replace(Inserts.CLASSES, classesStr) + .replace(Inserts.PROP_TYPE_MAPPING, propertiesStr) + .replace(Inserts.PROP_SUBJECT_TO_NAME_MAPPING, subToNameStr); + + return { + filename: `${camelCaseify(ontology.title)}.ts`, + content, + }; +}; diff --git a/browser/cli/src/generatePropTypeMapping.ts b/browser/cli/src/generatePropTypeMapping.ts new file mode 100644 index 000000000..2f72dd467 --- /dev/null +++ b/browser/cli/src/generatePropTypeMapping.ts @@ -0,0 +1,43 @@ +import { Datatype, Resource } from '@tomic/lib'; +import { store } from './store.js'; +import { ReverseMapping } from './generateBaseObject.js'; + +const DatatypeToTSTypeMap = { + [Datatype.ATOMIC_URL]: 'string', + [Datatype.RESOURCEARRAY]: 'string[]', + [Datatype.BOOLEAN]: 'boolean', + [Datatype.DATE]: 'string', + [Datatype.TIMESTAMP]: 'string', + [Datatype.INTEGER]: 'number', + [Datatype.FLOAT]: 'number', + [Datatype.STRING]: 'string', + [Datatype.SLUG]: 'string', + [Datatype.MARKDOWN]: 'string', + [Datatype.UNKNOWN]: 'JSONValue', +}; + +export const generatePropTypeMapping = ( + ontology: Resource, + reverseMapping: ReverseMapping, +): string => { + const properties = (ontology.get( + 'https://atomicdata.dev/properties/properties', + ) ?? []) as string[]; + + const lines = properties + .map(subject => generateLine(subject, reverseMapping)) + .join('\n'); + + return `interface PropTypeMapping { + ${lines} + }`; +}; + +const generateLine = (subject: string, reverseMapping: ReverseMapping) => { + const resource = store.getResourceLoading(subject); + const datatype = resource.get( + 'https://atomicdata.dev/properties/datatype', + ) as Datatype; + + return `[${reverseMapping[subject]}]: ${DatatypeToTSTypeMap[datatype]}`; +}; diff --git a/browser/cli/src/generateSubjectToNameMapping.ts b/browser/cli/src/generateSubjectToNameMapping.ts new file mode 100644 index 000000000..1b596d83b --- /dev/null +++ b/browser/cli/src/generateSubjectToNameMapping.ts @@ -0,0 +1,23 @@ +import { Resource } from '@tomic/lib'; +import { ReverseMapping } from './generateBaseObject.js'; + +export function generateSubjectToNameMapping( + ontology: Resource, + reverseMapping: ReverseMapping, +) { + const properties = ontology.getArray( + 'https://atomicdata.dev/properties/properties', + ) as string[]; + + const lines = properties.map(prop => propLine(prop, reverseMapping)); + + return `interface PropSubjectToNameMapping { + ${lines.join('\n')} + }`; +} + +const propLine = (subject: string, reverseMapping: ReverseMapping) => { + const name = reverseMapping[subject].split('.')[2]; + + return `[${reverseMapping[subject]}]: '${name}',`; +}; diff --git a/browser/cli/src/index.ts b/browser/cli/src/index.ts new file mode 100644 index 000000000..2ca1e9547 --- /dev/null +++ b/browser/cli/src/index.ts @@ -0,0 +1,26 @@ +#!/usr/bin/env node +/* eslint-disable no-console */ + +import chalk from 'chalk'; +import { usage } from './usage.js'; + +const command = process.argv[2]; + +const commands = new Map Promise>(); + +commands.set('ontologies', () => + import('./commands/ontologies.js').then(m => + m.ontologiesCommand(process.argv.slice(3)), + ), +); + +commands.set('init', () => + import('./commands/init.js').then(m => m.initCommand(process.argv.slice(3))), +); + +if (commands.has(command)) { + commands.get(command)?.(); +} else { + console.error(chalk.red('Unknown command'), chalk.cyan(command ?? '')); + console.log(usage); +} diff --git a/browser/cli/src/store.ts b/browser/cli/src/store.ts new file mode 100644 index 000000000..a0a88f98c --- /dev/null +++ b/browser/cli/src/store.ts @@ -0,0 +1,35 @@ +import { Agent, Store } from '@tomic/lib'; +import { atomicConfig } from './config.js'; + +const getCommandIndex = (): number | undefined => { + const agentIndex = process.argv.indexOf('--agent'); + if (agentIndex !== -1) return agentIndex; + + const shortAgentIndex = process.argv.indexOf('-a'); + if (shortAgentIndex !== -1) return shortAgentIndex; + + return undefined; +}; + +const getAgent = (): Agent | undefined => { + let secret; + const agentCommandIndex = getCommandIndex(); + + if (agentCommandIndex) { + secret = process.argv[agentCommandIndex + 1]; + } else { + secret = atomicConfig.agentSecret; + } + + if (!secret) return undefined; + + return Agent.fromSecret(secret); +}; + +export const store = new Store(); + +const agent = getAgent(); + +if (agent) { + store.setAgent(agent); +} diff --git a/browser/cli/src/usage.ts b/browser/cli/src/usage.ts new file mode 100644 index 000000000..0169269ee --- /dev/null +++ b/browser/cli/src/usage.ts @@ -0,0 +1,7 @@ +export const usage = ` +ad-generate + +Commands: + ontologies Generates typescript files for ontologies specified in the config file. + init Creates a template config file. +`; diff --git a/browser/cli/src/utils.ts b/browser/cli/src/utils.ts new file mode 100644 index 000000000..fe6e14062 --- /dev/null +++ b/browser/cli/src/utils.ts @@ -0,0 +1,4 @@ +export const camelCaseify = (str: string) => + str.replace(/-([a-z])/g, g => { + return g[1].toUpperCase(); + }); diff --git a/browser/cli/tsconfig.json b/browser/cli/tsconfig.json new file mode 100644 index 000000000..8a3f78764 --- /dev/null +++ b/browser/cli/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "outDir": "./bin", + "rootDir": ".", + "target": "ESNext", + "moduleResolution": "nodeNext", + "module": "nodeNext", + "noImplicitAny": true, + "strictNullChecks": true, + // We don't need type declarations for a cli app. + "declaration": false + }, + "include": [ + "./src", + ], + "references": [], +} diff --git a/browser/lib/package.json b/browser/lib/package.json index 447d281e6..2be95f095 100644 --- a/browser/lib/package.json +++ b/browser/lib/package.json @@ -1,5 +1,5 @@ { - "version": "0.35.1", + "version": "0.35.2", "author": "Joep Meindertsma", "dependencies": { "@noble/ed25519": "1.6.0", diff --git a/browser/lib/src/index.ts b/browser/lib/src/index.ts index 49cf13edd..f0071a603 100644 --- a/browser/lib/src/index.ts +++ b/browser/lib/src/index.ts @@ -46,3 +46,4 @@ export * from './urls.js'; export * from './truncate.js'; export * from './collection.js'; export * from './collectionBuilder.js'; +export * from './ontology.js'; diff --git a/browser/lib/src/ontology.ts b/browser/lib/src/ontology.ts new file mode 100644 index 000000000..ae6fc3f9d --- /dev/null +++ b/browser/lib/src/ontology.ts @@ -0,0 +1,77 @@ +import { JSONValue } from './value.js'; + +export type BaseObject = { + classes: Record; + properties: Record; +}; + +// Extended via module augmentation +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface Classes {} + +export type BaseProps = + | 'https://atomicdata.dev/properties/isA' + | 'https://atomicdata.dev/properties/parent'; + +// Extended via module augmentation +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface PropTypeMapping {} + +// Extended via module augmentation +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface PropSubjectToNameMapping {} + +export type Requires = Classes[C]['requires']; +export type Recommends = Classes[C]['recommends']; + +type PropsOfClass = { + [P in Requires]: P; +} & { + [P in Recommends]?: P; +}; + +/** + * Infers the js type a value can have on a resource for the given property. + * If the property is not known in any ontology, it will return JSONValue. + */ +export type InferTypeOfValueInTriple< + Class extends keyof Classes | never = never, + Prop extends string = string, + Returns = Prop extends keyof PropTypeMapping + ? Prop extends Requires + ? PropTypeMapping[Prop] + : Prop extends Recommends + ? PropTypeMapping[Prop] | undefined + : PropTypeMapping[Prop] | undefined + : JSONValue, +> = Returns; + +/** Type of the dynamically created resource.props field */ +export type QuickAccesPropType = { + readonly [Prop in keyof PropsOfClass as PropSubjectToNameMapping[Prop]]: InferTypeOfValueInTriple< + Class, + Prop + >; +}; + +export type OptionalClass = keyof Classes | never; + +// A map of all known classes and properties to their camelcased shortname. +const globalReverseNameMapping = new Map(); + +/** Let atomic lib know your custom ontologies exist */ +export function registerOntologies(...ontologies: BaseObject[]): void { + for (const ontology of ontologies) { + for (const [key, value] of Object.entries(ontology.classes)) { + globalReverseNameMapping.set(value, key); + } + + for (const [key, value] of Object.entries(ontology.properties)) { + globalReverseNameMapping.set(value, key); + } + } +} + +export function getKnownNameBySubject(subject: string): string | undefined { + return globalReverseNameMapping.get(subject); +} diff --git a/browser/lib/src/resource.ts b/browser/lib/src/resource.ts index c98175864..faf8b3fc8 100644 --- a/browser/lib/src/resource.ts +++ b/browser/lib/src/resource.ts @@ -14,6 +14,10 @@ import { applyCommitToResource, Commit, parseCommitResource, + InferTypeOfValueInTriple, + QuickAccesPropType, + getKnownNameBySubject, + OptionalClass, } from './index.js'; /** Contains the PropertyURL / Value combinations */ @@ -29,7 +33,7 @@ export const unknownSubject = 'unknown-subject'; * Describes an Atomic Resource, which has a Subject URL and a bunch of Property * / Value combinations. */ -export class Resource { +export class Resource { /** If the resource could not be fetched, we put that info here. */ public error?: Error; /** If the commit could not be saved, we put that info here. */ @@ -75,6 +79,20 @@ export class Resource { this.subject) as string; } + public get props(): QuickAccesPropType { + const props: QuickAccesPropType = {}; + + for (const prop of this.propvals.keys()) { + const name = getKnownNameBySubject(prop); + + if (name) { + props[name] = this.get(prop); + } + } + + return props; + } + /** Checks if the content of two Resource instances is equal * Warning: does not check CommitBuilder, loading state */ @@ -138,7 +156,7 @@ export class Resource { * Creates a clone of the Resource, which makes sure the reference is * different from the previous one. This can be useful when doing reference compares. */ - public clone(): Resource { + public clone(): Resource { const res = new Resource(this.subject); res.propvals = structuredClone(this.propvals); res.loading = this.loading; @@ -159,8 +177,10 @@ export class Resource { } /** Get a Value by its property */ - public get(propUrl: string): T { - return this.propvals.get(propUrl) as T; + public get>( + propUrl: Prop, + ): Returns { + return this.propvals.get(propUrl) as Returns; } /** @@ -185,7 +205,7 @@ export class Resource { return valToArray(result); } - /** Get a Value by its property */ + /** Returns a list of classes of this resource */ public getClasses(): string[] { return this.getSubjects(properties.isA); } @@ -518,9 +538,12 @@ export class Resource { * * When undefined is passed as value, the property is removed from the resource. */ - public async set( - prop: string, - value: JSONValue, + public async set< + Prop extends string, + Value extends InferTypeOfValueInTriple, + >( + prop: Prop, + value: Value, store: Store, /** * Disable validation if you don't need it. It might cause a fetch if the diff --git a/browser/lib/src/store.ts b/browser/lib/src/store.ts index b652b8449..e3efe2670 100644 --- a/browser/lib/src/store.ts +++ b/browser/lib/src/store.ts @@ -15,11 +15,14 @@ import { Commit, JSONADParser, FileOrFileLike, + OptionalClass, } from './index.js'; import { authenticate, fetchWebSocket, startWebsocket } from './websockets.js'; /** Function called when a resource is updated or removed */ -type ResourceCallback = (resource: Resource) => void; +type ResourceCallback = ( + resource: Resource, +) => void; /** Callback called when the stores agent changes */ type AgentCallback = (agent: Agent | undefined) => void; type ErrorCallback = (e: Error) => void; @@ -202,7 +205,7 @@ export class Store { /** * Always fetches resource from the server then adds it to the store. */ - public async fetchResourceFromServer( + public async fetchResourceFromServer( /** The resource URL to be fetched */ subject: string, opts: { @@ -220,9 +223,9 @@ export class Store { /** HTTP Body for POSTing */ body?: ArrayBuffer | string; } = {}, - ): Promise { + ): Promise> { if (opts.setLoading) { - const newR = new Resource(subject); + const newR = new Resource(subject); newR.loading = true; this.addResources(newR); } @@ -304,13 +307,13 @@ export class Store { * done in the background . If the subject is undefined, an empty non-saved * resource will be returned. */ - public getResourceLoading( + public getResourceLoading( subject: string = unknownSubject, opts: FetchOpts = {}, - ): Resource { + ): Resource { // This is needed because it can happen that the useResource react hook is called while there is no subject passed. if (subject === unknownSubject || subject === null) { - const newR = new Resource(unknownSubject, opts.newResource); + const newR = new Resource(unknownSubject, opts.newResource); return newR; } @@ -318,7 +321,7 @@ export class Store { const found = this.resources.get(subject); if (!found) { - const newR = new Resource(subject, opts.newResource); + const newR = new Resource(subject, opts.newResource); newR.loading = true; this.addResources(newR); @@ -345,7 +348,9 @@ export class Store { * store. Not recommended to use this for rendering, because it might cause * resources to be fetched multiple times. */ - public async getResourceAsync(subject: string): Promise { + public async getResourceAsync( + subject: string, + ): Promise> { const found = this.resources.get(subject); if (found && found.isReady()) { @@ -357,7 +362,7 @@ export class Store { return new Promise((resolve, reject) => { const defaultTimeout = 5000; - const cb = res => { + const cb: ResourceCallback = res => { this.unsubscribe(subject, cb); resolve(res); }; diff --git a/browser/package.json b/browser/package.json index 48f6e3359..e98b483ac 100644 --- a/browser/package.json +++ b/browser/package.json @@ -54,7 +54,8 @@ "packages": [ "lib", "react", - "data-browser" + "data-browser", + "cli" ] }, "packageManager": "pnpm@8.6.12", diff --git a/browser/pnpm-lock.yaml b/browser/pnpm-lock.yaml index 6cabf0cce..006441aab 100644 --- a/browser/pnpm-lock.yaml +++ b/browser/pnpm-lock.yaml @@ -97,6 +97,18 @@ importers: specifier: ^3.0.5 version: 3.2.7(@types/node@16.18.39) + cli: + dependencies: + '@tomic/lib': + specifier: ^0.35.1 + version: link:../lib + chalk: + specifier: ^5.3.0 + version: 5.3.0 + typescript: + specifier: ^4.8 + version: 4.9.5 + data-browser: dependencies: '@bugsnag/core': @@ -240,7 +252,7 @@ importers: version: 1.1.0 vite: specifier: ^4.0.4 - version: 4.4.8 + version: 4.4.8(@types/node@16.18.39) vite-plugin-pwa: specifier: ^0.14.1 version: 0.14.7(vite@4.4.8)(workbox-build@6.6.0)(workbox-window@6.6.0) @@ -269,6 +281,9 @@ importers: '@types/fast-json-stable-stringify': specifier: ^2.1.0 version: 2.1.0 + '@types/yargs': + specifier: ^17.0.24 + version: 17.0.24 chai: specifier: ^4.3.4 version: 4.3.7 @@ -4125,6 +4140,11 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -9660,7 +9680,7 @@ packages: fast-glob: 3.3.1 pretty-bytes: 6.1.1 rollup: 3.27.2 - vite: 4.4.8 + vite: 4.4.8(@types/node@16.18.39) workbox-build: 6.6.0 workbox-window: 6.6.0 transitivePeerDependencies: @@ -9701,7 +9721,7 @@ packages: fsevents: 2.3.2 dev: true - /vite@4.4.8: + /vite@4.4.8(@types/node@16.18.39): resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -9729,6 +9749,7 @@ packages: terser: optional: true dependencies: + '@types/node': 16.18.39 esbuild: 0.18.17 postcss: 8.4.27 rollup: 3.27.2 diff --git a/browser/react/package.json b/browser/react/package.json index cfd525f99..21303c125 100644 --- a/browser/react/package.json +++ b/browser/react/package.json @@ -1,5 +1,5 @@ { - "version": "0.35.0", + "version": "0.35.2", "author": "Joep Meindertsma", "description": "Atomic Data React library", "dependencies": { diff --git a/browser/react/src/hooks.ts b/browser/react/src/hooks.ts index b6d8152f0..4ae645abf 100644 --- a/browser/react/src/hooks.ts +++ b/browser/react/src/hooks.ts @@ -22,6 +22,7 @@ import { FetchOpts, unknownSubject, JSONArray, + OptionalClass, } from '@tomic/lib'; import { useDebouncedCallback } from './index.js'; @@ -29,12 +30,12 @@ import { useDebouncedCallback } from './index.js'; * Hook for getting a Resource in a React component. Will try to fetch the * subject and add its parsed values to the store. */ -export function useResource( +export function useResource( subject: string = unknownSubject, opts?: FetchOpts, -): Resource { +): Resource { const store = useStore(); - const [resource, setResource] = useState( + const [resource, setResource] = useState>( store.getResourceLoading(subject, opts), ); @@ -45,7 +46,7 @@ export function useResource( // When a component mounts, it needs to let the store know that it will subscribe to changes to that resource. useEffect(() => { - function handleNotify(updated: Resource) { + function handleNotify(updated: Resource) { // When a change happens, set the new Resource. setResource(updated); } diff --git a/browser/react/src/useMemberFromCollection.ts b/browser/react/src/useMemberFromCollection.ts index 8b42ac2c8..dc59786b4 100644 --- a/browser/react/src/useMemberFromCollection.ts +++ b/browser/react/src/useMemberFromCollection.ts @@ -1,14 +1,19 @@ -import { Collection, Resource, unknownSubject } from '@tomic/lib'; +import { + Collection, + OptionalClass, + Resource, + unknownSubject, +} from '@tomic/lib'; import { useEffect, useState } from 'react'; import { useResource } from './hooks.js'; /** * Gets a member from a collection by index. Handles pagination for you. */ -export function useMemberFromCollection( +export function useMemberFromCollection( collection: Collection, index: number, -): Resource { +): Resource { const [subject, setSubject] = useState(unknownSubject); const resource = useResource(subject);