{"_id":"@burgan-tech/morph-idm-reference","_rev":"4-da2f54dc355c7dad0bb4a0b4f07706de","name":"@burgan-tech/morph-idm-reference","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.0":{"name":"@burgan-tech/morph-idm-reference","version":"0.0.0","keywords":["morph","idm","workflow","reference","domain","burgan"],"author":{"name":"Burgan Technology"},"license":"MIT","_id":"@burgan-tech/morph-idm-reference@0.0.0","maintainers":[{"name":"seal707","email":"mehmet.tosun@gmail.com"},{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"}],"homepage":"https://github.com/burgan-tech/morph-idm#readme","bugs":{"url":"https://github.com/burgan-tech/morph-idm/issues"},"dist":{"shasum":"215e684957531cf07d2f450517c6d071c872e683","tarball":"https://registry.npmjs.org/@burgan-tech/morph-idm-reference/-/morph-idm-reference-0.0.0.tgz","fileCount":5,"integrity":"sha512-SlVXYByPdq2Z4vL0OazRSEXSOxsIeayFUs+zDLFGvpFCdRTiFs26ZGPgez2R3g9gG4hnWOTKUnytYkevsDLTaA==","signatures":[{"sig":"MEUCIQDOzl7dutH3sKMn9cUbXGxcNBlzX/7O1WiNl9emFXuLGwIgZXHc5u128RxwgGe/2F/d+Z0nAIg8dGYt3dEjed9rl+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14748},"main":"index.js","type":"module","gitHead":"be28f035176d41f93ba10554f2bf896e77db9f34","_npmUser":{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"},"repository":{"url":"git+https://github.com/burgan-tech/morph-idm.git","type":"git"},"_npmVersion":"10.8.2","description":"Morph IDM Domain - Reference Package for cross-domain usage","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/morph-idm-reference_0.0.0_1767690716389_0.8056065091951834","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@burgan-tech/morph-idm-reference","version":"0.0.1","keywords":["morph","idm","workflow","reference","domain","burgan"],"author":{"name":"Burgan Technology"},"license":"MIT","_id":"@burgan-tech/morph-idm-reference@0.0.1","maintainers":[{"name":"seal707","email":"mehmet.tosun@gmail.com"},{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"}],"homepage":"https://github.com/burgan-tech/morph-idm#readme","bugs":{"url":"https://github.com/burgan-tech/morph-idm/issues"},"dist":{"shasum":"231407d585fc561c5f15d9ed44cab4b618d8bf9f","tarball":"https://registry.npmjs.org/@burgan-tech/morph-idm-reference/-/morph-idm-reference-0.0.1.tgz","fileCount":5,"integrity":"sha512-siOdN16bVGaghTsq3sEDA4F17lbpKPAP7ghFCyTJGHTkWPy7Su3zuC86qgxkeKo72FdsWQCQ/054Ca3V4+OTow==","signatures":[{"sig":"MEUCIQDjD+m51evMo74HXMs+aKtG6jMMfl9jHROD11Fg1mO8KgIgcyxVwSeZVIoaikGo2pq+Rm01QFt9fNzEDnFCqk3p05E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14749},"main":"index.js","type":"module","gitHead":"384c3087de05d4d4449b1e003b72a99472e42045","_npmUser":{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"},"repository":{"url":"git+https://github.com/burgan-tech/morph-idm.git","type":"git"},"_npmVersion":"10.8.2","description":"Morph IDM Domain - Reference Package for cross-domain usage","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/morph-idm-reference_0.0.1_1767690960917_0.28203991240901627","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@burgan-tech/morph-idm-reference","version":"0.0.2","keywords":["morph","idm","workflow","reference","domain","burgan"],"author":{"name":"Burgan Technology"},"license":"MIT","_id":"@burgan-tech/morph-idm-reference@0.0.2","maintainers":[{"name":"seal707","email":"mehmet.tosun@gmail.com"},{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"}],"homepage":"https://github.com/burgan-tech/morph-idm#readme","bugs":{"url":"https://github.com/burgan-tech/morph-idm/issues"},"dist":{"shasum":"b9c020b933d0e816ef722231a76fede25be69658","tarball":"https://registry.npmjs.org/@burgan-tech/morph-idm-reference/-/morph-idm-reference-0.0.2.tgz","fileCount":5,"integrity":"sha512-ev1e51YAybTB4YULEdWRKKBW/+5jns5siw2FfzsyNpEn2x2jdar3Sz+GDB8OgYRJmzTAajC4W5XCedebmya82Q==","signatures":[{"sig":"MEQCIGWxIXxz1/0vMN544S+SI/Lbhfwfe0dt+jb95NvfMftJAiAiuqx8eQXQhgJnZomjc05pIh/aNZq51RAiwyTbRff3UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14748},"main":"index.js","type":"module","gitHead":"1b643f648249745f20192cc6b152b850d99f9863","_npmUser":{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"},"repository":{"url":"git+https://github.com/burgan-tech/morph-idm.git","type":"git"},"_npmVersion":"10.8.2","description":"Morph IDM Domain - Reference Package for cross-domain usage","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/morph-idm-reference_0.0.2_1768908656214_0.24015785854064609","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@burgan-tech/morph-idm-reference","version":"0.0.3","description":"Morph IDM Domain - Reference Package for cross-domain usage","main":"index.js","type":"module","keywords":["morph","idm","workflow","reference","domain","burgan"],"author":{"name":"Burgan Technology"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/burgan-tech/morph-idm.git"},"bugs":{"url":"https://github.com/burgan-tech/morph-idm/issues"},"homepage":"https://github.com/burgan-tech/morph-idm#readme","publishConfig":{"access":"public"},"_id":"@burgan-tech/morph-idm-reference@0.0.3","gitHead":"1f019b626ef685683da6a9129557bf278b477ef2","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Xi4A2kE0Fo6rectPNcQz7BS8+e2pIOsFpWzwsIrY3J+AJhdUpb6o8ncQ7jSTLAxe6Oof8nuSeWlLbW6ujKBIsw==","shasum":"b07d5423ac343536e87594984a4ee1c06c2a5d99","tarball":"https://registry.npmjs.org/@burgan-tech/morph-idm-reference/-/morph-idm-reference-0.0.3.tgz","fileCount":5,"unpackedSize":14747,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQMne0e9BOcP6MJ9EjQJl4Mv/mtaddq4a8i1Z8J5X1VgIgWzi1Bu/xYkyyHRv9DuR432iTPrbY82q1Wd92nnW1Z5o="}]},"_npmUser":{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"},"directories":{},"maintainers":[{"name":"seal707","email":"mehmet.tosun@gmail.com"},{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/morph-idm-reference_0.0.3_1769353249422_0.6390812256583935"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-06T09:11:56.300Z","modified":"2026-01-25T15:00:49.692Z","0.0.0":"2026-01-06T09:11:56.571Z","0.0.1":"2026-01-06T09:16:01.083Z","0.0.2":"2026-01-20T11:30:56.355Z","0.0.3":"2026-01-25T15:00:49.572Z"},"bugs":{"url":"https://github.com/burgan-tech/morph-idm/issues"},"author":{"name":"Burgan Technology"},"license":"MIT","homepage":"https://github.com/burgan-tech/morph-idm#readme","keywords":["morph","idm","workflow","reference","domain","burgan"],"repository":{"type":"git","url":"git+https://github.com/burgan-tech/morph-idm.git"},"description":"Morph IDM Domain - Reference Package for cross-domain usage","maintainers":[{"name":"seal707","email":"mehmet.tosun@gmail.com"},{"name":"yilmaztayfun","email":"tayfun.yilmaz2@hotmail.com"}],"readme":"# morph-idm\n\nA structured template package for vNext workflow components with domain-based architecture. This package provides a foundation for building scalable workflow systems with schemas, tasks, views, functions, and extensions.\n\n[![npm version](https://badge.fury.io/js/%40burgan-tech%2Fvnext-template.svg)](https://badge.fury.io/js/%40burgan-tech%2Fvnext-template)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## 🚀 Features\n\n- **Domain-Driven Architecture**: Organized by business domains with clear separation of concerns\n- **Component-Based Structure**: Modular design with schemas, workflows, tasks, views, functions, and extensions\n- **JSON Schema Validation**: Built-in validation for all component definitions\n- **Template System**: Ready-to-use template structure for new vNext projects\n- **Type Safety**: Structured exports with clear APIs for accessing components\n\n## 📦 Installation\n\n### Install as dependency\n```bash\nnpm install @my-organization/morph-idm\n```\n\n### Install as dev dependency\n```bash\nnpm install --save-dev @my-organization/morph-idm\n```\n\n## 🏗️ Project Structure\n\n```\nvnext-template/\n├── morph-idm/              # Domain-specific components\n│   ├── Extensions/            # Extension definitions\n│   ├── Functions/             # Function definitions\n│   ├── Schemas/              # JSON schema definitions\n│   ├── Tasks/                # Task definitions\n│   ├── Views/                # View components\n│   └── Workflows/            # Workflow definitions\n├── index.js                  # Main entry point\n├── vnext.config.json         # Domain configuration\n└── package.json              # Package metadata\n```\n\n## 📚 Usage\n\n### Basic Usage\n\n```javascript\nconst vnextTemplate = require('@my-organization/morph-idm');\n\n// Get domain configuration\nconst config = vnextTemplate.getDomainConfig();\nconsole.log('Domain config:', config);\n\n// Get all available component types\nconst availableTypes = vnextTemplate.getAvailableTypes();\nconsole.log('Available types:', availableTypes);\n// Output: ['schemas', 'workflows', 'tasks', 'views', 'functions', 'extensions']\n\n// Get domain name\nconst domainName = vnextTemplate.getDomainName();\nconsole.log('Domain name:', domainName);\n```\n\n### Component Access\n\n```javascript\n// Load specific component types\nconst schemas = vnextTemplate.getSchemas();\nconst workflows = vnextTemplate.getWorkflows();\nconst tasks = vnextTemplate.getTasks();\nconst views = vnextTemplate.getViews();\nconst functions = vnextTemplate.getFunctions();\nconst extensions = vnextTemplate.getExtensions();\n\n// Example: Working with schemas\nObject.keys(schemas).forEach(schemaName => {\n  console.log(`Schema: ${schemaName}`, schemas[schemaName]);\n});\n\n// Example: Working with workflows\nObject.keys(workflows).forEach(workflowName => {\n  console.log(`Workflow: ${workflowName}`, workflows[workflowName]);\n});\n```\n\n### Integration Example\n\n```javascript\nconst vnext = require('my-organization/morph-idm');\n\nclass WorkflowManager {\n  constructor() {\n    this.config = vnext.getDomainConfig();\n    this.schemas = vnext.getSchemas();\n    this.workflows = vnext.getWorkflows();\n  }\n  \n  validateWorkflow(workflowData) {\n    // Use loaded schemas for validation\n    // Implementation depends on your validation library\n  }\n  \n  executeWorkflow(workflowName) {\n    const workflow = this.workflows[workflowName];\n    if (!workflow) {\n      throw new Error(`Workflow ${workflowName} not found`);\n    }\n    // Execute workflow logic\n  }\n}\n\nconst manager = new WorkflowManager();\n```\n\n## 🔧 API Reference\n\n### `getDomainConfig()`\nReturns the domain configuration from `vnext.config.json`.\n\n**Returns:** `Object | null` - The configuration object or null if not found\n\n### `getSchemas()`\nLoads all JSON schema files from the Schemas directory.\n\n**Returns:** `Object` - Key-value pairs of schema names and definitions\n\n### `getWorkflows()`\nLoads all workflow definitions from the Workflows directory.\n\n**Returns:** `Object` - Key-value pairs of workflow names and definitions\n\n### `getTasks()`\nLoads all task definitions from the Tasks directory.\n\n**Returns:** `Object` - Key-value pairs of task names and definitions\n\n### `getViews()`\nLoads all view definitions from the Views directory.\n\n**Returns:** `Object` - Key-value pairs of view names and definitions\n\n### `getFunctions()`\nLoads all function definitions from the Functions directory.\n\n**Returns:** `Object` - Key-value pairs of function names and definitions\n\n### `getExtensions()`\nLoads all extension definitions from the Extensions directory.\n\n**Returns:** `Object` - Key-value pairs of extension names and definitions\n\n### `getAvailableTypes()`\nReturns an array of available component types.\n\n**Returns:** `Array<string>` - Available component types\n\n### `getDomainName()`\nReturns the name of the domain directory.\n\n**Returns:** `string | null` - Domain directory name or null if not found\n\n## 🏛️ Architecture Principles\n\n### Domain-Driven Design\n- Each domain is represented as a separate directory\n- Components are organized by type within domains\n- Clear separation between different workflow concerns\n\n### Component Types\n\n1. **Schemas**: JSON Schema definitions for data validation\n2. **Workflows**: Business process definitions and state machines\n3. **Tasks**: Individual task definitions and configurations\n4. **Views**: User interface and presentation components\n5. **Functions**: Reusable business logic functions\n6. **Extensions**: Plugin and extension definitions\n\n\nExample: `user-registration.1.0.0.json`\n\n## 🛠️ Development\n\n### Running Tests\n```bash\nnpm test\n```\n\n### Validation\n```bash\nnpm run validate\n```\n\n## 📋 Schema Validation Rules\n\nThe template follows strict schema validation rules:\n\n### Instance Base Properties\n- Schema instances MUST include: `key`, `version`, `domain`, `flow`, `flowVersion`\n- Schema instances MUST NOT include: `labels` (labels belong to business logic)\n- Optional fields: `id`, `eTag` (added by platform in production)\n\n### Reference Pattern\n- References use: `domain` + `workflow` + (`id` OR `key`) + optional `version`\n- NO `type` property in references - `workflow` field serves as type\n- Always use local file references: `reference.json#/attributes`\n\n### Standard Lifecycle Pattern\nAll lifecycle workflows must have:\n- `draft` (type: \"start\") - Initial state\n- `active` (type: \"normal\") - Active state  \n- `passive` (type: \"finish\") - Final state\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🏢 About Burgan Tech\n\nThis package is maintained by the Burgan Tech team as part of our commitment to building scalable, domain-driven workflow solutions.\n\n## 🔗 Links\n\n- [NPM Package](https://www.npmjs.com/package/@burgan-tech/vnext-template)\n- [GitHub Repository](https://github.com/burgan-tech/vnext-template)\n- [Issues](https://github.com/burgan-tech/vnext-template/issues)\n- [Documentation](https://github.com/burgan-tech/vnext-template#readme)\n\n## 📞 Support\n\nFor support and questions:\n- Create an issue on [GitHub](https://github.com/burgan-tech/vnext-template/issues)\n- Contact the development team at dev@burgan-tech.com\n\n---\n\nMade with ❤️ by the Burgan Tech team","readmeFilename":"README.md"}