@jigisha_ruparel/taf-client-metadata 0.1.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.
@@ -0,0 +1,84 @@
1
+ import { TafClientCore } from '@jigisha_ruparel/taf-client-core';
2
+
3
+ type ColumnType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'lookup';
4
+ interface LookupInfo {
5
+ lookupObject: string;
6
+ lookupField: string;
7
+ displayField: string;
8
+ }
9
+ interface FieldConfig {
10
+ defaultValue?: unknown;
11
+ maxLength?: number;
12
+ minValue?: number;
13
+ maxValue?: number;
14
+ picklistValues?: unknown[];
15
+ formatter?: string;
16
+ }
17
+ interface FieldSchema {
18
+ fieldName: string;
19
+ displayName: string;
20
+ dataType: number;
21
+ columnType: ColumnType;
22
+ typeName?: string;
23
+ isPrimaryKey: boolean;
24
+ isRequired: boolean;
25
+ isUnique: boolean;
26
+ isUpdatable: boolean;
27
+ isSearchable: boolean;
28
+ isVisible: boolean;
29
+ isConfidential: boolean;
30
+ isDeprecated: boolean;
31
+ isDisplayField: boolean;
32
+ lookup?: LookupInfo;
33
+ config?: FieldConfig;
34
+ }
35
+ interface EntitySchema {
36
+ appObjectId: string;
37
+ objectName: string;
38
+ displayName: string;
39
+ allowSoftDelete: boolean;
40
+ fields: FieldSchema[];
41
+ }
42
+ interface EntitySummary {
43
+ appObjectId: string;
44
+ objectName: string;
45
+ displayName: string;
46
+ }
47
+ interface FieldTypeInfo {
48
+ id: number;
49
+ name: string;
50
+ sqlType: string;
51
+ }
52
+ interface ScreenDef {
53
+ screenId: string;
54
+ screenName: string;
55
+ screenType: number;
56
+ container: unknown;
57
+ }
58
+ interface QueryDef {
59
+ queryId: string;
60
+ queryName: string;
61
+ appObjectId: string;
62
+ appObjectName: string;
63
+ configurations: unknown;
64
+ }
65
+
66
+ interface MetadataClient {
67
+ getEntity(nameOrId: string, version?: string): Promise<EntitySchema>;
68
+ listEntities(version?: string): Promise<EntitySummary[]>;
69
+ getFieldTypes(): Promise<Map<number, FieldTypeInfo>>;
70
+ getScreen(screenId: string): Promise<ScreenDef>;
71
+ getQuery(idOrName: string | {
72
+ appObjectName: string;
73
+ queryName: string;
74
+ }, version?: string): Promise<QueryDef>;
75
+ }
76
+ declare function createMetadataClient(core: TafClientCore): MetadataClient;
77
+
78
+ declare function columnTypeFor(dataType: number, hasLookup: boolean): ColumnType;
79
+ declare function parseAppObject(resp: {
80
+ appObjectId?: string;
81
+ appObjectJson?: string;
82
+ }): EntitySchema;
83
+
84
+ export { type ColumnType, type EntitySchema, type EntitySummary, type FieldConfig, type FieldSchema, type FieldTypeInfo, type LookupInfo, type MetadataClient, type QueryDef, type ScreenDef, columnTypeFor, createMetadataClient, parseAppObject };
package/dist/index.js ADDED
@@ -0,0 +1,132 @@
1
+ // src/metadata.ts
2
+ import { unwrap, throwForError } from "@jigisha_ruparel/taf-client-core";
3
+
4
+ // src/map.ts
5
+ function columnTypeFor(dataType, hasLookup) {
6
+ if (hasLookup) return "lookup";
7
+ switch (dataType) {
8
+ case 1:
9
+ return "string";
10
+ case 2:
11
+ case 4:
12
+ case 16:
13
+ return "number";
14
+ case 3:
15
+ return "boolean";
16
+ case 5:
17
+ return "date";
18
+ case 6:
19
+ return "datetime";
20
+ case 17:
21
+ return "lookup";
22
+ default:
23
+ return "string";
24
+ }
25
+ }
26
+ function dataTypeOf(ft) {
27
+ if (ft && typeof ft === "object" && "dataType" in ft) return Number(ft.dataType) || 0;
28
+ return typeof ft === "number" ? ft : 0;
29
+ }
30
+ function b(v) {
31
+ return v === true;
32
+ }
33
+ function mapField(fd) {
34
+ const dataType = dataTypeOf(fd["fieldType"]);
35
+ const lud = fd["lookUpDetails"];
36
+ const lookup = lud ? { lookupObject: String(lud["lookupObject"] ?? ""), lookupField: String(lud["lookupField"] ?? "Id"), displayField: String(lud["displayField"] ?? "") } : void 0;
37
+ const cfg = fd["fieldConfiguration"];
38
+ return {
39
+ fieldName: String(fd["fieldName"] ?? ""),
40
+ displayName: String(fd["displayName"] ?? fd["fieldName"] ?? ""),
41
+ dataType,
42
+ columnType: columnTypeFor(dataType, !!lookup),
43
+ isPrimaryKey: b(fd["isPrimaryKey"]),
44
+ isRequired: b(fd["isRequired"]),
45
+ isUnique: b(fd["isUnique"]),
46
+ isUpdatable: fd["isUpdatable"] !== false,
47
+ isSearchable: b(fd["isSearchable"]),
48
+ isVisible: fd["isVisible"] !== false,
49
+ isConfidential: b(fd["isConfidential"]),
50
+ isDeprecated: b(fd["isDeprecated"]),
51
+ isDisplayField: b(fd["isDisplayField"]),
52
+ lookup,
53
+ config: cfg ? { defaultValue: cfg["defaultValue"], maxLength: cfg["maxLength"], minValue: cfg["minValue"], maxValue: cfg["maxValue"], picklistValues: cfg["picklistValues"], formatter: cfg["formatter"] } : void 0
54
+ };
55
+ }
56
+ function parseAppObject(resp) {
57
+ let ao = {};
58
+ try {
59
+ ao = resp.appObjectJson ? JSON.parse(resp.appObjectJson) : {};
60
+ } catch {
61
+ ao = {};
62
+ }
63
+ const fields = Array.isArray(ao["fields"]) ? ao["fields"].map(mapField) : [];
64
+ return {
65
+ appObjectId: String(resp.appObjectId ?? ao["appObjectId"] ?? ""),
66
+ objectName: String(ao["objectName"] ?? ""),
67
+ displayName: String(ao["displayName"] ?? ao["objectName"] ?? ""),
68
+ allowSoftDelete: b(ao["allowSoftDelete"]),
69
+ fields
70
+ };
71
+ }
72
+ function mapFieldTypes(items) {
73
+ const m = /* @__PURE__ */ new Map();
74
+ for (const it of items ?? []) {
75
+ const id = Number(it["id"]);
76
+ if (!Number.isNaN(id)) m.set(id, { id, name: String(it["name"] ?? ""), sqlType: String(it["canonicalSqlType"] ?? it["sqlType"] ?? "") });
77
+ }
78
+ return m;
79
+ }
80
+
81
+ // src/metadata.ts
82
+ var q = (v) => v ? `?version=${encodeURIComponent(v)}` : "";
83
+ function jsonParse(s) {
84
+ if (typeof s !== "string") return s;
85
+ try {
86
+ return JSON.parse(s);
87
+ } catch {
88
+ return s;
89
+ }
90
+ }
91
+ function createMetadataClient(core) {
92
+ const { http } = core;
93
+ let fieldTypes = null;
94
+ async function get(path) {
95
+ const res = await http.request("metadata", "GET", path);
96
+ const { ok, value, error } = unwrap(res.body);
97
+ if (!ok) throwForError(error, res.status);
98
+ return value;
99
+ }
100
+ return {
101
+ async getEntity(nameOrId, version) {
102
+ const resp = await get(`appobject/${encodeURIComponent(nameOrId)}${q(version)}`);
103
+ return parseAppObject(resp);
104
+ },
105
+ async listEntities(version) {
106
+ const schema = await get(`metadata/schema${q(version)}`);
107
+ return (schema.appObjects ?? []).map((a) => ({ appObjectId: String(a["appObjectId"] ?? ""), objectName: String(a["objectName"] ?? a["appObjectName"] ?? ""), displayName: String(a["displayName"] ?? a["objectName"] ?? "") }));
108
+ },
109
+ async getFieldTypes() {
110
+ if (fieldTypes) return fieldTypes;
111
+ const resp = await get("metadata/field-types");
112
+ const items = Array.isArray(resp) ? resp : resp.items ?? [];
113
+ fieldTypes = mapFieldTypes(items);
114
+ return fieldTypes;
115
+ },
116
+ async getScreen(screenId) {
117
+ const s = await get(`screen/${encodeURIComponent(screenId)}`);
118
+ return { screenId: String(s["screenId"] ?? screenId), screenName: String(s["screenName"] ?? ""), screenType: Number(s["screenType"] ?? 0), container: jsonParse(s["container"]) };
119
+ },
120
+ async getQuery(idOrName, version) {
121
+ const path = typeof idOrName === "string" ? `query/${encodeURIComponent(idOrName)}${q(version)}` : `query?appObjectName=${encodeURIComponent(idOrName.appObjectName)}&queryName=${encodeURIComponent(idOrName.queryName)}${version ? `&version=${encodeURIComponent(version)}` : ""}`;
122
+ const r = await get(path);
123
+ return { queryId: String(r["queryId"] ?? ""), queryName: String(r["queryName"] ?? ""), appObjectId: String(r["appObjectId"] ?? ""), appObjectName: String(r["appObjectName"] ?? ""), configurations: jsonParse(r["configurations"]) };
124
+ }
125
+ };
126
+ }
127
+ export {
128
+ columnTypeFor,
129
+ createMetadataClient,
130
+ parseAppObject
131
+ };
132
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/metadata.ts","../src/map.ts"],"sourcesContent":["import type { TafClientCore } from '@jigisha_ruparel/taf-client-core';\nimport { unwrap, throwForError } from '@jigisha_ruparel/taf-client-core';\nimport type { EntitySchema, EntitySummary, FieldTypeInfo, QueryDef, ScreenDef } from './types';\nimport { mapFieldTypes, parseAppObject } from './map';\n\nexport interface MetadataClient {\n getEntity(nameOrId: string, version?: string): Promise<EntitySchema>;\n listEntities(version?: string): Promise<EntitySummary[]>;\n getFieldTypes(): Promise<Map<number, FieldTypeInfo>>;\n getScreen(screenId: string): Promise<ScreenDef>;\n getQuery(idOrName: string | { appObjectName: string; queryName: string }, version?: string): Promise<QueryDef>;\n}\nconst q = (v?: string) => (v ? `?version=${encodeURIComponent(v)}` : '');\nfunction jsonParse(s: unknown): unknown { if (typeof s !== 'string') return s; try { return JSON.parse(s); } catch { return s; } }\n\nexport function createMetadataClient(core: TafClientCore): MetadataClient {\n const { http } = core;\n let fieldTypes: Map<number, FieldTypeInfo> | null = null;\n async function get<T>(path: string): Promise<T> {\n const res = await http.request<unknown>('metadata', 'GET', path);\n const { ok, value, error } = unwrap<T>(res.body);\n if (!ok) throwForError(error, res.status);\n return value as T;\n }\n return {\n async getEntity(nameOrId, version) {\n const resp = await get<{ appObjectId?: string; appObjectJson?: string }>(`appobject/${encodeURIComponent(nameOrId)}${q(version)}`);\n return parseAppObject(resp);\n },\n async listEntities(version) {\n const schema = await get<{ appObjects?: Record<string, unknown>[] }>(`metadata/schema${q(version)}`);\n return (schema.appObjects ?? []).map((a) => ({ appObjectId: String(a['appObjectId'] ?? ''), objectName: String(a['objectName'] ?? a['appObjectName'] ?? ''), displayName: String(a['displayName'] ?? a['objectName'] ?? '') }));\n },\n async getFieldTypes() {\n if (fieldTypes) return fieldTypes;\n const resp = await get<{ items?: Record<string, unknown>[] } | Record<string, unknown>[]>('metadata/field-types');\n const items = Array.isArray(resp) ? resp : (resp.items ?? []);\n fieldTypes = mapFieldTypes(items);\n return fieldTypes;\n },\n async getScreen(screenId) {\n const s = await get<Record<string, unknown>>(`screen/${encodeURIComponent(screenId)}`);\n return { screenId: String(s['screenId'] ?? screenId), screenName: String(s['screenName'] ?? ''), screenType: Number(s['screenType'] ?? 0), container: jsonParse(s['container']) };\n },\n async getQuery(idOrName, version) {\n const path = typeof idOrName === 'string'\n ? `query/${encodeURIComponent(idOrName)}${q(version)}`\n : `query?appObjectName=${encodeURIComponent(idOrName.appObjectName)}&queryName=${encodeURIComponent(idOrName.queryName)}${version ? `&version=${encodeURIComponent(version)}` : ''}`;\n const r = await get<Record<string, unknown>>(path);\n return { queryId: String(r['queryId'] ?? ''), queryName: String(r['queryName'] ?? ''), appObjectId: String(r['appObjectId'] ?? ''), appObjectName: String(r['appObjectName'] ?? ''), configurations: jsonParse(r['configurations']) };\n },\n };\n}\n","import type { ColumnType, EntitySchema, FieldSchema, FieldTypeInfo } from './types';\nexport function columnTypeFor(dataType: number, hasLookup: boolean): ColumnType {\n if (hasLookup) return 'lookup';\n switch (dataType) {\n case 1: return 'string';\n case 2: case 4: case 16: return 'number';\n case 3: return 'boolean';\n case 5: return 'date';\n case 6: return 'datetime';\n case 17: return 'lookup';\n default: return 'string';\n }\n}\nfunction dataTypeOf(ft: unknown): number {\n if (ft && typeof ft === 'object' && 'dataType' in (ft as Record<string, unknown>)) return Number((ft as { dataType: unknown }).dataType) || 0;\n return typeof ft === 'number' ? ft : 0;\n}\nfunction b(v: unknown): boolean { return v === true; }\nfunction mapField(fd: Record<string, unknown>): FieldSchema {\n const dataType = dataTypeOf(fd['fieldType']);\n const lud = fd['lookUpDetails'] as Record<string, unknown> | undefined;\n const lookup = lud ? { lookupObject: String(lud['lookupObject'] ?? ''), lookupField: String(lud['lookupField'] ?? 'Id'), displayField: String(lud['displayField'] ?? '') } : undefined;\n const cfg = fd['fieldConfiguration'] as Record<string, unknown> | undefined;\n return {\n fieldName: String(fd['fieldName'] ?? ''), displayName: String(fd['displayName'] ?? fd['fieldName'] ?? ''),\n dataType, columnType: columnTypeFor(dataType, !!lookup),\n isPrimaryKey: b(fd['isPrimaryKey']), isRequired: b(fd['isRequired']), isUnique: b(fd['isUnique']),\n isUpdatable: fd['isUpdatable'] !== false, isSearchable: b(fd['isSearchable']),\n isVisible: fd['isVisible'] !== false, isConfidential: b(fd['isConfidential']),\n isDeprecated: b(fd['isDeprecated']), isDisplayField: b(fd['isDisplayField']),\n lookup, config: cfg ? { defaultValue: cfg['defaultValue'], maxLength: cfg['maxLength'] as number|undefined, minValue: cfg['minValue'] as number|undefined, maxValue: cfg['maxValue'] as number|undefined, picklistValues: cfg['picklistValues'] as unknown[]|undefined, formatter: cfg['formatter'] as string|undefined } : undefined,\n };\n}\nexport function parseAppObject(resp: { appObjectId?: string; appObjectJson?: string }): EntitySchema {\n let ao: Record<string, unknown> = {};\n try { ao = resp.appObjectJson ? (JSON.parse(resp.appObjectJson) as Record<string, unknown>) : {}; } catch { ao = {}; }\n const fields = Array.isArray(ao['fields']) ? (ao['fields'] as Record<string, unknown>[]).map(mapField) : [];\n return {\n appObjectId: String(resp.appObjectId ?? ao['appObjectId'] ?? ''),\n objectName: String(ao['objectName'] ?? ''), displayName: String(ao['displayName'] ?? ao['objectName'] ?? ''),\n allowSoftDelete: b(ao['allowSoftDelete']), fields,\n };\n}\nexport function mapFieldTypes(items: Record<string, unknown>[]): Map<number, FieldTypeInfo> {\n const m = new Map<number, FieldTypeInfo>();\n for (const it of items ?? []) { const id = Number(it['id']); if (!Number.isNaN(id)) m.set(id, { id, name: String(it['name'] ?? ''), sqlType: String(it['canonicalSqlType'] ?? it['sqlType'] ?? '') }); }\n return m;\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@jigisha_ruparel/taf-client-metadata",
3
+ "version": "0.1.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "license": "UNLICENSED",
8
+ "description": "TAF client SDK — typed metadata reads (entities, screens, queries, field types).",
9
+ "type": "module",
10
+ "sideEffects": false,
11
+ "main": "./dist/index.js",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "dependencies": {
24
+ "@jigisha_ruparel/taf-client-core": "0.2.0"
25
+ },
26
+ "devDependencies": {
27
+ "tsup": "^8.3.0",
28
+ "typescript": "^5.6.3",
29
+ "vitest": "^2.1.0"
30
+ },
31
+ "scripts": {
32
+ "build": "tsup",
33
+ "typecheck": "tsc --noEmit",
34
+ "test": "vitest run"
35
+ }
36
+ }