@anri1214/dynamic-forms-mui-mcp 0.1.5

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 (45) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +214 -0
  3. package/dist/index.d.ts +14 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +394 -0
  6. package/dist/prompts/generateBackendEndpoint.d.ts +5 -0
  7. package/dist/prompts/generateBackendEndpoint.d.ts.map +1 -0
  8. package/dist/prompts/generateBackendEndpoint.js +33 -0
  9. package/dist/prompts/generateFormConfig.d.ts +5 -0
  10. package/dist/prompts/generateFormConfig.d.ts.map +1 -0
  11. package/dist/prompts/generateFormConfig.js +94 -0
  12. package/dist/resources/examples.d.ts +9 -0
  13. package/dist/resources/examples.d.ts.map +1 -0
  14. package/dist/resources/examples.js +16 -0
  15. package/dist/resources/fieldDocs.d.ts +5 -0
  16. package/dist/resources/fieldDocs.d.ts.map +1 -0
  17. package/dist/resources/fieldDocs.js +39 -0
  18. package/dist/resources/jsonSchema.d.ts +5 -0
  19. package/dist/resources/jsonSchema.d.ts.map +1 -0
  20. package/dist/resources/jsonSchema.js +8 -0
  21. package/dist/schema/0.1/examples/crud.json +128 -0
  22. package/dist/schema/0.1/examples/filters.json +82 -0
  23. package/dist/schema/0.1/examples/registration.json +119 -0
  24. package/dist/schema/0.1/fieldTypes.json +213 -0
  25. package/dist/schema/0.1/formSchema.json +806 -0
  26. package/dist/schema/versions.json +6 -0
  27. package/dist/schemaLoader.d.ts +37 -0
  28. package/dist/schemaLoader.d.ts.map +1 -0
  29. package/dist/schemaLoader.js +89 -0
  30. package/dist/tools/generateSchema.d.ts +30 -0
  31. package/dist/tools/generateSchema.d.ts.map +1 -0
  32. package/dist/tools/generateSchema.js +58 -0
  33. package/dist/tools/getFieldConfig.d.ts +18 -0
  34. package/dist/tools/getFieldConfig.d.ts.map +1 -0
  35. package/dist/tools/getFieldConfig.js +25 -0
  36. package/dist/tools/listFieldTypes.d.ts +13 -0
  37. package/dist/tools/listFieldTypes.d.ts.map +1 -0
  38. package/dist/tools/listFieldTypes.js +14 -0
  39. package/dist/tools/validateSchema.d.ts +10 -0
  40. package/dist/tools/validateSchema.d.ts.map +1 -0
  41. package/dist/tools/validateSchema.js +32 -0
  42. package/dist/types.d.ts +19 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +1 -0
  45. package/package.json +49 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "latest": "0.1",
3
+ "available": [
4
+ "0.1"
5
+ ]
6
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Central version-aware schema loader.
3
+ *
4
+ * All tools and resources use this module to load versioned schema data
5
+ * from `src/schema/{version}/` directories.
6
+ *
7
+ * Versions are stored as major.minor (e.g. "0.1", "0.2", "1.0").
8
+ * Patch versions are ignored — "0.1.0", "0.1.5", and "0.1" all resolve to "0.1".
9
+ */
10
+ import type { FieldTypesData, VersionsManifest } from './types.js';
11
+ /**
12
+ * Returns the versions manifest: latest version and list of all available versions.
13
+ */
14
+ export declare function getAvailableVersions(): VersionsManifest;
15
+ /**
16
+ * Normalizes and validates a version. Accepts both "0.1.0" and "0.1".
17
+ * Throws if the normalized version is not found.
18
+ */
19
+ export declare function resolveVersion(version: string): string;
20
+ /**
21
+ * Loads the FormSchema JSON Schema for a given library version.
22
+ */
23
+ export declare function loadFormSchema(version: string): Record<string, unknown>;
24
+ /**
25
+ * Loads field types data for a given library version.
26
+ */
27
+ export declare function loadFieldTypes(version: string): FieldTypesData;
28
+ /**
29
+ * Lists available example names for a given library version.
30
+ */
31
+ export declare function loadExampleNames(version: string): string[];
32
+ /**
33
+ * Loads a specific example by name for a given library version.
34
+ * Returns null if example not found.
35
+ */
36
+ export declare function loadExample(version: string, name: string): unknown | null;
37
+ //# sourceMappingURL=schemaLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaLoader.d.ts","sourceRoot":"","sources":["../src/schemaLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAsBlE;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAEvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQtD;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAG9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAU1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAOzE"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Central version-aware schema loader.
3
+ *
4
+ * All tools and resources use this module to load versioned schema data
5
+ * from `src/schema/{version}/` directories.
6
+ *
7
+ * Versions are stored as major.minor (e.g. "0.1", "0.2", "1.0").
8
+ * Patch versions are ignored — "0.1.0", "0.1.5", and "0.1" all resolve to "0.1".
9
+ */
10
+ import { createRequire } from 'node:module';
11
+ import { readdirSync } from 'node:fs';
12
+ import { resolve, dirname } from 'node:path';
13
+ import { fileURLToPath } from 'node:url';
14
+ const require = createRequire(import.meta.url);
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ const versionsManifest = require('./schema/versions.json');
18
+ // ── Version helpers ────────────────────────────────────────
19
+ /**
20
+ * Normalizes a version string to major.minor format.
21
+ * "0.1.0" → "0.1", "0.1" → "0.1", "1.2.3" → "1.2"
22
+ */
23
+ function normalizeVersion(version) {
24
+ const parts = version.split('.');
25
+ if (parts.length < 2) {
26
+ return version; // let resolveVersion handle the error
27
+ }
28
+ return `${parts[0]}.${parts[1]}`;
29
+ }
30
+ /**
31
+ * Returns the versions manifest: latest version and list of all available versions.
32
+ */
33
+ export function getAvailableVersions() {
34
+ return { ...versionsManifest };
35
+ }
36
+ /**
37
+ * Normalizes and validates a version. Accepts both "0.1.0" and "0.1".
38
+ * Throws if the normalized version is not found.
39
+ */
40
+ export function resolveVersion(version) {
41
+ const normalized = normalizeVersion(version);
42
+ if (!versionsManifest.available.includes(normalized)) {
43
+ throw new Error(`Unknown version "${version}" (normalized: "${normalized}"). Available versions: ${versionsManifest.available.join(', ')}`);
44
+ }
45
+ return normalized;
46
+ }
47
+ // ── Schema loaders ─────────────────────────────────────────
48
+ /**
49
+ * Loads the FormSchema JSON Schema for a given library version.
50
+ */
51
+ export function loadFormSchema(version) {
52
+ const v = resolveVersion(version);
53
+ return require(`./schema/${v}/formSchema.json`);
54
+ }
55
+ /**
56
+ * Loads field types data for a given library version.
57
+ */
58
+ export function loadFieldTypes(version) {
59
+ const v = resolveVersion(version);
60
+ return require(`./schema/${v}/fieldTypes.json`);
61
+ }
62
+ /**
63
+ * Lists available example names for a given library version.
64
+ */
65
+ export function loadExampleNames(version) {
66
+ const v = resolveVersion(version);
67
+ const examplesDir = resolve(__dirname, 'schema', v, 'examples');
68
+ try {
69
+ return readdirSync(examplesDir)
70
+ .filter((f) => f.endsWith('.json'))
71
+ .map((f) => f.replace('.json', ''));
72
+ }
73
+ catch {
74
+ return [];
75
+ }
76
+ }
77
+ /**
78
+ * Loads a specific example by name for a given library version.
79
+ * Returns null if example not found.
80
+ */
81
+ export function loadExample(version, name) {
82
+ const v = resolveVersion(version);
83
+ try {
84
+ return require(`./schema/${v}/examples/${name}.json`);
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
@@ -0,0 +1,30 @@
1
+ interface FieldHint {
2
+ name: string;
3
+ type: string;
4
+ label?: string;
5
+ required?: boolean;
6
+ extraProps?: Record<string, unknown>;
7
+ validationRules?: Record<string, unknown>;
8
+ }
9
+ interface GenerateInput {
10
+ version: string;
11
+ description?: string;
12
+ fields: FieldHint[];
13
+ sections?: Array<{
14
+ id: string;
15
+ title: string;
16
+ fieldNames: string[];
17
+ }>;
18
+ }
19
+ /**
20
+ * Generates a FormSchema JSON from a high-level description of fields.
21
+ * If no sections are provided, all fields are placed in a single "main" section.
22
+ * The result is validated against the schema for the specified library version.
23
+ */
24
+ export declare function generateFormSchema(input: GenerateInput): {
25
+ schema: unknown;
26
+ valid: boolean;
27
+ errors: string[];
28
+ };
29
+ export {};
30
+ //# sourceMappingURL=generateSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSchema.d.ts","sourceRoot":"","sources":["../../src/tools/generateSchema.ts"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC1C;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,SAAS,EAAE,CAAA;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,EAAE,CAAA;KACrB,CAAC,CAAA;CACH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG;IACxD,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CA2DA"}
@@ -0,0 +1,58 @@
1
+ import { validateFormSchema } from './validateSchema.js';
2
+ /**
3
+ * Generates a FormSchema JSON from a high-level description of fields.
4
+ * If no sections are provided, all fields are placed in a single "main" section.
5
+ * The result is validated against the schema for the specified library version.
6
+ */
7
+ export function generateFormSchema(input) {
8
+ const fields = {};
9
+ for (const hint of input.fields) {
10
+ const field = {
11
+ type: hint.type,
12
+ label: hint.label ?? hint.name,
13
+ };
14
+ // Apply extra props
15
+ if (hint.extraProps) {
16
+ Object.assign(field, hint.extraProps);
17
+ }
18
+ // Build validation
19
+ const validation = {};
20
+ if (hint.required) {
21
+ validation.required = true;
22
+ }
23
+ if (hint.validationRules) {
24
+ Object.assign(validation, hint.validationRules);
25
+ }
26
+ if (Object.keys(validation).length > 0) {
27
+ field.validation = validation;
28
+ }
29
+ fields[hint.name] = field;
30
+ }
31
+ // Build sections
32
+ let sections;
33
+ if (input.sections && input.sections.length > 0) {
34
+ sections = input.sections.map((s) => ({
35
+ id: s.id,
36
+ title: s.title,
37
+ fields: s.fieldNames,
38
+ }));
39
+ }
40
+ else {
41
+ // Single auto-section with all fields
42
+ sections = [
43
+ {
44
+ id: 'main',
45
+ title: input.description ?? 'Form',
46
+ fields: input.fields.map((f) => f.name),
47
+ },
48
+ ];
49
+ }
50
+ const schema = { sections, fields };
51
+ // Validate the generated schema against the specified version
52
+ const result = validateFormSchema(input.version, schema);
53
+ return {
54
+ schema,
55
+ valid: result.valid,
56
+ errors: result.errors,
57
+ };
58
+ }
@@ -0,0 +1,18 @@
1
+ interface FieldTypeDetail {
2
+ type: string;
3
+ description: string;
4
+ config: string;
5
+ specificProps: string[];
6
+ applicableValidations: string[];
7
+ example: unknown;
8
+ }
9
+ /**
10
+ * Returns detailed information about a specific field type for a given library version.
11
+ */
12
+ export declare function getFieldConfig(version: string, fieldType: string): FieldTypeDetail | null;
13
+ /**
14
+ * Returns all known field type names for a given library version.
15
+ */
16
+ export declare function getKnownFieldTypes(version: string): string[];
17
+ export {};
18
+ //# sourceMappingURL=getFieldConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFieldConfig.d.ts","sourceRoot":"","sources":["../../src/tools/getFieldConfig.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAazF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAG5D"}
@@ -0,0 +1,25 @@
1
+ import { loadFieldTypes } from '../schemaLoader.js';
2
+ /**
3
+ * Returns detailed information about a specific field type for a given library version.
4
+ */
5
+ export function getFieldConfig(version, fieldType) {
6
+ const fieldTypesData = loadFieldTypes(version);
7
+ const ft = fieldTypesData.fieldTypes.find((f) => f.type === fieldType);
8
+ if (!ft)
9
+ return null;
10
+ return {
11
+ type: ft.type,
12
+ description: ft.description,
13
+ config: ft.config,
14
+ specificProps: ft.specificProps,
15
+ applicableValidations: ft.applicableValidations,
16
+ example: ft.example,
17
+ };
18
+ }
19
+ /**
20
+ * Returns all known field type names for a given library version.
21
+ */
22
+ export function getKnownFieldTypes(version) {
23
+ const fieldTypesData = loadFieldTypes(version);
24
+ return fieldTypesData.fieldTypes.map((ft) => ft.type);
25
+ }
@@ -0,0 +1,13 @@
1
+ interface FieldTypeSummary {
2
+ type: string;
3
+ description: string;
4
+ config: string;
5
+ specificProps: string[];
6
+ applicableValidations: string[];
7
+ }
8
+ /**
9
+ * Returns a summary of all supported field types for a given library version.
10
+ */
11
+ export declare function listFieldTypes(version: string): FieldTypeSummary[];
12
+ export {};
13
+ //# sourceMappingURL=listFieldTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listFieldTypes.d.ts","sourceRoot":"","sources":["../../src/tools/listFieldTypes.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAA;CAChC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CASlE"}
@@ -0,0 +1,14 @@
1
+ import { loadFieldTypes } from '../schemaLoader.js';
2
+ /**
3
+ * Returns a summary of all supported field types for a given library version.
4
+ */
5
+ export function listFieldTypes(version) {
6
+ const fieldTypesData = loadFieldTypes(version);
7
+ return fieldTypesData.fieldTypes.map((ft) => ({
8
+ type: ft.type,
9
+ description: ft.description,
10
+ config: ft.config,
11
+ specificProps: ft.specificProps,
12
+ applicableValidations: ft.applicableValidations,
13
+ }));
14
+ }
@@ -0,0 +1,10 @@
1
+ export interface ValidationResult {
2
+ valid: boolean;
3
+ errors: string[];
4
+ }
5
+ /**
6
+ * Validates a JSON object against the FormSchema JSON Schema for a given library version.
7
+ * Returns structured errors pointing to exact paths.
8
+ */
9
+ export declare function validateFormSchema(version: string, schema: unknown): ValidationResult;
10
+ //# sourceMappingURL=validateSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateSchema.d.ts","sourceRoot":"","sources":["../../src/tools/validateSchema.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAgBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAgBrF"}
@@ -0,0 +1,32 @@
1
+ import Ajv from 'ajv';
2
+ import { loadFormSchema } from '../schemaLoader.js';
3
+ // Cache compiled validators per version to avoid recompilation
4
+ const validatorCache = new Map();
5
+ function getValidator(version) {
6
+ const cached = validatorCache.get(version);
7
+ if (cached)
8
+ return cached;
9
+ const formSchema = loadFormSchema(version);
10
+ const ajv = new Ajv.default({ allErrors: true, verbose: true });
11
+ const validate = ajv.compile(formSchema);
12
+ validatorCache.set(version, validate);
13
+ return validate;
14
+ }
15
+ /**
16
+ * Validates a JSON object against the FormSchema JSON Schema for a given library version.
17
+ * Returns structured errors pointing to exact paths.
18
+ */
19
+ export function validateFormSchema(version, schema) {
20
+ const validate = getValidator(version);
21
+ const valid = validate(schema);
22
+ if (valid) {
23
+ return { valid: true, errors: [] };
24
+ }
25
+ const errors = (validate.errors ?? []).map((err) => {
26
+ const path = err.instancePath || '/';
27
+ const message = err.message ?? 'unknown error';
28
+ const params = err.params ? ` (${JSON.stringify(err.params)})` : '';
29
+ return `${path}: ${message}${params}`;
30
+ });
31
+ return { valid: false, errors };
32
+ }
@@ -0,0 +1,19 @@
1
+ /** Shape of a single entry in fieldTypes.json */
2
+ export interface FieldTypeEntry {
3
+ type: string;
4
+ description: string;
5
+ config: string;
6
+ specificProps: string[];
7
+ applicableValidations: string[];
8
+ example: Record<string, unknown>;
9
+ }
10
+ /** Shape of fieldTypes.json */
11
+ export interface FieldTypesData {
12
+ fieldTypes: FieldTypeEntry[];
13
+ }
14
+ /** Shape of versions.json */
15
+ export interface VersionsManifest {
16
+ latest: string;
17
+ available: string[];
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACjC;AAED,+BAA+B;AAC/B,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAA;CAC7B;AAED,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@anri1214/dynamic-forms-mui-mcp",
3
+ "version": "0.1.5",
4
+ "description": "MCP server for dynamic-forms-mui — exposes FormSchema structure as tools, resources, and prompts for AI assistants",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "dynamic-forms-mcp": "./dist/index.js"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "files": [
13
+ "dist",
14
+ "README.md",
15
+ "LICENSE"
16
+ ],
17
+ "keywords": [
18
+ "mcp",
19
+ "model-context-protocol",
20
+ "dynamic-forms",
21
+ "form-schema",
22
+ "ai",
23
+ "cursor",
24
+ "claude",
25
+ "mui",
26
+ "react"
27
+ ],
28
+ "dependencies": {
29
+ "@modelcontextprotocol/sdk": "^1.12.1",
30
+ "ajv": "^8.17.1",
31
+ "zod": "^3.24.0"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^22.15.0",
35
+ "typescript": "~5.7.3",
36
+ "tsx": "^4.19.0"
37
+ },
38
+ "scripts": {
39
+ "build:schema": "tsx scripts/generateJsonSchema.ts",
40
+ "build": "npm run build:schema && tsc && cp -r src/schema dist/schema",
41
+ "bump:patch": "npm version patch",
42
+ "dev": "tsx src/index.ts",
43
+ "start": "node dist/index.js"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public",
47
+ "registry": "https://registry.npmjs.org/"
48
+ }
49
+ }