@ibyar/cli 2.1.0 → 2.1.2

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.
package/bin/cli.js CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { exit } from 'process';
3
- const CLI_VERSION = '2.1.0';
3
+ const CLI_VERSION = '2.1.2';
4
4
  const args = process.argv;
5
5
  const inputs = args.slice(2);
6
- const showHelp = inputs[0] === '-h' || inputs[0] === '--help';
7
- const printVersion = inputs[0] === '-v' || inputs[0] === '--version';
8
- const runBuild = inputs[0] === '-b' || inputs[0] === '--build';
9
- const generateTypes = inputs[0] === '-gt' || inputs[0] === '--generate-types';
6
+ const showHelp = inputs.includes('-h') || inputs.includes('--help');
7
+ const printVersion = inputs.length === 1 && (inputs.includes('-v') || inputs.includes('--version'));
8
+ const runBuild = inputs.includes('-b') || inputs.includes('--build');
9
+ const generateTypes = inputs.includes('-gt') || inputs.includes('--generate-types');
10
10
  if (showHelp) {
11
11
  const help = `
12
12
  Version ${CLI_VERSION}
@@ -35,11 +35,10 @@ Options:
35
35
  }
36
36
  if (printVersion) {
37
37
  console.log(CLI_VERSION);
38
- exit();
39
38
  }
40
39
  if (runBuild) {
41
40
  import('../compiler/compiler.js').then(module => {
42
- if (process.argv.includes('-w') || process.argv.includes('--watch')) {
41
+ if (inputs.includes('-w') || inputs.includes('--watch')) {
43
42
  module.compileAndWatchArgs();
44
43
  }
45
44
  else {
package/bin/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC;AAErE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;AAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC;AAE9E,IAAI,QAAQ,EAAE,CAAC;IACd,MAAM,IAAI,GACT;UACQ,WAAW;;;;;;;;;;;;;;;;;;;;0DAoBqC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,IAAI,EAAE,CAAC;AACR,CAAC;AAGD,IAAI,YAAY,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC;AACR,CAAC;AAED,IAAI,QAAQ,EAAE,CAAC;IACd,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,WAAW,EAAE,CAAC;QACtB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,aAAa,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAClD,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport { exit } from 'process';\n\nconst CLI_VERSION = '2.1.0';\n\nconst args = process.argv;\nconst inputs = args.slice(2);\n\nconst showHelp = inputs[0] === '-h' || inputs[0] === '--help';\nconst printVersion = inputs[0] === '-v' || inputs[0] === '--version';\n\nconst runBuild = inputs[0] === '-b' || inputs[0] === '--build';\nconst generateTypes = inputs[0] === '-gt' || inputs[0] === '--generate-types';\n\nif (showHelp) {\n\tconst help =\n\t\t`\nVersion ${CLI_VERSION}\nUsage: ibyar [options]\n\nExamples:\n ibyar\n ibyar -b\n ibyar -b -w\n ibyar -gt\n ibyar -v\n ibyar --help\n\nOptions:\n -b --build compile the project source code with ibyar transformers\n\t-w\t\t--watch\t\t\t\tcompile and watch source files, used with --build\n -gt --generate-types generate \"web-types.json\" files, and typescript\n\t definitions '.d.ts' files. \n\t you can import this file later in your \"index.ts\" \n\t\t\t\t\t\t\t\tor \"polyfills.ts\" file, so any editor \"VS Code\" can\n\t\t\t\t\t\t\t\tsupport autocomplete easily,\n -h --help print help message\n -v --version output the version number`;\n\tconsole.log(help);\n\texit();\n}\n\n\nif (printVersion) {\n\tconsole.log(CLI_VERSION);\n\texit();\n}\n\nif (runBuild) {\n\timport('../compiler/compiler.js').then(module => {\n\t\tif (process.argv.includes('-w') || process.argv.includes('--watch')) {\n\t\t\tmodule.compileAndWatchArgs();\n\t\t} else {\n\t\t\tmodule.compileArgs();\n\t\t}\n\t});\n}\n\nif (generateTypes) {\n\tconsole.log('generate types not supported yet.');\n}\n"]}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli/bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAEpG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAEpF,IAAI,QAAQ,EAAE,CAAC;IACd,MAAM,IAAI,GACT;UACQ,WAAW;;;;;;;;;;;;;;;;;;;;0DAoBqC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,IAAI,EAAE,CAAC;AACR,CAAC;AAGD,IAAI,YAAY,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,QAAQ,EAAE,CAAC;IACd,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAC/C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,WAAW,EAAE,CAAC;QACtB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,aAAa,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAClD,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport { exit } from 'process';\n\nconst CLI_VERSION = '2.1.2';\n\nconst args = process.argv;\nconst inputs = args.slice(2);\n\nconst showHelp = inputs.includes('-h') || inputs.includes('--help');\nconst printVersion = inputs.length === 1 && (inputs.includes('-v') || inputs.includes('--version'));\n\nconst runBuild = inputs.includes('-b') || inputs.includes('--build');\nconst generateTypes = inputs.includes('-gt') || inputs.includes('--generate-types');\n\nif (showHelp) {\n\tconst help =\n\t\t`\nVersion ${CLI_VERSION}\nUsage: ibyar [options]\n\nExamples:\n ibyar\n ibyar -b\n ibyar -b -w\n ibyar -gt\n ibyar -v\n ibyar --help\n\nOptions:\n -b --build compile the project source code with ibyar transformers\n\t-w\t\t--watch\t\t\t\tcompile and watch source files, used with --build\n -gt --generate-types generate \"web-types.json\" files, and typescript\n\t definitions '.d.ts' files. \n\t you can import this file later in your \"index.ts\" \n\t\t\t\t\t\t\t\tor \"polyfills.ts\" file, so any editor \"VS Code\" can\n\t\t\t\t\t\t\t\tsupport autocomplete easily,\n -h --help print help message\n -v --version output the version number`;\n\tconsole.log(help);\n\texit();\n}\n\n\nif (printVersion) {\n\tconsole.log(CLI_VERSION);\n}\n\nif (runBuild) {\n\timport('../compiler/compiler.js').then(module => {\n\t\tif (inputs.includes('-w') || inputs.includes('--watch')) {\n\t\t\tmodule.compileAndWatchArgs();\n\t\t} else {\n\t\t\tmodule.compileArgs();\n\t\t}\n\t});\n}\n\nif (generateTypes) {\n\tconsole.log('generate types not supported yet.');\n}\n"]}
@@ -16,72 +16,4 @@ export function registerDirectiveCall(info) {
16
16
  metadata.inputs = info.inputs?.map(input => ({ modelProperty: input.name, viewAttribute: input.aliasName }));
17
17
  registerDirective(modelClass);
18
18
  }
19
- /**
20
- * register `class` and `style` attribute directive
21
- */
22
- registerDirectiveCall({
23
- selector: 'class',
24
- inputs: [{ name: 'class', aliasName: 'class' }],
25
- });
26
- registerDirectiveCall({
27
- selector: 'style',
28
- inputs: [{ name: 'style', aliasName: 'style' }],
29
- });
30
- // registerDirective
31
- /**
32
- * for of/await/in directives
33
- */
34
- registerDirectiveCall({
35
- selector: '*for',
36
- successor: '*empty',
37
- inputs: [
38
- { name: 'forOf', aliasName: 'of' },
39
- { name: 'trackBy', aliasName: 'trackBy' },
40
- ],
41
- });
42
- registerDirectiveCall({
43
- selector: '*forOf',
44
- successor: '*empty',
45
- inputs: [
46
- { name: 'forOf', aliasName: 'of' },
47
- { name: 'trackBy', aliasName: 'trackBy' },
48
- ],
49
- });
50
- registerDirectiveCall({
51
- selector: '*forAwait',
52
- successor: '*empty',
53
- inputs: [{ name: 'forOf', aliasName: 'of' },],
54
- });
55
- registerDirectiveCall({
56
- selector: '*forIn',
57
- successor: '*empty',
58
- inputs: [{ name: 'forOf', aliasName: 'of' },],
59
- });
60
- /**
61
- * if then else directive
62
- */
63
- registerDirectiveCall({
64
- selector: '*if',
65
- successor: '*else',
66
- inputs: [
67
- { name: 'ifCondition', aliasName: 'if' },
68
- { name: 'thenTemplateRef', aliasName: 'then' },
69
- { name: 'elseTemplateRef', aliasName: 'else' },
70
- ],
71
- });
72
- /**
73
- * switch case default directives
74
- */
75
- registerDirectiveCall({
76
- selector: '*switch',
77
- inputs: [{ name: 'switchValue', aliasName: 'switch' },],
78
- });
79
- registerDirectiveCall({
80
- selector: '*case',
81
- inputs: [{ name: 'caseValue', aliasName: 'case' },],
82
- });
83
- registerDirectiveCall({
84
- selector: '*default',
85
- inputs: [{ name: 'defaultCaseValue', aliasName: 'default' },],
86
- });
87
19
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/directives/register.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerDirective } from '@ibyar/core/node.js';\nimport { directiveRegistry } from '@ibyar/elements/node.js';\nimport { DecoratorInfo } from '../transformer/modules.js';\nimport { metadataHoler } from '@ibyar/decorators';\n\nexport interface DirectiveInfo {\n\tselector: string,\n\tsuccessor?: string,\n\tinputs?: DecoratorInfo[],\n\toutputs?: DecoratorInfo[],\n}\nexport function registerDirectiveCall(info: DirectiveInfo) {\n\tdirectiveRegistry.register(info.selector, {\n\t\tsuccessor: info.successor,\n\t\tinputs: info.inputs?.map(i => i.aliasName),\n\t\toutputs: info.outputs?.map(i => i.aliasName),\n\t});\n\tconst modelClass = {};\n\tconst modelKey = {};\n\t(modelClass as any)[Symbol.metadata] = modelKey;\n\tconst metadata = metadataHoler.getOrCreate(modelKey);\n\tmetadata.modelClass = modelClass;\n\tmetadata.selector = info.selector;\n\tmetadata.inputs = info.inputs?.map(input => ({ modelProperty: input.name, viewAttribute: input.aliasName }));\n\tregisterDirective(modelClass);\n}\n\n/**\n * register `class` and `style` attribute directive\n */\nregisterDirectiveCall({\n\tselector: 'class',\n\tinputs: [{ name: 'class', aliasName: 'class' }],\n});\n\nregisterDirectiveCall({\n\tselector: 'style',\n\tinputs: [{ name: 'style', aliasName: 'style' }],\n});\n\n\n// registerDirective\n\n/**\n * for of/await/in directives\n */\nregisterDirectiveCall({\n\tselector: '*for',\n\tsuccessor: '*empty',\n\tinputs: [\n\t\t{ name: 'forOf', aliasName: 'of' },\n\t\t{ name: 'trackBy', aliasName: 'trackBy' },\n\t],\n});\n\nregisterDirectiveCall({\n\tselector: '*forOf',\n\tsuccessor: '*empty',\n\tinputs: [\n\t\t{ name: 'forOf', aliasName: 'of' },\n\t\t{ name: 'trackBy', aliasName: 'trackBy' },\n\t],\n});\n\nregisterDirectiveCall({\n\tselector: '*forAwait',\n\tsuccessor: '*empty',\n\tinputs: [{ name: 'forOf', aliasName: 'of' },],\n});\n\nregisterDirectiveCall({\n\tselector: '*forIn',\n\tsuccessor: '*empty',\n\tinputs: [{ name: 'forOf', aliasName: 'of' },],\n});\n\n\n/**\n * if then else directive\n */\nregisterDirectiveCall({\n\tselector: '*if',\n\tsuccessor: '*else',\n\tinputs: [\n\t\t{ name: 'ifCondition', aliasName: 'if' },\n\t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n\t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n\t],\n});\n\n\n/**\n * switch case default directives\n */\nregisterDirectiveCall({\n\tselector: '*switch',\n\tinputs: [{ name: 'switchValue', aliasName: 'switch' },],\n});\n\nregisterDirectiveCall({\n\tselector: '*case',\n\tinputs: [{ name: 'caseValue', aliasName: 'case' },],\n});\n\nregisterDirectiveCall({\n\tselector: '*default',\n\tinputs: [{ name: 'defaultCaseValue', aliasName: 'default' },],\n});\n"]}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/directives/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQlD,MAAM,UAAU,qBAAqB,CAAC,IAAmB;IACxD,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACnB,UAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAChD,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrD,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7G,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import { registerDirective } from '@ibyar/core/node.js';\nimport { directiveRegistry } from '@ibyar/elements/node.js';\nimport { DecoratorInfo } from '../transformer/modules.js';\nimport { metadataHoler } from '@ibyar/decorators';\n\nexport interface DirectiveInfo {\n\tselector: string,\n\tsuccessor?: string,\n\tinputs?: DecoratorInfo[],\n\toutputs?: DecoratorInfo[],\n}\nexport function registerDirectiveCall(info: DirectiveInfo) {\n\tdirectiveRegistry.register(info.selector, {\n\t\tsuccessor: info.successor,\n\t\tinputs: info.inputs?.map(i => i.aliasName),\n\t\toutputs: info.outputs?.map(i => i.aliasName),\n\t});\n\tconst modelClass = {};\n\tconst modelKey = {};\n\t(modelClass as any)[Symbol.metadata] = modelKey;\n\tconst metadata = metadataHoler.getOrCreate(modelKey);\n\tmetadata.modelClass = modelClass;\n\tmetadata.selector = info.selector;\n\tmetadata.inputs = info.inputs?.map(input => ({ modelProperty: input.name, viewAttribute: input.aliasName }));\n\tregisterDirective(modelClass);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibyar/cli",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "The Ibyar/Aurora CLI tool",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ibyar/aurora",
@@ -36,12 +36,12 @@
36
36
  "access": "public"
37
37
  },
38
38
  "dependencies": {
39
- "@ibyar/core": "^2.1.0",
40
- "@ibyar/decorators": "^2.1.0",
41
- "@ibyar/directives": "^2.1.0",
42
- "@ibyar/elements": "^2.1.0",
43
- "@ibyar/expressions": "^2.1.0",
44
- "@ibyar/pipes": "^2.1.0",
39
+ "@ibyar/core": "^2.1.2",
40
+ "@ibyar/decorators": "^2.1.2",
41
+ "@ibyar/directives": "^2.1.2",
42
+ "@ibyar/elements": "^2.1.2",
43
+ "@ibyar/expressions": "^2.1.2",
44
+ "@ibyar/pipes": "^2.1.2",
45
45
  "tslib": "^2.6.3",
46
46
  "typescript": "^5.5.2"
47
47
  },
@@ -74,5 +74,5 @@
74
74
  "shadow-dom",
75
75
  "typescript"
76
76
  ],
77
- "gitHead": "9f8ca74fb05ae35ddfe22f4513c1175fffab9ea9"
77
+ "gitHead": "d08ac0cb17c5288fcf316e60fa831420afadc450"
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAG/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,UAAU,CAmB3D;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,2BAQxE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,sBAWjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,2CAA2C,4BAY1D;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,wBAG5D;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAEvJ;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,CAAC,CAErI;AAED;;;;;;GAMG;AAEH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAQ5H;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CA+BlG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAkB/F"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAG/F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,wBAAwB,CAEpF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,UAAU,CAmB3D;AAGD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,2BAQxE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,sBAWjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,2CAA2C,4BAY1D;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,wBAG5D;AAGD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAEvJ;AAED,wBAAgB,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,kBAAyB,EAAE,UAAU,gBAAmB,GAAG,CAAC,CAErI;AAED;;;;;;GAMG;AAEH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAQ5H;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CA+BlG;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAwB/F"}
@@ -154,9 +154,15 @@ export function updateModuleTypeWithDirectives(classes) {
154
154
  if (directive.outputs.length > 0) {
155
155
  temp.push(`outputs: [${outputs.join(',')}]`);
156
156
  }
157
- return `{${temp.join(',')}}`;
157
+ let directiveTypeName = directive.name.startsWith('*')
158
+ ? directive.name.substring(1)
159
+ : directive.name;
160
+ directiveTypeName = directiveTypeName.replaceAll('-', ' ')
161
+ .split(' ')
162
+ .map(str => str.charAt(0).toUpperCase() + str.substring(1))
163
+ .join('');
164
+ return `export type ɵɵ0${ToCamelCase(directiveTypeName)}Directive0ɵɵ = {${temp.join(',')}};`;
158
165
  });
159
- const directivesType = `export type ɵɵ0Directives0ɵɵ = [${nodes.join(',')}]`;
160
- return generateStatements(directivesType);
166
+ return generateStatements(nodes.join());
161
167
  }
162
168
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { ToCamelCase } from '@ibyar/core/node.js';\nimport { ClassInfo } from './modules.js';\n\n\nexport function convertToProperties(json: { [key: string]: any }): ts.ObjectLiteralElementLike[] {\n\tconst keys = Object.keys(json);\n\treturn keys.map(key => createProperty(key, json[key]));\n}\n\nexport function createProperty(name: string, value: any): ts.ObjectLiteralElementLike {\n\treturn ts.factory.createPropertyAssignment(name, createInitializer(value));\n}\n\nexport function createInitializer(value: any): ts.Expression {\n\tif (Array.isArray(value)) {\n\t\tconst elements = value.map(createInitializer);\n\t\treturn ts.factory.createArrayLiteralExpression(elements);\n\t}\n\tswitch (typeof value) {\n\t\tcase 'string': return ts.factory.createStringLiteral(value);\n\t\tcase 'number': return ts.factory.createNumericLiteral(value);\n\t\tcase 'bigint': return ts.factory.createBigIntLiteral(value.toString());\n\t\tcase 'boolean': return value ? ts.factory.createTrue() : ts.factory.createFalse();\n\t\tcase 'object': {\n\t\t\tif (!value) {\n\t\t\t\treturn ts.factory.createNull();\n\t\t\t}\n\t\t\tconst properties = convertToProperties(value);\n\t\t\treturn ts.factory.createObjectLiteralExpression(properties);\n\t\t};\n\t}\n\treturn ts.factory.createNull();\n}\n\n\nexport function createInterfaceType(viewName: string, extendsType: string) {\n\tconst identifier = ts.factory.createIdentifier(extendsType);\n\tconst expressionWithTypeArguments = ts.factory.createExpressionWithTypeArguments(identifier, undefined);\n\tconst heritageClause = ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [expressionWithTypeArguments]);\n\treturn ts.factory.createInterfaceDeclaration(undefined, viewName, undefined, [heritageClause], []);\n\t// const exportModifier: ts.ModifierSyntaxKind = ts.SyntaxKind.ExportKeyword;\n\t// const modifier = ts.factory.createModifier(exportModifier);\n\t// return ts.factory.createInterfaceDeclaration([modifier], viewName, undefined, [heritageClause], []);\n}\n\nexport function createTypeLiteral(typeName: string) {\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode(typeName)),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode(typeName)\n\t\t),\n\t];\n\treturn ts.factory.createTypeLiteralNode(members);\n}\n\n/**\n * create view constructor interface of Type `T`\n * \n * ```ts\n * interface ConstructorOfView<T> {\n * \tnew(): T;\n * \treadonly prototype: T;\n * }\n * ```\n */\nexport function createConstructorOfViewInterfaceDeclaration() {\n\tconst typeParameter = ts.factory.createTypeParameterDeclaration(undefined, 'T');\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode('T')),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode('T')\n\t\t),\n\t];\n\treturn ts.factory.createInterfaceDeclaration(undefined, 'ConstructorOfView', [typeParameter], undefined, members);\n}\n\nexport function createStaticPropertyViewType(typeName: string) {\n\tconst typeArgument = ts.factory.createTypeReferenceNode(typeName);\n\treturn ts.factory.createTypeReferenceNode('ConstructorOfView', [typeArgument]);\n}\n\n\nexport function generateStatements(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): ts.NodeArray<ts.Statement> {\n\treturn ts.createSourceFile('temp', sourceText, scriptTarget, false, scriptKind).statements;\n}\n\nexport function generateNode<T = ts.Node>(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): T {\n\treturn generateStatements(sourceText, scriptTarget, scriptKind)[0] as T;\n}\n\n/**\n * declare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'user-view': HTMLUserViewElement;\n\t}\n}\n */\n\nexport function updateGlobalHTMLElementTagNameMap(views: { tagName: string, viewName: string }[]): ts.NodeArray<ts.Statement> {\n\tconst sourceCode = `\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\nexport function updateModuleTypeWithComponentView(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst viewClassDeclarations = classes.map(c => {\n\t\tconst inputs = c.inputs.map(input => input.aliasName);\n\t\tconst outputs = c.outputs.map(input => input.aliasName).map(output => 'on' + ToCamelCase(output));\n\t\tconst attributes = [...inputs, ...outputs].map(s => `'${s}'`).join(' | ');\n\t\tconst interfaceBody = `\n\t\t\tpublic static observedAttributes: [${attributes}];\n\n\t\t\t${c.inputs.map(input => `public ${input.aliasName}${input.type ? `: ${input.type}` : ''};`).join('\\n')}\n\n\t\t\t${c.outputs.map(output => `public on${ToCamelCase(output.aliasName)}${output.type ? `: ${output.type}` : ''};`).join('\\n')}\n\t\t\t\n\t\t`;\n\t\t// need to fix @FormValue type;\n\t\treturn c.views.map(view => `\n\t\t\tdeclare class ${view.viewName} extends ${view.extendsType} {\n\t\t\t\t${interfaceBody.trim()}\n\t\t\t}\n\t\t\tdeclare interface ${view.viewName} extends ${view.formAssociated ? `BaseFormAssociatedComponent<${c.name}>, ` : ''}BaseComponent<${c.name}> {}\n\t\t`);\n\t});\n\tconst views = classes.flatMap(c => c.views.map(v => ({ tagName: v.selector, viewName: v.viewName })));\n\tconst sourceCode = `\n\t\timport { BaseComponent, BaseFormAssociatedComponent, ConstructorOfView } from '@ibyar/core';\n\t\t${viewClassDeclarations.join('\\n')}\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\n/**\n * create new type with name `ɵɵ0Directives0ɵɵ`\n * \n * example:\n * ```ts\n * export type ɵɵ0Directives0ɵɵ = [{\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * }];\n * ```\n * @param classes directive class information\n * @returns new array of statements\n */\nexport function updateModuleTypeWithDirectives(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst nodes: string[] | undefined = classes.map(directive => {\n\t\tconst inputs: string[] = directive.inputs.map(input => `{name: '${input.name}', aliasName: '${input.aliasName}'}`);\n\t\tconst outputs: string[] = directive.outputs.map(output => `{name: '${output.name}', aliasName: '${output.aliasName}'}`);\n\t\tconst temp: string[] = [`selector: '${directive.name}'`];\n\t\tif (directive.successor) {\n\t\t\ttemp.push(`successor: '${directive.successor}'`);\n\t\t}\n\t\tif (directive.inputs.length > 0) {\n\t\t\ttemp.push(`inputs: [${inputs.join(',')}]`);\n\t\t}\n\t\tif (directive.outputs.length > 0) {\n\t\t\ttemp.push(`outputs: [${outputs.join(',')}]`);\n\t\t}\n\t\treturn `{${temp.join(',')}}`;\n\t});\n\tconst directivesType = `export type ɵɵ0Directives0ɵɵ = [${nodes.join(',')}]`;\n\treturn generateStatements(directivesType);\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cli/transformer/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { ToCamelCase } from '@ibyar/core/node.js';\nimport { ClassInfo } from './modules.js';\n\n\nexport function convertToProperties(json: { [key: string]: any }): ts.ObjectLiteralElementLike[] {\n\tconst keys = Object.keys(json);\n\treturn keys.map(key => createProperty(key, json[key]));\n}\n\nexport function createProperty(name: string, value: any): ts.ObjectLiteralElementLike {\n\treturn ts.factory.createPropertyAssignment(name, createInitializer(value));\n}\n\nexport function createInitializer(value: any): ts.Expression {\n\tif (Array.isArray(value)) {\n\t\tconst elements = value.map(createInitializer);\n\t\treturn ts.factory.createArrayLiteralExpression(elements);\n\t}\n\tswitch (typeof value) {\n\t\tcase 'string': return ts.factory.createStringLiteral(value);\n\t\tcase 'number': return ts.factory.createNumericLiteral(value);\n\t\tcase 'bigint': return ts.factory.createBigIntLiteral(value.toString());\n\t\tcase 'boolean': return value ? ts.factory.createTrue() : ts.factory.createFalse();\n\t\tcase 'object': {\n\t\t\tif (!value) {\n\t\t\t\treturn ts.factory.createNull();\n\t\t\t}\n\t\t\tconst properties = convertToProperties(value);\n\t\t\treturn ts.factory.createObjectLiteralExpression(properties);\n\t\t};\n\t}\n\treturn ts.factory.createNull();\n}\n\n\nexport function createInterfaceType(viewName: string, extendsType: string) {\n\tconst identifier = ts.factory.createIdentifier(extendsType);\n\tconst expressionWithTypeArguments = ts.factory.createExpressionWithTypeArguments(identifier, undefined);\n\tconst heritageClause = ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [expressionWithTypeArguments]);\n\treturn ts.factory.createInterfaceDeclaration(undefined, viewName, undefined, [heritageClause], []);\n\t// const exportModifier: ts.ModifierSyntaxKind = ts.SyntaxKind.ExportKeyword;\n\t// const modifier = ts.factory.createModifier(exportModifier);\n\t// return ts.factory.createInterfaceDeclaration([modifier], viewName, undefined, [heritageClause], []);\n}\n\nexport function createTypeLiteral(typeName: string) {\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode(typeName)),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode(typeName)\n\t\t),\n\t];\n\treturn ts.factory.createTypeLiteralNode(members);\n}\n\n/**\n * create view constructor interface of Type `T`\n * \n * ```ts\n * interface ConstructorOfView<T> {\n * \tnew(): T;\n * \treadonly prototype: T;\n * }\n * ```\n */\nexport function createConstructorOfViewInterfaceDeclaration() {\n\tconst typeParameter = ts.factory.createTypeParameterDeclaration(undefined, 'T');\n\tconst members: ts.TypeElement[] = [\n\t\tts.factory.createConstructSignature(undefined, [], ts.factory.createTypeReferenceNode('T')),\n\t\tts.factory.createPropertySignature(\n\t\t\t[ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)],\n\t\t\t'prototype',\n\t\t\tundefined,\n\t\t\tts.factory.createTypeReferenceNode('T')\n\t\t),\n\t];\n\treturn ts.factory.createInterfaceDeclaration(undefined, 'ConstructorOfView', [typeParameter], undefined, members);\n}\n\nexport function createStaticPropertyViewType(typeName: string) {\n\tconst typeArgument = ts.factory.createTypeReferenceNode(typeName);\n\treturn ts.factory.createTypeReferenceNode('ConstructorOfView', [typeArgument]);\n}\n\n\nexport function generateStatements(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): ts.NodeArray<ts.Statement> {\n\treturn ts.createSourceFile('temp', sourceText, scriptTarget, false, scriptKind).statements;\n}\n\nexport function generateNode<T = ts.Node>(sourceText: string, scriptTarget = ts.ScriptTarget.ES2020, scriptKind = ts.ScriptKind.TS): T {\n\treturn generateStatements(sourceText, scriptTarget, scriptKind)[0] as T;\n}\n\n/**\n * declare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'user-view': HTMLUserViewElement;\n\t}\n}\n */\n\nexport function updateGlobalHTMLElementTagNameMap(views: { tagName: string, viewName: string }[]): ts.NodeArray<ts.Statement> {\n\tconst sourceCode = `\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\nexport function updateModuleTypeWithComponentView(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst viewClassDeclarations = classes.map(c => {\n\t\tconst inputs = c.inputs.map(input => input.aliasName);\n\t\tconst outputs = c.outputs.map(input => input.aliasName).map(output => 'on' + ToCamelCase(output));\n\t\tconst attributes = [...inputs, ...outputs].map(s => `'${s}'`).join(' | ');\n\t\tconst interfaceBody = `\n\t\t\tpublic static observedAttributes: [${attributes}];\n\n\t\t\t${c.inputs.map(input => `public ${input.aliasName}${input.type ? `: ${input.type}` : ''};`).join('\\n')}\n\n\t\t\t${c.outputs.map(output => `public on${ToCamelCase(output.aliasName)}${output.type ? `: ${output.type}` : ''};`).join('\\n')}\n\t\t\t\n\t\t`;\n\t\t// need to fix @FormValue type;\n\t\treturn c.views.map(view => `\n\t\t\tdeclare class ${view.viewName} extends ${view.extendsType} {\n\t\t\t\t${interfaceBody.trim()}\n\t\t\t}\n\t\t\tdeclare interface ${view.viewName} extends ${view.formAssociated ? `BaseFormAssociatedComponent<${c.name}>, ` : ''}BaseComponent<${c.name}> {}\n\t\t`);\n\t});\n\tconst views = classes.flatMap(c => c.views.map(v => ({ tagName: v.selector, viewName: v.viewName })));\n\tconst sourceCode = `\n\t\timport { BaseComponent, BaseFormAssociatedComponent, ConstructorOfView } from '@ibyar/core';\n\t\t${viewClassDeclarations.join('\\n')}\n\t\tdeclare global {\n\t\t\tinterface HTMLElementTagNameMap {\n\t\t\t\t${views.map(view => `['${view.tagName}']: ${view.viewName};`).join('\\n')}\n\t\t\t}\n\t\t}`;\n\treturn generateStatements(sourceCode);\n}\n\n/**\n * create new type with name `ɵɵ0Directives0ɵɵ`\n * \n * example:\n * ```ts\n * export type ɵɵ0Directives0ɵɵ = [{\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * }];\n * ```\n * @param classes directive class information\n * @returns new array of statements\n */\nexport function updateModuleTypeWithDirectives(classes: ClassInfo[]): ts.NodeArray<ts.Statement> {\n\tconst nodes: string[] | undefined = classes.map(directive => {\n\t\tconst inputs: string[] = directive.inputs.map(input => `{name: '${input.name}', aliasName: '${input.aliasName}'}`);\n\t\tconst outputs: string[] = directive.outputs.map(output => `{name: '${output.name}', aliasName: '${output.aliasName}'}`);\n\t\tconst temp: string[] = [`selector: '${directive.name}'`];\n\t\tif (directive.successor) {\n\t\t\ttemp.push(`successor: '${directive.successor}'`);\n\t\t}\n\t\tif (directive.inputs.length > 0) {\n\t\t\ttemp.push(`inputs: [${inputs.join(',')}]`);\n\t\t}\n\t\tif (directive.outputs.length > 0) {\n\t\t\ttemp.push(`outputs: [${outputs.join(',')}]`);\n\t\t}\n\t\tlet directiveTypeName = directive.name.startsWith('*')\n\t\t\t? directive.name.substring(1)\n\t\t\t: directive.name;\n\t\tdirectiveTypeName = directiveTypeName.replaceAll('-', ' ')\n\t\t\t.split(' ')\n\t\t\t.map(str => str.charAt(0).toUpperCase() + str.substring(1))\n\t\t\t.join('');\n\t\treturn `export type ɵɵ0${ToCamelCase(directiveTypeName)}Directive0ɵɵ = {${temp.join(',')}};`;\n\t});\n\treturn generateStatements(nodes.join());\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import ts from 'typescript/lib/tsserverlibrary.js';
2
2
  /**
3
- * search for `ɵɵ0Directives0ɵɵ` type
3
+ * search for `ɵɵ0Directive.*0ɵɵ` type
4
4
  *
5
5
  * example:
6
6
  * ```ts
7
- * export type ɵɵ0Directives0ɵɵ = [{
7
+ * export type ɵɵ0IfDirective0ɵɵ = {
8
8
  * selector: '*if';
9
9
  * successor: '*else',
10
10
  * inputs: [
@@ -13,7 +13,7 @@ import ts from 'typescript/lib/tsserverlibrary.js';
13
13
  * { name: 'elseTemplateRef', aliasName: 'else' },
14
14
  * ],
15
15
  * outputs: [],
16
- * }];
16
+ * };
17
17
  * ```
18
18
  * @param program a ts program
19
19
  * @returns a transformer factory of source file
@@ -1 +1 @@
1
- {"version":3,"file":"scan-directives.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAyDnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAMzE"}
1
+ {"version":3,"file":"scan-directives.d.ts","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAmDnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAMzE"}
@@ -4,58 +4,53 @@ function removeQuotations(string) {
4
4
  return string.substring(1, string.length - 1);
5
5
  }
6
6
  function extractDirectives(alias, sourceFile) {
7
- const type = alias.type;
8
- if (!ts.isTupleTypeNode(type)) {
7
+ const elm = alias.type;
8
+ if (!ts.isTypeLiteralNode(elm)) {
9
9
  return;
10
10
  }
11
- type.elements.forEach(elm => {
12
- if (!ts.isTypeLiteralNode(elm)) {
11
+ const info = {};
12
+ elm.members.forEach(member => {
13
+ if (!ts.isPropertySignature(member)) {
13
14
  return;
14
15
  }
15
- const info = {};
16
- elm.members.forEach(member => {
17
- if (!ts.isPropertySignature(member)) {
18
- return;
19
- }
20
- const name = member.name.getText(sourceFile);
21
- if ((name === 'selector' || name === 'successor') && member.type && ts.isLiteralTypeNode(member.type)) {
22
- const value = member.type.literal.getText(sourceFile);
23
- info[name] = removeQuotations(value);
24
- }
25
- else if ((name === 'inputs' || name === 'outputs') && member.type && ts.isTupleTypeNode(member.type)) {
26
- const value = [];
27
- member.type.elements.forEach(item => {
28
- if (!ts.isTypeLiteralNode(item)) {
16
+ const name = member.name.getText(sourceFile);
17
+ if ((name === 'selector' || name === 'successor') && member.type && ts.isLiteralTypeNode(member.type)) {
18
+ const value = member.type.literal.getText(sourceFile);
19
+ info[name] = removeQuotations(value);
20
+ }
21
+ else if ((name === 'inputs' || name === 'outputs') && member.type && ts.isTupleTypeNode(member.type)) {
22
+ const value = [];
23
+ member.type.elements.forEach(item => {
24
+ if (!ts.isTypeLiteralNode(item)) {
25
+ return;
26
+ }
27
+ const itemObject = {};
28
+ item.members.forEach(property => {
29
+ if (!ts.isPropertySignature(property)) {
29
30
  return;
30
31
  }
31
- const itemObject = {};
32
- item.members.forEach(property => {
33
- if (!ts.isPropertySignature(property)) {
34
- return;
35
- }
36
- const key = property.name.getText(sourceFile);
37
- if ((key === 'name' || key == 'aliasName') && property.type && ts.isLiteralTypeNode(property.type)) {
38
- const keyValue = property.type.literal.getText(sourceFile);
39
- itemObject[key] = removeQuotations(keyValue);
40
- }
41
- });
42
- value.push(itemObject);
32
+ const key = property.name.getText(sourceFile);
33
+ if ((key === 'name' || key == 'aliasName') && property.type && ts.isLiteralTypeNode(property.type)) {
34
+ const keyValue = property.type.literal.getText(sourceFile);
35
+ itemObject[key] = removeQuotations(keyValue);
36
+ }
43
37
  });
44
- info[name] = value;
45
- }
46
- });
47
- if (!info.selector) {
48
- return;
38
+ value.push(itemObject);
39
+ });
40
+ info[name] = value;
49
41
  }
50
- registerDirectiveCall(info);
51
42
  });
43
+ if (!info.selector) {
44
+ return;
45
+ }
46
+ registerDirectiveCall(info);
52
47
  }
53
48
  /**
54
- * search for `ɵɵ0Directives0ɵɵ` type
49
+ * search for `ɵɵ0Directive.*0ɵɵ` type
55
50
  *
56
51
  * example:
57
52
  * ```ts
58
- * export type ɵɵ0Directives0ɵɵ = [{
53
+ * export type ɵɵ0IfDirective0ɵɵ = {
59
54
  * selector: '*if';
60
55
  * successor: '*else',
61
56
  * inputs: [
@@ -64,14 +59,14 @@ function extractDirectives(alias, sourceFile) {
64
59
  * { name: 'elseTemplateRef', aliasName: 'else' },
65
60
  * ],
66
61
  * outputs: [],
67
- * }];
62
+ * };
68
63
  * ```
69
64
  * @param program a ts program
70
65
  * @returns a transformer factory of source file
71
66
  */
72
67
  export function scanDirectivesTypeVisitor(sourceFile) {
73
68
  ts.forEachChild(sourceFile, node => {
74
- if (ts.isTypeAliasDeclaration(node) && node.name.getText(sourceFile) === 'ɵɵ0Directives0ɵɵ') {
69
+ if (ts.isTypeAliasDeclaration(node) && node.name.getText(sourceFile).endsWith('Directive0ɵɵ')) {
75
70
  extractDirectives(node, sourceFile);
76
71
  }
77
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"scan-directives.js","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { DirectiveInfo, registerDirectiveCall } from '../directives/register.js';\n\n\nfunction removeQuotations(string: string) {\n\treturn string.substring(1, string.length - 1);\n}\n\nfunction extractDirectives(alias: ts.TypeAliasDeclaration, sourceFile: ts.SourceFile) {\n\tconst type = alias.type;\n\tif (!ts.isTupleTypeNode(type)) {\n\t\treturn;\n\t}\n\ttype.elements.forEach(elm => {\n\t\tif (!ts.isTypeLiteralNode(elm)) {\n\t\t\treturn;\n\t\t}\n\t\tconst info = {} as DirectiveInfo;\n\t\telm.members.forEach(member => {\n\t\t\tif (!ts.isPropertySignature(member)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst name = member.name.getText(sourceFile);\n\t\t\tif ((name === 'selector' || name === 'successor') && member.type && ts.isLiteralTypeNode(member.type)) {\n\t\t\t\tconst value = member.type.literal.getText(sourceFile);\n\t\t\t\tinfo[name] = removeQuotations(value);\n\t\t\t} else if ((name === 'inputs' || name === 'outputs') && member.type && ts.isTupleTypeNode(member.type)) {\n\t\t\t\ttype Item = { name: string, aliasName: string };\n\t\t\t\tconst value: Item[] = [];\n\t\t\t\tmember.type.elements.forEach(item => {\n\t\t\t\t\tif (!ts.isTypeLiteralNode(item)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst itemObject = {} as Item;\n\t\t\t\t\titem.members.forEach(property => {\n\t\t\t\t\t\tif (!ts.isPropertySignature(property)) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst key = property.name.getText(sourceFile);\n\t\t\t\t\t\tif ((key === 'name' || key == 'aliasName') && property.type && ts.isLiteralTypeNode(property.type)) {\n\t\t\t\t\t\t\tconst keyValue = property.type.literal.getText(sourceFile);\n\t\t\t\t\t\t\titemObject[key] = removeQuotations(keyValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tvalue.push(itemObject);\n\t\t\t\t});\n\t\t\t\tinfo[name] = value;\n\t\t\t}\n\t\t});\n\t\tif (!info.selector) {\n\t\t\treturn;\n\t\t}\n\t\tregisterDirectiveCall(info);\n\t});\n\n}\n\n/**\n * search for `ɵɵ0Directives0ɵɵ` type\n * \n * example:\n * ```ts\n * export type ɵɵ0Directives0ɵɵ = [{\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * }];\n * ```\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function scanDirectivesTypeVisitor(sourceFile: ts.SourceFile): void {\n\tts.forEachChild(sourceFile, node => {\n\t\tif (ts.isTypeAliasDeclaration(node) && node.name.getText(sourceFile) === 'ɵɵ0Directives0ɵɵ') {\n\t\t\textractDirectives(node, sourceFile);\n\t\t}\n\t});\n}\n"]}
1
+ {"version":3,"file":"scan-directives.js","sourceRoot":"","sources":["../../../src/cli/transformer/scan-directives.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript/lib/tsserverlibrary.js';\nimport { DirectiveInfo, registerDirectiveCall } from '../directives/register.js';\n\n\nfunction removeQuotations(string: string) {\n\treturn string.substring(1, string.length - 1);\n}\n\nfunction extractDirectives(alias: ts.TypeAliasDeclaration, sourceFile: ts.SourceFile) {\n\tconst elm = alias.type;\n\tif (!ts.isTypeLiteralNode(elm)) {\n\t\treturn;\n\t}\n\tconst info = {} as DirectiveInfo;\n\telm.members.forEach(member => {\n\t\tif (!ts.isPropertySignature(member)) {\n\t\t\treturn;\n\t\t}\n\t\tconst name = member.name.getText(sourceFile);\n\t\tif ((name === 'selector' || name === 'successor') && member.type && ts.isLiteralTypeNode(member.type)) {\n\t\t\tconst value = member.type.literal.getText(sourceFile);\n\t\t\tinfo[name] = removeQuotations(value);\n\t\t} else if ((name === 'inputs' || name === 'outputs') && member.type && ts.isTupleTypeNode(member.type)) {\n\t\t\ttype Item = { name: string, aliasName: string };\n\t\t\tconst value: Item[] = [];\n\t\t\tmember.type.elements.forEach(item => {\n\t\t\t\tif (!ts.isTypeLiteralNode(item)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst itemObject = {} as Item;\n\t\t\t\titem.members.forEach(property => {\n\t\t\t\t\tif (!ts.isPropertySignature(property)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst key = property.name.getText(sourceFile);\n\t\t\t\t\tif ((key === 'name' || key == 'aliasName') && property.type && ts.isLiteralTypeNode(property.type)) {\n\t\t\t\t\t\tconst keyValue = property.type.literal.getText(sourceFile);\n\t\t\t\t\t\titemObject[key] = removeQuotations(keyValue);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvalue.push(itemObject);\n\t\t\t});\n\t\t\tinfo[name] = value;\n\t\t}\n\t});\n\tif (!info.selector) {\n\t\treturn;\n\t}\n\tregisterDirectiveCall(info);\n}\n\n/**\n * search for `ɵɵ0Directive.*0ɵɵ` type\n * \n * example:\n * ```ts\n * export type ɵɵ0IfDirective0ɵɵ = {\n * \tselector: '*if';\n * \tsuccessor: '*else',\n * \tinputs: [\n * \t\t{ name: 'ifCondition', aliasName: 'if' },\n * \t\t{ name: 'thenTemplateRef', aliasName: 'then' },\n * \t\t{ name: 'elseTemplateRef', aliasName: 'else' },\n * \t],\n * \toutputs: [],\n * };\n * ```\n * @param program a ts program \n * @returns a transformer factory of source file\n */\nexport function scanDirectivesTypeVisitor(sourceFile: ts.SourceFile): void {\n\tts.forEachChild(sourceFile, node => {\n\t\tif (ts.isTypeAliasDeclaration(node) && node.name.getText(sourceFile).endsWith('Directive0ɵɵ')) {\n\t\t\textractDirectives(node, sourceFile);\n\t\t}\n\t});\n}\n"]}