autoforce 0.1.2 → 0.1.4

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 (49) hide show
  1. package/README.md +44 -6
  2. package/bin/index.js +6 -0
  3. package/commands/new/issue.json +40 -0
  4. package/commands/new/process.json +21 -0
  5. package/commands/subtasks/checkout-branch.json +60 -0
  6. package/commands/subtasks/create-pull.json +20 -0
  7. package/commands/subtasks/create-scratch.json +84 -0
  8. package/commands/subtasks/deploy-code.json +17 -0
  9. package/commands/subtasks/drop-scratch.json +17 -0
  10. package/commands/subtasks/package-code.json +3 -0
  11. package/commands/subtasks/publish-branch.json +20 -0
  12. package/commands/subtasks/update-documentation.json +8 -0
  13. package/commands/subtasks/validate-code.json +29 -0
  14. package/commands/subtasks/validate-scratch.json +14 -0
  15. package/commands/tasks/cancel.json +6 -0
  16. package/commands/tasks/deploy.json +6 -0
  17. package/commands/tasks/finish.json +41 -0
  18. package/commands/tasks/rollback.json +6 -0
  19. package/commands/tasks/start.json +60 -0
  20. package/commands/tasks/stop.json +32 -0
  21. package/commands/tasks/switch.json +53 -0
  22. package/commands/tasks/view.json +12 -0
  23. package/lib/auto.js +30 -15
  24. package/lib/helpers/class.js +2 -2
  25. package/lib/helpers/context.d.ts +1 -1
  26. package/lib/helpers/context.js +24 -28
  27. package/lib/helpers/github-graphql.d.ts +1 -76
  28. package/lib/helpers/github-graphql.js +331 -363
  29. package/lib/helpers/lwc.js +2 -2
  30. package/lib/helpers/metadata.js +2 -2
  31. package/lib/helpers/object.js +2 -2
  32. package/lib/helpers/tasks.js +10 -5
  33. package/lib/helpers/util.d.ts +4 -1
  34. package/lib/helpers/util.js +45 -2
  35. package/package.json +11 -5
  36. package/templates/dictionary/class-all.md +9 -0
  37. package/templates/dictionary/class-diagrama.md +13 -0
  38. package/templates/dictionary/class-inner.md +19 -0
  39. package/templates/dictionary/class-metodos.md +15 -0
  40. package/templates/dictionary/class-public.md +13 -0
  41. package/templates/dictionary/class-referencias.md +5 -0
  42. package/templates/dictionary/class.md +29 -0
  43. package/templates/dictionary/classes.md +52 -0
  44. package/templates/dictionary/object.md +35 -0
  45. package/templates/dictionary/objects.md +63 -0
  46. package/templates/intro.md +20 -0
  47. package/templates/process.md +23 -0
  48. package/templates/story.md +32 -0
  49. package/templates/usecase.md +52 -0
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import sf from "./connect.js";
11
11
  import templateGenerator from "./template.js";
12
12
  const templateEngine = templateGenerator("dictionary", "md");
13
- import { sortByName, splitFilename, DICTIONARY_FOLDER, DOCS_FOLDER } from "./util.js";
13
+ import { sortByName, splitFilename, DICTIONARY_FOLDER, TEMPLATES_FOLDER } from "./util.js";
14
14
  function getMetadata(lwc) {
15
15
  return __awaiter(this, void 0, void 0, function* () {
16
16
  try {
@@ -59,7 +59,7 @@ function executeLwc(items, filename, folder) {
59
59
  templateEngine.render(lwcContext, {
60
60
  helpers: {}
61
61
  });
62
- templateEngine.save(filename, DOCS_FOLDER + "/" + folder);
62
+ templateEngine.save(filename, TEMPLATES_FOLDER + "/" + folder);
63
63
  });
64
64
  }
65
65
  const lwcModule = {
@@ -10,7 +10,7 @@ const helpers = {
10
10
  export default helpers;
11
11
  /*
12
12
  import context from "./context.js";
13
- import { DOCS_FOLDER } from "./util.js";
13
+ import { TEMPLATES_FOLDER } from "./util.js";
14
14
  import type { DocumentationModule, IProcessInfo, IMetadataNode, IMetadataComponentNode } from "../types/auto.js";
15
15
  function getMetadataFromContext(components: string[]) {
16
16
  return getMetadataArray(context.getProcessMetadata(), components);
@@ -66,7 +66,7 @@ function getMetadataArray(metadata: IProcessInfo[], props: string[]) {
66
66
  return items;
67
67
  };
68
68
 
69
- return getItemsFromTree({ folder: DOCS_FOLDER, childs: metadata });
69
+ return getItemsFromTree({ folder: TEMPLATES_FOLDER, childs: metadata });
70
70
  }
71
71
 
72
72
  export async function execute() {
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import sf from "./connect.js";
11
11
  import templateGenerator from "./template.js";
12
12
  const templateEngine = templateGenerator("dictionary", "md");
13
- import { sortByLabel, DICTIONARY_FOLDER, DOCS_FOLDER, } from "./util.js";
13
+ import { sortByLabel, DICTIONARY_FOLDER, TEMPLATES_FOLDER, } from "./util.js";
14
14
  function getMetadata(objetos) {
15
15
  return __awaiter(this, void 0, void 0, function* () {
16
16
  try {
@@ -123,7 +123,7 @@ function executeObjects(items, filename, folder) {
123
123
  templateEngine.render(objectContext, {
124
124
  helpers: { isManaged, isMetadataFormula, attributesFormula }
125
125
  });
126
- templateEngine.save(filename, DOCS_FOLDER + "/" + folder);
126
+ templateEngine.save(filename, TEMPLATES_FOLDER + "/" + folder);
127
127
  });
128
128
  }
129
129
  const objectModule = {
@@ -7,15 +7,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import context from "./context.js";
10
+ import context, { initializeContext } from "./context.js";
11
11
  import { logError, logStep } from "./color.js";
12
12
  import fs from "fs";
13
- import { getFiles, filterJson } from "./util.js";
13
+ import { getFiles, filterJson, searchInFolderHierarchy } from "./util.js";
14
14
  import { validateCommand, validateFunction, executeFunction, executeCommand, taskFunctions } from "./taskFunctions.js";
15
15
  import prompts from "prompts";
16
- export const TASKS_FOLDER = process.cwd() + "/commands/tasks";
17
- export const SUBTASKS_FOLDER = process.cwd() + "/commands/subtasks";
18
- export const NEW_FOLDER = process.cwd() + "/commands/new";
16
+ import { fileURLToPath } from 'url';
17
+ const COMMAND_FOLDER = searchInFolderHierarchy('commands', fileURLToPath(import.meta.url));
18
+ export const TASKS_FOLDER = `${COMMAND_FOLDER}/tasks`;
19
+ export const SUBTASKS_FOLDER = `${COMMAND_FOLDER}/subtasks`;
20
+ export const NEW_FOLDER = `${COMMAND_FOLDER}/new`;
19
21
  export function getTaskFolder(command) {
20
22
  const folders = {
21
23
  'task': TASKS_FOLDER,
@@ -70,6 +72,7 @@ export function helpTask(task) {
70
72
  });
71
73
  }
72
74
  export function validateTask(task) {
75
+ initializeContext();
73
76
  if (task.guards) {
74
77
  // Valida que sea
75
78
  }
@@ -103,6 +106,7 @@ export function validateTask(task) {
103
106
  }
104
107
  export function runTask(task, taskContext, tabs = '') {
105
108
  return __awaiter(this, void 0, void 0, function* () {
109
+ initializeContext();
106
110
  // Valida que este ya esten las variables de enotorno y configuracion
107
111
  if (task.guards) {
108
112
  yield context.validate(task.guards);
@@ -128,6 +132,7 @@ export function runTask(task, taskContext, tabs = '') {
128
132
  }
129
133
  export function previewTask(task, tabs = '') {
130
134
  return __awaiter(this, void 0, void 0, function* () {
135
+ initializeContext();
131
136
  logStep(`${task.name}: ${task.description}`, tabs);
132
137
  for (const step of task.steps) {
133
138
  previewStep(step, tabs);
@@ -1,6 +1,8 @@
1
- export declare const DOCS_FOLDER: string;
1
+ export declare const TEMPLATES_FOLDER: string;
2
2
  export declare const DICTIONARY_FOLDER: string;
3
3
  export declare const WORKING_FOLDER: string;
4
+ export declare const CONFIG_FILE: string;
5
+ export declare function createConfigurationFile(): Promise<boolean>;
4
6
  export declare function sortByName(objA: {
5
7
  Name: string;
6
8
  }, objB: {
@@ -26,6 +28,7 @@ export declare const filterFiles: (fullPath: string) => boolean;
26
28
  * @param {string[]} newArray El array de elementos a agregar
27
29
  */
28
30
  export declare function addNewItems(baseArray: string[], newArray: string[]): void;
31
+ export declare function searchInFolderHierarchy(element: string, parentFolder: string): string;
29
32
  export declare function getFiles(source: string, filter?: (file: string) => boolean, recursive?: boolean, ignoreList?: string[]): string[];
30
33
  export declare function convertNameToKey(name: string): string;
31
34
  export declare function convertKeyToName(key: string): string;
@@ -1,7 +1,35 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import fs from "fs";
2
- export const DOCS_FOLDER = process.cwd() + "/docs";
3
- export const DICTIONARY_FOLDER = process.cwd() + "/docs/diccionarios";
11
+ import { fileURLToPath } from 'url';
12
+ export const TEMPLATES_FOLDER = searchInFolderHierarchy('templates', fileURLToPath(import.meta.url));
13
+ export const DICTIONARY_FOLDER = TEMPLATES_FOLDER + "/diccionarios";
4
14
  export const WORKING_FOLDER = process.env.INIT_CWD || ".";
15
+ export const CONFIG_FILE = process.cwd() + '/.autoforce.json';
16
+ export function createConfigurationFile() {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ console.log('Preguntar por GitHub o GitLab');
19
+ console.log('Chequear las variables de entorno');
20
+ console.log('Tema proyecto guardar la referencia');
21
+ console.log('Genera documentacion');
22
+ console.log('Direccion de las carpetas');
23
+ const config = { projectNumber: 1 };
24
+ try {
25
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
26
+ }
27
+ catch (_a) {
28
+ throw new Error(`No se pudo guardar la configuracion en ${CONFIG_FILE}`);
29
+ }
30
+ return true;
31
+ });
32
+ }
5
33
  export function sortByName(objA, objB) {
6
34
  return objA.Name > objB.Name ? 1 : objA.Name < objB.Name ? -1 : 0;
7
35
  }
@@ -58,6 +86,21 @@ export function addNewItems(baseArray, newArray) {
58
86
  }
59
87
  }
60
88
  }
89
+ export function searchInFolderHierarchy(element, parentFolder) {
90
+ if (fs.existsSync(`${parentFolder}/${element}`)) {
91
+ return `${parentFolder}/${element}`;
92
+ }
93
+ else {
94
+ const lastIndex = parentFolder.lastIndexOf('/');
95
+ if (lastIndex !== -1) {
96
+ const newParentFolder = parentFolder.substring(0, lastIndex);
97
+ if (newParentFolder !== '') {
98
+ return searchInFolderHierarchy(element, newParentFolder);
99
+ }
100
+ }
101
+ }
102
+ return '';
103
+ }
61
104
  export function getFiles(source, filter = (file) => file !== undefined, recursive = false, ignoreList = []) {
62
105
  const files = [];
63
106
  for (const file of fs.readdirSync(source)) {
package/package.json CHANGED
@@ -2,16 +2,22 @@
2
2
  "name": "autoforce",
3
3
  "homepage": "https://sebastianclaros.github.io/autoforce",
4
4
  "private": false,
5
- "version": "0.1.2",
5
+ "version": "0.1.4",
6
6
  "description": "Developer Automation tool for Github / Gitlab and Salesforce projects.",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/sebastianclaros/autoforce.git"
10
10
  },
11
- "main": "./lib/index.js",
11
+ "main": "./bin/index.js",
12
12
  "files": [
13
- "lib/**/*"
13
+ "commands/**/*",
14
+ "templates/**/*",
15
+ "lib/**/*",
16
+ "bin/**/*"
14
17
  ],
18
+ "bin": {
19
+ "autoforce": "./bin/index.js"
20
+ },
15
21
  "type": "module",
16
22
  "scripts": {
17
23
  "prebuild": "rm -rf ./lib/",
@@ -20,7 +26,7 @@
20
26
  "test:build": "yarn build && npm publish --dry-run && node ./bin/index.js",
21
27
  "test": "jest --config jest.config.js"
22
28
  },
23
- "dependencies": {
29
+ "devDependencies": {
24
30
  "@eslint/js": "^9.9.1",
25
31
  "@types/jest": "29.4.0",
26
32
  "@typescript-eslint/eslint-plugin": "5.54.0",
@@ -37,7 +43,7 @@
37
43
  "typescript": "4.9.5",
38
44
  "typescript-eslint": "^8.3.0"
39
45
  },
40
- "devDependencies": {
46
+ "dependencies": {
41
47
  "@octokit/graphql": "^8.1.1",
42
48
  "@types/graphql": "^14.5.0",
43
49
  "@types/jsforce": "^1.11.5",
@@ -0,0 +1,9 @@
1
+ {{#each properties}}
2
+ {{scopeModifiers}} {{name}} {{modifiers}}
3
+ {{/each}}
4
+ {{#each constructors as |item|}}
5
+ {{scopeModifiers}} {{name}}({{#each parameters}}{{type}} {{name}}{{/each}}) {{returnType}} {{modifiers}}
6
+ {{/each}}
7
+ {{#each methods as |item|}}
8
+ {{scopeModifiers}} {{name}}({{#each parameters}}{{type}} {{name}}{{/each}}) {{returnType}} {{modifiers}}
9
+ {{/each}}
@@ -0,0 +1,13 @@
1
+ ```mermaid
2
+ classDiagram
3
+
4
+ {{#if parentClass}}
5
+ {{parentClass}} <|-- {{Name}}
6
+ {{/if}}
7
+ class {{Name}} {
8
+
9
+ {{#with SymbolTable}}
10
+ {{import class-all}}
11
+ {{/with}}
12
+ }
13
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: { { Name } }
3
+ ---
4
+
5
+ ## Introducción
6
+
7
+ <!-- START autogenerated-class -->
8
+
9
+ ## Diagrama
10
+
11
+ {{import class-diagrama.md}}
12
+
13
+ ### Metodos
14
+
15
+ {{import class-metodos.md}}
16
+
17
+ {{import class-referencias.md}}
18
+
19
+ <!-- END autogenerated-class -->
@@ -0,0 +1,15 @@
1
+ {{#if SymbolTable.constructors}}
2
+ _Constructores_
3
+ | # | Argumentos |
4
+ | --- | ---------- |
5
+ {{#each SymbolTable.constructors}}
6
+ | <div class="icons">{{modifiers}}</div> | <ul>{{#each parameters}}<li>{{#with type}}{{linkToType}}{{/with}} {{name}}</li>{{/each}}</ul>|
7
+ {{/each}}
8
+ {{/if}}
9
+
10
+ _Metodos_
11
+ | # | Nombre | Return | Argumentos |
12
+ | --- | ------ | ------ | ---------- |
13
+ {{#each SymbolTable.methods}}
14
+ | <div class="icons">{{modifiers}}</div> | {{name}} | {{#with returnType}}{{linkToType}}{{/with}}| <ul>{{#each parameters}}<li>{{#with type}}{{linkToType}}{{/with}} {{name}}</li>{{/each}}</ul>|
15
+ {{/each}}
@@ -0,0 +1,13 @@
1
+ {{#each properties}}
2
+ {{#if (filterByPublic this)}}
3
+ {{scopeModifiers}} {{name}} {{modifiers}}
4
+ {{/if}}
5
+ {{/each}}
6
+ {{#each constructors as |item|}}
7
+ {{scopeModifiers}} {{name}}({{#each parameters}}{{type}} {{name}}{{/each}}) {{returnType}} {{modifiers}}
8
+ {{/each}}
9
+ {{#each methods as |item|}}
10
+ {{#if (filterByPublic this)}}
11
+ {{scopeModifiers}} {{name}}({{#each parameters}}{{type}} {{name}}{{/each}}) {{returnType}} {{modifiers}}
12
+ {{/if}}
13
+ {{/each}}
@@ -0,0 +1,5 @@
1
+ | # | Referencia | # | Referencia |
2
+ | --- | ---------------- | --- | ---------- |
3
+ | + | public or global | # | protected |
4
+ | - | private | ~ | Package |
5
+ | $ | final or static | \* | abstract |
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: { { Name } }
3
+ ---
4
+
5
+ ## Introducción
6
+
7
+ <!-- START autogenerated-class -->
8
+
9
+ ## Descripción
10
+
11
+ {{description}}
12
+
13
+ - Status: {{Status}}
14
+ - Api Version: {{ApiVersion}}
15
+ - Interface
16
+ {{#each SymbolTable.interfaces}} \* [{{this}}](/diccionarios/classes/{{this}})
17
+ {{/each}}
18
+
19
+ ## Diagrama
20
+
21
+ {{import class-diagrama.md}}
22
+
23
+ ### Metodos
24
+
25
+ {{import class-metodos.md}}
26
+
27
+ {{import class-referencias.md}}
28
+
29
+ <!-- END autogenerated-class -->
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: Modelo de Clases
3
+ ---
4
+
5
+ ## Introducción
6
+
7
+ ## Classes
8
+
9
+ <!-- START autogenerated-classes -->
10
+
11
+ ### Diagrama
12
+
13
+ ```mermaid
14
+ classDiagram
15
+ {{#each classes as |class|}}
16
+
17
+ {{#each SymbolTable.interfaces}}
18
+ {{this}} <|-- {{class.Name}} : implements
19
+ {{/each}}
20
+ {{#if parentClass}}
21
+ {{parentClass}} <|-- {{Name}}
22
+ {{/if}}
23
+
24
+ class {{Name}} {
25
+ {{#with SymbolTable}}
26
+ {{import class-public}}
27
+ {{/with}}
28
+ }
29
+
30
+ link {{class.Name}} "{{classLinkGraph}}"
31
+ {{/each}}
32
+ {{#each namespaces as |namespace|}}
33
+ namespace _{{@key}} {
34
+ {{#each namespace}}
35
+ class {{this}}
36
+ {{/each}}
37
+ }
38
+ {{/each}}
39
+ ```
40
+
41
+ ### Listado
42
+
43
+ | # | Name | Api Version | Descripcion |
44
+ | --- | ---- | ----------- | ----------- |
45
+
46
+ {{#each classes}}
47
+ | <div class="icons">{{#with TableDeclaration}}{{modifiers}}{{/with}}</div> | [{{Name}}]({{classLink}}) |{{ApiVersion}}|{{description}}|
48
+ {{/each}}
49
+
50
+ {{import class-referencias.md}}
51
+
52
+ <!-- END autogenerated-classes -->
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: { { label } }
3
+ ---
4
+
5
+ <!-- START autogenerated-object -->
6
+
7
+ ## Descripción
8
+
9
+ {{description}}
10
+
11
+ - Label: {{label}}
12
+ - ApiName: {{fullName}}
13
+ - Sharing Mode: {{sharingModel}}
14
+ - Visibilidad: {{visibility}}
15
+ - [Ver en Salesforce](https://test.salesforce.com/lightning/setup/ObjectManager/lookupRedirect?lookup=entityByApiName&apiName={{fullName}})
16
+
17
+ ## Campos
18
+
19
+ | # | Label | Api Name | Tipo | Descripcion |
20
+ | --- | ----- | -------- | ---- | ----------- |
21
+
22
+ {{#each fields}}
23
+ {{#unless (isManaged this)}}
24
+ | <div class="icons">{{attributesFormula}}</div> | {{label}} | {{fullName}} | {{typeFormula}} | {{descriptionFormula}} <ul>{{#each valueSet.valueSetDefinition.value}}<li>{{label}}</li>{{/each}}</ul> |
25
+ {{/unless}}
26
+ {{/each}}
27
+
28
+ | # | Referencia |
29
+ | -------------------------------------------------------------- | ------------- |
30
+ | <div class="icons">![Required](/img/lock_60.png)</div> | Requerido |
31
+ | <div class="icons">![Esternal Id](/img/database_60.png)</div> | External Id |
32
+ | <div class="icons">![Track History](/img/tracker_60.png)</div> | Track History |
33
+ | <div class="icons">![Encripted](/img/password_60.png)</div> | Encriptado |
34
+
35
+ <!-- END autogenerated-object -->
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: Modelo de datos
3
+ ---
4
+
5
+ ## Introducción
6
+
7
+ ## Objetos
8
+
9
+ <!-- START autogenerated-objects -->
10
+
11
+ ```mermaid
12
+ erDiagram
13
+ {{#each objects}}
14
+ {{#each fields}}
15
+ {{#unless (isManaged this)}}
16
+ {{#if referenceTo}}
17
+ {{referenceTo}} ||..|{ {{../fullName}} : "{{relationshipLabel}}"
18
+ {{/if}}
19
+ {{/unless}}
20
+ {{/each}}
21
+ {{/each}}
22
+
23
+ {{#each objects}}
24
+ {{fullName}} {
25
+ {{#each fields}}
26
+ {{#unless (isManaged this)}}
27
+ {{#if referenceTo}}
28
+ {{fullName}} {{referenceTo}}
29
+ {{/if}}
30
+ {{/unless}}
31
+ {{/each}}
32
+ }
33
+ {{/each}}
34
+
35
+ ```
36
+
37
+ ### Transaccionales
38
+
39
+ | # | Label | Api Name | Descripcion |
40
+ | --- | ----- | -------- | ----------- |
41
+
42
+ {{#each objects}}
43
+ {{#unless (isMetadataFormula this)}}
44
+ | <div class="icons">{{attributesFormula}}</div> | [{{label}}](/diccionarios/objects/{{fullName}}) | {{fullName}} |{{description}}|
45
+ {{/unless}}
46
+ {{/each}}
47
+
48
+ ### Configuracion
49
+
50
+ | # | Label | Api Name | Descripcion |
51
+ | --- | ----- | -------- | ----------- |
52
+
53
+ {{#each objects}}
54
+ {{#if (isMetadataFormula this)}}
55
+ | <div class="icons">{{attributesFormula}}</div> | [{{label}}](/diccionarios/objects/{{fullName}}) | {{fullName}} |{{description}}|
56
+ {{/if}}
57
+ {{/each}}
58
+
59
+ | # | Referencia |
60
+ | -------------------------------------------------------------- | ------------- |
61
+ | <div class="icons">![Track History](/img/tracker_60.png)</div> | Track History |
62
+
63
+ <!-- END autogenerated-objects -->
@@ -0,0 +1,20 @@
1
+ ---
2
+ title: { { title } }
3
+ slug: { { name } }
4
+ ---
5
+
6
+ ## Descripcion
7
+
8
+ {{descripcion}}
9
+
10
+ ## Componentes
11
+
12
+ ## Objetos
13
+
14
+ <!-- START autogenerated-objects -->
15
+ <!-- END autogenerated-objects -->
16
+
17
+ ## Clases
18
+
19
+ <!-- START autogenerated-classes -->
20
+ <!-- END autogenerated-classes -->
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: {{name}}
3
+ process: {{identifier}}
4
+ {{#if rol}}
5
+ tags: [{{rol}}]
6
+ {{/if}}
7
+ ---
8
+
9
+ ## Descripcion
10
+
11
+ {{descripcion}}
12
+
13
+ ## Componentes
14
+
15
+ ## Objetos
16
+
17
+ <!-- START autogenerated-objects -->
18
+ <!-- END autogenerated-objects -->
19
+
20
+ ## Clases
21
+
22
+ <!-- START autogenerated-classes -->
23
+ <!-- END autogenerated-classes -->
@@ -0,0 +1,32 @@
1
+ ---
2
+ sidebar_position: 1
3
+ tags: [{ { rol } }]
4
+ ---
5
+
6
+ # {{titulo}}
7
+
8
+ - Modulo: [{{modulo}}](/{{modulo}})
9
+ - Roles: [{{rol}}](/tags/{{rol}})
10
+
11
+ ## Descripcion:
12
+
13
+ ## Escenarios
14
+
15
+ 1.
16
+
17
+ <!-- START autogenerated-objects -->
18
+ <!-- END autogenerated-objects -->
19
+
20
+ <!-- START autogenerated-classes -->
21
+ <!-- END autogenerated-classes -->
22
+
23
+ <!-- START autogenerated-usecase -->
24
+
25
+ :::tip
26
+ Para refrescar metadata:
27
+
28
+ ```bash
29
+ {{command}}
30
+ ```
31
+
32
+ <!-- END autogenerated-usecase -->
@@ -0,0 +1,52 @@
1
+ ---
2
+ sidebar_position: 1
3
+ tags: [{ { actor } }]
4
+ ---
5
+
6
+ # {{titulo}}
7
+
8
+ - Modulo: [{{modulo}}](/{{modulo}})
9
+ - Roles: [{{actor}}](/tags/{{actor}})
10
+ - Alcance:
11
+ - Proposito:
12
+
13
+ ## Descripcion:
14
+
15
+ - Suposiciones:
16
+ - Cuando:
17
+ - Precondiciones:
18
+ - Postcondiciones:
19
+
20
+ ## Flujo Principal
21
+
22
+ _Pasos: _
23
+
24
+ 1.
25
+
26
+ ## Flujos Alternativos
27
+
28
+ _Pasos: _
29
+
30
+ 1.
31
+
32
+ ## Use cases relacionados
33
+
34
+ | Nombre | Descripcion |
35
+ | ------ | ----------- |
36
+
37
+ <!-- START autogenerated-objects -->
38
+ <!-- END autogenerated-objects -->
39
+
40
+ <!-- START autogenerated-classes -->
41
+ <!-- END autogenerated-classes -->
42
+
43
+ <!-- START autogenerated-usecase -->
44
+
45
+ :::tip
46
+ Para refrescar metadata:
47
+
48
+ ```bash
49
+ {{command}}
50
+ ```
51
+
52
+ <!-- END autogenerated-usecase -->