@stencil/angular-output-target 0.0.1-dev.11730928290.1699ee88 → 0.0.1-dev.11734586318.14947a27

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.
@@ -4,9 +4,10 @@ import { createComponentEventTypeImports, dashToPascalCase, formatToQuotedList }
4
4
  *
5
5
  * @param prop A ComponentCompilerEvent or ComponentCompilerProperty to turn into a property declaration.
6
6
  * @param type The name of the type (e.g. 'string')
7
+ * @param inlinePropertyAsSetter Inlines the entire property as an empty Setter, to aid Angulars Compilerp
7
8
  * @returns The property declaration as a string.
8
9
  */
9
- function createPropertyDeclaration(prop, type) {
10
+ function createPropertyDeclaration(prop, type, inlinePropertyAsSetter = false) {
10
11
  const comment = createDocComment(prop.docs);
11
12
  let eventName = prop.name;
12
13
  if (/[-/]/.test(prop.name)) {
@@ -14,8 +15,14 @@ function createPropertyDeclaration(prop, type) {
14
15
  // https://github.com/ionic-team/stencil-ds-output-targets/issues/212
15
16
  eventName = `'${prop.name}'`;
16
17
  }
17
- return `${comment.length > 0 ? ` ${comment}` : ''}
18
+ if (inlinePropertyAsSetter) {
19
+ return `${comment.length > 0 ? ` ${comment}` : ''}
20
+ set ${eventName}(_: ${type}) {};`;
21
+ }
22
+ else {
23
+ return `${comment.length > 0 ? ` ${comment}` : ''}
18
24
  ${eventName}: ${type};`;
25
+ }
19
26
  }
20
27
  /**
21
28
  * Creates an Angular component declaration from formatted Stencil compiler metadata.
@@ -55,8 +62,8 @@ export const createAngularComponentDefinition = (tagName, inputs, outputs, metho
55
62
  if (standalone && includeImportCustomElements) {
56
63
  standaloneOption = `\n standalone: true`;
57
64
  }
58
- const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`));
59
- const propertiesDeclarationText = ['protected el: HTMLElement;', ...propertyDeclarations].join('\n ');
65
+ const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`, true));
66
+ const propertiesDeclarationText = [`protected el: HTML${tagNameAsPascal}Element;`, ...propertyDeclarations].join('\n ');
60
67
  /**
61
68
  * Notes on the generated output:
62
69
  * - We disable @angular-eslint/no-inputs-metadata-property, so that
@@ -132,6 +139,10 @@ const formatOutputType = (componentClassName, event) => {
132
139
  return [p1, `I${componentClassName}${v.substring(1, v.length - 1)}`, p2].join('');
133
140
  }
134
141
  return [p1, dst, p2].join('');
142
+ })
143
+ // Capture all instances that contain sub types, e.g. `IMyComponent.SomeMoreComplexType.SubType`.
144
+ .replace(new RegExp(`^${src}(\.\\w+)+$`, 'g'), (type) => {
145
+ return `I${componentClassName}${src}.${type.split('.').slice(1).join('.')}`;
135
146
  }));
136
147
  }, event.complexType.original
137
148
  .replace(/\n/g, ' ')
@@ -43,10 +43,9 @@ function copyResources(config, resourcesFilesToCopy, directory) {
43
43
  throw new Error('stencil is not properly initialized at this step. Notify the developer');
44
44
  }
45
45
  const copyTasks = resourcesFilesToCopy.map((rf) => {
46
- const dest = path.resolve(directory, rf);
47
46
  return {
48
47
  src: path.join(__dirname, '../resources/control-value-accessors/', rf),
49
- dest: path.extname(dest) ? path.dirname(dest) : dest,
48
+ dest: path.join(directory, rf),
50
49
  keepDirStructure: false,
51
50
  warn: false,
52
51
  ignore: [],
package/dist/index.cjs.js CHANGED
@@ -149,9 +149,10 @@ const SLASH_REGEX = /\\/g;
149
149
  *
150
150
  * @param prop A ComponentCompilerEvent or ComponentCompilerProperty to turn into a property declaration.
151
151
  * @param type The name of the type (e.g. 'string')
152
+ * @param inlinePropertyAsSetter Inlines the entire property as an empty Setter, to aid Angulars Compilerp
152
153
  * @returns The property declaration as a string.
153
154
  */
154
- function createPropertyDeclaration(prop, type) {
155
+ function createPropertyDeclaration(prop, type, inlinePropertyAsSetter = false) {
155
156
  const comment = createDocComment(prop.docs);
156
157
  let eventName = prop.name;
157
158
  if (/[-/]/.test(prop.name)) {
@@ -159,8 +160,14 @@ function createPropertyDeclaration(prop, type) {
159
160
  // https://github.com/ionic-team/stencil-ds-output-targets/issues/212
160
161
  eventName = `'${prop.name}'`;
161
162
  }
162
- return `${comment.length > 0 ? ` ${comment}` : ''}
163
+ if (inlinePropertyAsSetter) {
164
+ return `${comment.length > 0 ? ` ${comment}` : ''}
165
+ set ${eventName}(_: ${type}) {};`;
166
+ }
167
+ else {
168
+ return `${comment.length > 0 ? ` ${comment}` : ''}
163
169
  ${eventName}: ${type};`;
170
+ }
164
171
  }
165
172
  /**
166
173
  * Creates an Angular component declaration from formatted Stencil compiler metadata.
@@ -200,8 +207,8 @@ const createAngularComponentDefinition = (tagName, inputs, outputs, methods, inc
200
207
  if (standalone && includeImportCustomElements) {
201
208
  standaloneOption = `\n standalone: true`;
202
209
  }
203
- const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`));
204
- const propertiesDeclarationText = ['protected el: HTMLElement;', ...propertyDeclarations].join('\n ');
210
+ const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`, true));
211
+ const propertiesDeclarationText = [`protected el: HTML${tagNameAsPascal}Element;`, ...propertyDeclarations].join('\n ');
205
212
  /**
206
213
  * Notes on the generated output:
207
214
  * - We disable @angular-eslint/no-inputs-metadata-property, so that
@@ -277,6 +284,10 @@ const formatOutputType = (componentClassName, event) => {
277
284
  return [p1, `I${componentClassName}${v.substring(1, v.length - 1)}`, p2].join('');
278
285
  }
279
286
  return [p1, dst, p2].join('');
287
+ })
288
+ // Capture all instances that contain sub types, e.g. `IMyComponent.SomeMoreComplexType.SubType`.
289
+ .replace(new RegExp(`^${src}(\.\\w+)+$`, 'g'), (type) => {
290
+ return `I${componentClassName}${src}.${type.split('.').slice(1).join('.')}`;
280
291
  }));
281
292
  }, event.complexType.original
282
293
  .replace(/\n/g, ' ')
@@ -385,10 +396,9 @@ function copyResources$1(config, resourcesFilesToCopy, directory) {
385
396
  throw new Error('stencil is not properly initialized at this step. Notify the developer');
386
397
  }
387
398
  const copyTasks = resourcesFilesToCopy.map((rf) => {
388
- const dest = path__default["default"].resolve(directory, rf);
389
399
  return {
390
400
  src: path__default["default"].join(__dirname, '../resources/control-value-accessors/', rf),
391
- dest: path__default["default"].extname(dest) ? path__default["default"].dirname(dest) : dest,
401
+ dest: path__default["default"].join(directory, rf),
392
402
  keepDirStructure: false,
393
403
  warn: false,
394
404
  ignore: [],
package/dist/index.js CHANGED
@@ -141,9 +141,10 @@ const SLASH_REGEX = /\\/g;
141
141
  *
142
142
  * @param prop A ComponentCompilerEvent or ComponentCompilerProperty to turn into a property declaration.
143
143
  * @param type The name of the type (e.g. 'string')
144
+ * @param inlinePropertyAsSetter Inlines the entire property as an empty Setter, to aid Angulars Compilerp
144
145
  * @returns The property declaration as a string.
145
146
  */
146
- function createPropertyDeclaration(prop, type) {
147
+ function createPropertyDeclaration(prop, type, inlinePropertyAsSetter = false) {
147
148
  const comment = createDocComment(prop.docs);
148
149
  let eventName = prop.name;
149
150
  if (/[-/]/.test(prop.name)) {
@@ -151,8 +152,14 @@ function createPropertyDeclaration(prop, type) {
151
152
  // https://github.com/ionic-team/stencil-ds-output-targets/issues/212
152
153
  eventName = `'${prop.name}'`;
153
154
  }
154
- return `${comment.length > 0 ? ` ${comment}` : ''}
155
+ if (inlinePropertyAsSetter) {
156
+ return `${comment.length > 0 ? ` ${comment}` : ''}
157
+ set ${eventName}(_: ${type}) {};`;
158
+ }
159
+ else {
160
+ return `${comment.length > 0 ? ` ${comment}` : ''}
155
161
  ${eventName}: ${type};`;
162
+ }
156
163
  }
157
164
  /**
158
165
  * Creates an Angular component declaration from formatted Stencil compiler metadata.
@@ -192,8 +199,8 @@ const createAngularComponentDefinition = (tagName, inputs, outputs, methods, inc
192
199
  if (standalone && includeImportCustomElements) {
193
200
  standaloneOption = `\n standalone: true`;
194
201
  }
195
- const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`));
196
- const propertiesDeclarationText = ['protected el: HTMLElement;', ...propertyDeclarations].join('\n ');
202
+ const propertyDeclarations = inlineComponentProps.map((m) => createPropertyDeclaration(m, `Components.${tagNameAsPascal}['${m.name}']`, true));
203
+ const propertiesDeclarationText = [`protected el: HTML${tagNameAsPascal}Element;`, ...propertyDeclarations].join('\n ');
197
204
  /**
198
205
  * Notes on the generated output:
199
206
  * - We disable @angular-eslint/no-inputs-metadata-property, so that
@@ -269,6 +276,10 @@ const formatOutputType = (componentClassName, event) => {
269
276
  return [p1, `I${componentClassName}${v.substring(1, v.length - 1)}`, p2].join('');
270
277
  }
271
278
  return [p1, dst, p2].join('');
279
+ })
280
+ // Capture all instances that contain sub types, e.g. `IMyComponent.SomeMoreComplexType.SubType`.
281
+ .replace(new RegExp(`^${src}(\.\\w+)+$`, 'g'), (type) => {
282
+ return `I${componentClassName}${src}.${type.split('.').slice(1).join('.')}`;
272
283
  }));
273
284
  }, event.complexType.original
274
285
  .replace(/\n/g, ' ')
@@ -377,10 +388,9 @@ function copyResources$1(config, resourcesFilesToCopy, directory) {
377
388
  throw new Error('stencil is not properly initialized at this step. Notify the developer');
378
389
  }
379
390
  const copyTasks = resourcesFilesToCopy.map((rf) => {
380
- const dest = path.resolve(directory, rf);
381
391
  return {
382
392
  src: path.join(__dirname, '../resources/control-value-accessors/', rf),
383
- dest: path.extname(dest) ? path.dirname(dest) : dest,
393
+ dest: path.join(directory, rf),
384
394
  keepDirStructure: false,
385
395
  warn: false,
386
396
  ignore: [],
package/package.json CHANGED
@@ -1,9 +1,16 @@
1
1
  {
2
2
  "name": "@stencil/angular-output-target",
3
- "version": "0.0.1-dev.11730928290.1699ee88",
3
+ "version": "0.0.1-dev.11734586318.14947a27",
4
4
  "description": "Angular output target for @stencil/core components.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.cjs.js"
12
+ }
13
+ },
7
14
  "types": "dist/index.d.ts",
8
15
  "files": [
9
16
  "dist/",
@@ -15,7 +22,7 @@
15
22
  },
16
23
  "scripts": {
17
24
  "prepublishOnly": "pnpm run build",
18
- "prebuild": "rimraf ./dist && pnpm run test",
25
+ "prebuild": "rimraf ./dist",
19
26
  "build": "tsc && pnpm run rollup",
20
27
  "dev": "run-p dev:*",
21
28
  "dev:build": "tsc --watch --preserveWatchOutput",
@@ -27,8 +34,8 @@
27
34
  "prettier.base": "prettier \"./({angular-component-lib,src,test,__tests__}/**/*.{ts,tsx,js,jsx})|*.{ts,tsx,js,jsx}\"",
28
35
  "prettier.dry-run": "pnpm run prettier.base --list-different",
29
36
  "release": "np",
30
- "test": "jest --passWithNoTests",
31
- "test.watch": "jest --watch"
37
+ "test": "vitest --run",
38
+ "test.watch": "vitest"
32
39
  },
33
40
  "repository": {
34
41
  "type": "git",
@@ -44,29 +51,14 @@
44
51
  "@angular/core": "8.2.14",
45
52
  "@angular/forms": "8.2.14",
46
53
  "@types/node": "^18.0.0",
47
- "jest": "^27.0.0",
48
- "jest-environment-jsdom": "^27.0.0",
49
54
  "npm-run-all2": "^6.2.4",
50
55
  "rimraf": "^5.0.0",
51
56
  "rollup": "^2.23.1",
52
- "typescript": "~5.6.0"
57
+ "typescript": "~5.7.0",
58
+ "vitest": "^2.1.4"
53
59
  },
54
60
  "peerDependencies": {
55
61
  "@stencil/core": ">=2.0.0 || >=3 || >= 4.0.0-beta.0 || >= 4.0.0"
56
62
  },
57
- "jest": {
58
- "transform": {
59
- "^.+\\.(js|ts|tsx)$": "<rootDir>/test/jest.preprocessor.js"
60
- },
61
- "testRegex": "(\\.(test|spec))\\.(ts?|tsx?|jsx?)$",
62
- "moduleFileExtensions": [
63
- "ts",
64
- "tsx",
65
- "js",
66
- "json",
67
- "jsx"
68
- ],
69
- "testURL": "http://localhost"
70
- },
71
- "gitHead": "699ee88cb3dc0726b12a985c49a3875b9eb7745a"
63
+ "gitHead": "4947a276a55f76b0d843b15a42c3e7ca9a6d00e4"
72
64
  }