@servicenow/sdk-build-core 2.2.9 → 3.0.0

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 (71) hide show
  1. package/dist/GUID.js +2 -5
  2. package/dist/GUID.js.map +1 -1
  3. package/dist/IncludePaths.d.ts +25 -0
  4. package/dist/IncludePaths.js +97 -0
  5. package/dist/IncludePaths.js.map +1 -0
  6. package/dist/Keys.d.ts +1 -0
  7. package/dist/Keys.js +3 -0
  8. package/dist/Keys.js.map +1 -1
  9. package/dist/XML.d.ts +7 -0
  10. package/dist/XML.js +19 -2
  11. package/dist/XML.js.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +1 -1
  14. package/dist/plugins/Context.d.ts +12 -5
  15. package/dist/plugins/behaviors/Composer.d.ts +2 -1
  16. package/dist/plugins/behaviors/Composer.js.map +1 -1
  17. package/dist/plugins/behaviors/Serializer.d.ts +3 -2
  18. package/dist/plugins/behaviors/extractors/Data.d.ts +5 -1
  19. package/dist/plugins/behaviors/extractors/Data.js +11 -1
  20. package/dist/plugins/behaviors/extractors/Data.js.map +1 -1
  21. package/dist/plugins/index.d.ts +1 -1
  22. package/dist/plugins/util/CallExpression.js +15 -1
  23. package/dist/plugins/util/CallExpression.js.map +1 -1
  24. package/dist/plugins/util/CodeTransformation.d.ts +19 -7
  25. package/dist/plugins/util/CodeTransformation.js +89 -44
  26. package/dist/plugins/util/CodeTransformation.js.map +1 -1
  27. package/dist/plugins/util/index.d.ts +0 -1
  28. package/dist/plugins/util/index.js +0 -1
  29. package/dist/plugins/util/index.js.map +1 -1
  30. package/dist/util/Debug.d.ts +1 -5
  31. package/dist/util/Debug.js +0 -16
  32. package/dist/util/Debug.js.map +1 -1
  33. package/dist/util/RuntimeTableSchema.d.ts +5 -0
  34. package/dist/util/RuntimeTableSchema.js +58 -0
  35. package/dist/util/RuntimeTableSchema.js.map +1 -0
  36. package/dist/util/Util.d.ts +0 -4
  37. package/dist/util/Util.js +0 -14
  38. package/dist/util/Util.js.map +1 -1
  39. package/dist/util/index.d.ts +1 -1
  40. package/dist/util/index.js +1 -1
  41. package/dist/util/index.js.map +1 -1
  42. package/package.json +3 -3
  43. package/src/GUID.ts +1 -1
  44. package/src/IncludePaths.ts +122 -0
  45. package/src/Keys.ts +4 -0
  46. package/src/XML.ts +22 -2
  47. package/src/index.ts +1 -1
  48. package/src/plugins/Context.ts +12 -5
  49. package/src/plugins/behaviors/Composer.ts +2 -1
  50. package/src/plugins/behaviors/Serializer.ts +3 -2
  51. package/src/plugins/behaviors/extractors/Data.ts +11 -1
  52. package/src/plugins/index.ts +1 -1
  53. package/src/plugins/util/CallExpression.ts +24 -1
  54. package/src/plugins/util/CodeTransformation.ts +109 -54
  55. package/src/plugins/util/index.ts +0 -1
  56. package/src/util/Debug.ts +1 -20
  57. package/src/util/RuntimeTableSchema.ts +44 -0
  58. package/src/util/Util.ts +0 -21
  59. package/src/util/index.ts +1 -1
  60. package/dist/BuildOptions.d.ts +0 -46
  61. package/dist/BuildOptions.js +0 -45
  62. package/dist/BuildOptions.js.map +0 -1
  63. package/dist/plugins/util/ConfigurationFunction.d.ts +0 -105
  64. package/dist/plugins/util/ConfigurationFunction.js +0 -377
  65. package/dist/plugins/util/ConfigurationFunction.js.map +0 -1
  66. package/dist/util/XMLJsonBuilder.d.ts +0 -18
  67. package/dist/util/XMLJsonBuilder.js +0 -59
  68. package/dist/util/XMLJsonBuilder.js.map +0 -1
  69. package/src/BuildOptions.ts +0 -26
  70. package/src/plugins/util/ConfigurationFunction.ts +0 -468
  71. package/src/util/XMLJsonBuilder.ts +0 -64
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigurationFunction.js","sourceRoot":"","sources":["../../../src/plugins/util/ConfigurationFunction.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export declare class XMLJsonBuilder {
2
- private rootXmlElement;
3
- constructor(version: string);
4
- createRoot(element: string, text?: string, attrs?: Record<string, string | number | boolean>): XMLJsonElement;
5
- buildJsonObj(): any;
6
- }
7
- export declare class XMLJsonElement {
8
- private element;
9
- private text;
10
- private attrs;
11
- private isCDATA;
12
- private xmlEleMap;
13
- constructor(element: string, text?: string, attrs?: Record<string, string | number | boolean>, isCDATA?: boolean);
14
- addJsonObj(element: string, text?: string, attrs?: Record<string, string | number | boolean>, isCDATA?: boolean): XMLJsonElement;
15
- getData(): {
16
- [x: string]: any;
17
- };
18
- }
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.XMLJsonElement = exports.XMLJsonBuilder = void 0;
4
- class XMLJsonBuilder {
5
- rootXmlElement;
6
- constructor(version) {
7
- this.rootXmlElement = new XMLJsonElement('_root');
8
- this.rootXmlElement.addJsonObj('?xml', undefined, { version });
9
- }
10
- createRoot(element, text = '', attrs = {}) {
11
- return this.rootXmlElement.addJsonObj(element, text, attrs);
12
- }
13
- buildJsonObj() {
14
- const { _root: { '#text': _rootText, ...jsonObj }, } = this.rootXmlElement.getData();
15
- return jsonObj;
16
- }
17
- }
18
- exports.XMLJsonBuilder = XMLJsonBuilder;
19
- class XMLJsonElement {
20
- element;
21
- text;
22
- attrs;
23
- isCDATA;
24
- xmlEleMap = new Map();
25
- constructor(element, text = '', attrs = {}, isCDATA = false) {
26
- this.element = element;
27
- this.text = text;
28
- this.attrs = attrs;
29
- this.isCDATA = isCDATA;
30
- }
31
- addJsonObj(element, text = '', attrs = {}, isCDATA = false) {
32
- const xmlJsonObj = new XMLJsonElement(element, text, attrs, isCDATA);
33
- if (!this.xmlEleMap.has(element)) {
34
- this.xmlEleMap.set(element, []);
35
- }
36
- this.xmlEleMap.get(element).push(xmlJsonObj);
37
- return xmlJsonObj;
38
- }
39
- getData() {
40
- const additionalElements = [];
41
- this.xmlEleMap.forEach((value, key) => {
42
- if (value.length === 1) {
43
- additionalElements.push({ ...value[0].getData() });
44
- return;
45
- }
46
- additionalElements.push({ [key]: value.map((value) => value.getData()[key]) });
47
- });
48
- const additionalObj = additionalElements.reduce((acc, ele) => ({ ...acc, ...ele }), {});
49
- return {
50
- [this.element]: {
51
- ...(this.isCDATA ? { __cdata: this.text } : { '#text': this.text }),
52
- ...Object.fromEntries(Object.entries(this.attrs).map(([k, v]) => [`@_${k}`, v])),
53
- ...additionalObj,
54
- },
55
- };
56
- }
57
- }
58
- exports.XMLJsonElement = XMLJsonElement;
59
- //# sourceMappingURL=XMLJsonBuilder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XMLJsonBuilder.js","sourceRoot":"","sources":["../../src/util/XMLJsonBuilder.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IACf,cAAc,CAAgB;IACtC,YAAY,OAAe;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE,QAAmD,EAAE;QAChG,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAC/D,CAAC;IAED,YAAY;QACR,MAAM,EACF,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,GAC5C,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAA;QACjC,OAAO,OAAO,CAAA;IAClB,CAAC;CACJ;AAjBD,wCAiBC;AAED,MAAa,cAAc;IAIX;IACA;IACA;IACA;IANJ,SAAS,GAAkC,IAAI,GAAG,EAAE,CAAA;IAE5D,YACY,OAAe,EACf,OAAe,EAAE,EACjB,QAAmD,EAAE,EACrD,UAAmB,KAAK;QAHxB,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAgD;QACrD,YAAO,GAAP,OAAO,CAAiB;IACjC,CAAC;IAEJ,UAAU,CACN,OAAe,EACf,OAAe,EAAE,EACjB,QAAmD,EAAE,EACrD,UAAmB,KAAK;QAExB,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7C,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,OAAO;QACH,MAAM,kBAAkB,GAAQ,EAAE,CAAA;QAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACnD,OAAM;YACV,CAAC;YACD,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;QAClF,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QAEvF,OAAO;YACH,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChF,GAAG,aAAa;aACnB;SACJ,CAAA;IACL,CAAC;CACJ;AA5CD,wCA4CC"}
@@ -1,26 +0,0 @@
1
- import { path } from '@servicenow/sdk-project'
2
- import * as z from 'zod'
3
-
4
- const BuildOptionsSchema = z
5
- .object({
6
- mode: z.string(),
7
- release: z.string().default('default'),
8
- })
9
- .and(
10
- z
11
- .object({
12
- mode: z.literal('serialize'),
13
- compilerOptions: z.record(z.string(), z.unknown()).optional(),
14
- })
15
- .or(
16
- z.object({
17
- mode: z.literal('transform'),
18
- clean: z.boolean().default(false),
19
- transformDirectory: z.string().default(path.resolve(process.cwd(), 'incoming')),
20
- })
21
- )
22
- )
23
-
24
- export type BuildOptionsInput = z.input<typeof BuildOptionsSchema>
25
- export type BuildOptions = z.output<typeof BuildOptionsSchema>
26
- export const parseBuildOptions = BuildOptionsSchema.parse
@@ -1,468 +0,0 @@
1
- import { Logger, ts } from '@servicenow/sdk-project'
2
- import { Context } from '../Context'
3
- import { EntityData, ObjectData } from '../behaviors'
4
- import { getCallExpressionName } from './CallExpression'
5
-
6
- export type ConfigEntity = {
7
- inputObject: InputObject
8
- configEntries: ConfigEntries
9
- }
10
-
11
- export type InputObject = {
12
- $id: string | number
13
- [name: string]: any
14
- }
15
-
16
- export type ConfigEntries = {
17
- [index: `${number}`]: ConfigEntry
18
- }
19
-
20
- export type ConfigEntry = {
21
- name: string
22
- info: { [name: string]: any }
23
- }
24
-
25
- export type ComposerClass = {
26
- prototype: any
27
- [key: string]: any
28
- }
29
-
30
- // TODO: Just created this to avoid refactoring all of the ATF stuff. Should be removed
31
- // and the EntityData class should be used instead, if possible.
32
- export class ConfigurationFunctionEntityData extends EntityData {
33
- constructor(
34
- private readonly config: ConfigEntity,
35
- node: ts.CallExpression
36
- ) {
37
- super(
38
- 'test',
39
- 'NO_GUID_GENERATED', // TODO: Generate GUID?
40
- new ObjectData({}, node),
41
- node
42
- )
43
- }
44
-
45
- override getValue() {
46
- return this.config
47
- }
48
- }
49
-
50
- /**
51
- * This is an extractor used to extract configuration functions.
52
- * This is an example of a configuration function:
53
- * ```typescript
54
- * import { table } from 'place'
55
- * PlaceHolderFunction('Unique ID', (param) => {
56
- * param.foo({arg1: 'hey', arg2: table});
57
- * const output = param.bar({placeholder: 'value'});
58
- * param.baz({arg1: output.value1})
59
- * })
60
- * ```
61
- */
62
- export class ConfigurationFunctionExtractor {
63
- private rootNode: ts.CallExpression
64
- private context: Context
65
- private composerClass: ComposerClass
66
- private identifiers: (ts.Identifier | null)[]
67
-
68
- /**
69
- *
70
- * @param rootNode rootNode of AST where extraction begins
71
- * @param context context from the plugin this is called in
72
- * @param composerClass A class whose prototype will be used to validate the allowed functions within the configuration function
73
- */
74
- constructor(rootNode: ts.CallExpression, context: Context, composerClass: ComposerClass) {
75
- this.rootNode = rootNode
76
- this.context = context
77
- this.composerClass = composerClass
78
- this.identifiers = []
79
- }
80
-
81
- /**
82
- * Grabs the property access expression chain of a call expression, and protects against accidentally grabbing property access expressions in arguments of the call expression
83
- */
84
- private getPropChain(ce: ts.CallExpression): ts.PropertyAccessExpression[] {
85
- // Do this to ensure we are only considering property access expressions that are apart of the chain and not potentially in the arguments of the function
86
- const props = [ce.getFirstDescendantByKindOrThrow(ts.SyntaxKind.PropertyAccessExpression)]
87
- const childProps = (props[0] as ts.PropertyAccessExpression).getDescendantsOfKind(
88
- ts.SyntaxKind.PropertyAccessExpression
89
- )
90
- if (childProps.length > 0) {
91
- props.push(...childProps)
92
- }
93
- return props
94
- }
95
-
96
- /**
97
- * Returns the first element of a property access chain
98
- * v
99
- * a.b.c.d({})
100
- */
101
- private getFirstProp(ce: ts.CallExpression): ts.Identifier {
102
- // Need to use this instead of just grabbing descendents cause the arguments of the call expression can also potentially have property access expressions which we don't want to consider
103
- const props = this.getPropChain(ce)
104
- if (props.length === 1) {
105
- const ids = props[0]?.getChildrenOfKind(ts.SyntaxKind.Identifier) as ts.Identifier[]
106
- return ids[0] as ts.Identifier
107
- }
108
- const lastProp = props[props.length - 1] as ts.PropertyAccessExpression
109
- return lastProp.getChildrenOfKind(ts.SyntaxKind.Identifier)[0] as ts.Identifier
110
- }
111
-
112
- /**
113
- * Returns the last element of a property access chain
114
- *
115
- * v
116
- * a.b.c.d({})
117
- */
118
- private getLastProp(ce: ts.CallExpression): ts.Identifier {
119
- // Do not need special chain handling here like in getFirstProp cause we are always grabbing the property access expression from the top level regardless of chain length
120
- const props = ce.getFirstDescendantByKindOrThrow(ts.SyntaxKind.PropertyAccessExpression)
121
- const ids = props.getChildrenOfKind(ts.SyntaxKind.Identifier) as ts.Identifier[]
122
- return ids[ids.length - 1] as ts.Identifier // Identifier is either the only one present or is the last of 2 so this should fetch it in either scenario
123
- }
124
-
125
- /**
126
- * Validates that a call expression is valid. Will error if the call expression is inappropriately constructed for the configuration function
127
- * @param ce
128
- * @param parameterName
129
- */
130
- private isValidCallExpression(ce: ts.CallExpression, paramId: ts.Identifier) {
131
- if (!paramId) {
132
- throw Error('No parameter provided to configuration function')
133
- }
134
-
135
- // Ensure the line of the function call starts with the argument of the configuration function
136
- const firstId = this.getFirstProp(ce)
137
-
138
- if (firstId?.getText() !== paramId?.getText()) {
139
- throw Error(
140
- `Call expression does not begin with "${paramId.getText()}", instead began with "${firstId.getText()}"`
141
- )
142
- }
143
-
144
- // Verify that the function call is actually a valid function call based on the composer class this will be used with
145
- const lastId = this.getLastProp(ce)
146
- const functionName = lastId.getText()
147
- const nameIsValid = Object.getOwnPropertyNames(this.composerClass.prototype).some((funcName) => {
148
- return funcName != 'constructor' && functionName.startsWith(funcName)
149
- })
150
- if (!nameIsValid) {
151
- throw Error(`Call expression function does not exist on the object ${paramId.getText()}`)
152
- }
153
-
154
- // Verify that call expression has the expected number of arguments
155
- const funcArgs = ce.getFirstDescendantByKind(ts.SyntaxKind.SyntaxList)?.getChildren() as ts.Node[]
156
- if (!funcArgs) {
157
- throw Error('Call expression had no arguments at all')
158
- }
159
-
160
- if (funcArgs.length != 1) {
161
- throw Error('Call expressions only support a single argument')
162
- }
163
-
164
- if ((funcArgs[0] as ts.Node).getKind() != ts.SyntaxKind.ObjectLiteralExpression) {
165
- throw Error('Call expression must have an object as its argument')
166
- }
167
- }
168
-
169
- /**
170
- * Returns the step number of the step containing a identifier which matches the type of the queried identfier
171
- *
172
- * If it cannot find the identifier, it returns -1
173
- * @param identifier
174
- * @param data
175
- */
176
- private findReferencedIdentifier(identifier: ts.Identifier) {
177
- const idName = identifier.getSymbol()?.getName()
178
- // Identifier index lines up with step index, removed from step object so identifiers are not returned in extracted object
179
- for (let i = 0; i < this.identifiers.length; i++) {
180
- const identifier = this.identifiers[i]
181
- // Maybe there's another way to more accurately identify but this should be fine?
182
- const name = identifier?.getSymbol()?.getName()
183
- if (name && idName && name == idName) {
184
- return i
185
- }
186
- }
187
- return -1
188
- }
189
-
190
- private getRootIdentifier(prop: ts.PropertyAccessExpression): ts.Identifier {
191
- const children = prop.getChildrenOfKind(ts.SyntaxKind.PropertyAccessExpression)
192
- if (children.length == 0) {
193
- const id = prop.getFirstChildByKind(ts.SyntaxKind.Identifier)
194
- if (!id) {
195
- throw Error('Could not find identifier in property access expression')
196
- }
197
- return id
198
- }
199
- return this.getRootIdentifier(children[0] as ts.PropertyAccessExpression)
200
- }
201
-
202
- private parseValue(valueNode: ts.Node): any {
203
- if (valueNode.getKind() == ts.SyntaxKind.ArrayLiteralExpression) {
204
- const values: any[] = []
205
- const syntaxList = valueNode.getFirstDescendantByKind(ts.SyntaxKind.SyntaxList)
206
- if (!syntaxList) {
207
- return
208
- }
209
- const children = syntaxList.getChildren()
210
-
211
- for (const child of children) {
212
- if (child.getKind() == ts.SyntaxKind.CommaToken) {
213
- continue
214
- }
215
- const value = this.parseValue(child)
216
- values.push(value)
217
- }
218
- return values
219
- }
220
-
221
- if (valueNode.getKind() == ts.SyntaxKind.ObjectLiteralExpression) {
222
- const objNode = valueNode as ts.ObjectLiteralExpression
223
- return this.objNodeToJSON(objNode)
224
- }
225
-
226
- if (valueNode.getKind() == ts.SyntaxKind.PropertyAccessExpression) {
227
- const propNode = valueNode as ts.PropertyAccessExpression
228
- const identifier = this.getRootIdentifier(propNode)
229
- const refIdentifierIndex = this.findReferencedIdentifier(identifier)
230
- if (refIdentifierIndex == -1) {
231
- throw Error('Step corresponding to property access expression could not be found')
232
- }
233
-
234
- const parsedValue = valueNode.getText().split('.')
235
- // Replace it just with a string here. Parsing into a real value will happen in the composer
236
- return { __references: refIdentifierIndex, __value: parsedValue[parsedValue.length - 1] }
237
- }
238
-
239
- if (valueNode.getKind() == ts.SyntaxKind.TemplateExpression) {
240
- // console.info(`literal: ${(valueNode as ts.TemplateExpression).getVal}`)
241
- const templateNode = valueNode as ts.TemplateExpression
242
- const templateValue = [templateNode.getHead().getLiteralText()]
243
- templateNode.getTemplateSpans().forEach((s) => {
244
- templateValue.push(this.parseValue(s.getExpression()))
245
- templateValue.push(s.getLiteral().getLiteralText())
246
- })
247
- return { __template: templateValue }
248
- }
249
-
250
- // A variety of Identifiers. Will be handled here
251
- // TODO: This is swallowing diagnostics and not handling the case where no data was extracted
252
- return this.context.extractAst(valueNode)['data']?.getValue()
253
- }
254
-
255
- private getKVPair(prop: ts.PropertyAssignment) {
256
- const props = prop.getChildren()
257
- const keyNode = props[0] as ts.Node
258
- const valueNode = props[2] as ts.Node
259
-
260
- const key = (keyNode as any).getLiteralValue ? (keyNode as any).getLiteralValue() : keyNode.getText()
261
- const value = this.parseValue(valueNode)
262
-
263
- if (typeof key !== 'undefined' && typeof value !== 'undefined') {
264
- return { key, value }
265
- }
266
- return { key: undefined, value: undefined }
267
- }
268
-
269
- private objNodeToJSON(obj: ts.ObjectLiteralExpression | undefined): { [name: string]: any } {
270
- if (!obj) {
271
- throw Error('objNodeToJSON received an undefined object node')
272
- }
273
- const syntaxList = obj.getFirstDescendantByKind(ts.SyntaxKind.SyntaxList)
274
-
275
- if (!syntaxList) {
276
- throw Error('objNodeToJSON could not find a syntax list in the ObjectLiteralExpression')
277
- }
278
-
279
- const json = {}
280
- syntaxList.getChildrenOfKind(ts.SyntaxKind.PropertyAssignment).forEach((arg) => {
281
- const propArg = arg
282
- const { key, value } = this.getKVPair(propArg)
283
- // TODO: What if the value is actually undefined?
284
- if (key !== undefined && value !== undefined) {
285
- json[key] = value
286
- }
287
- })
288
- return json
289
- }
290
-
291
- private getName(node: ts.CallExpression) {
292
- // This may not be robust but should be a good enough
293
- const lastProp = this.getLastProp(node)
294
- return lastProp.getText()
295
- }
296
-
297
- private getConfigFunctionComponents(kind: string, node: ts.CallExpression) {
298
- kind
299
- const configArgs = node.getArguments()
300
- if (configArgs.length != 2) {
301
- throw Error('The plugin must have exactly 2 arguments')
302
- }
303
-
304
- if ((configArgs[0] as any).getKind() != ts.SyntaxKind.ObjectLiteralExpression) {
305
- throw Error("The plugin's first argument was not an object")
306
- }
307
-
308
- if (
309
- (configArgs[1] as any).getKind() != ts.SyntaxKind.ArrowFunction &&
310
- (configArgs[1] as any).getKind() != ts.SyntaxKind.FunctionExpression
311
- ) {
312
- throw Error("The plugin's second argument was not a function")
313
- }
314
-
315
- const objectArg = configArgs[0] as ts.ObjectLiteralExpression
316
- const configFunction = configArgs[1] as ts.ArrowFunction | ts.FunctionExpression
317
-
318
- // TODO: This is swallowing diagnostics and not handling the case where no data was extracted
319
- const objectArgValue = this.context.extractAst(objectArg!)['data']?.getValue()
320
-
321
- if (!('$id' in objectArgValue)) {
322
- throw Error('No $id defined in first argument')
323
- }
324
-
325
- const parameters = configFunction.getParameters()
326
- // Checking the type is parameter is probably redundant but can not hurt
327
- if (parameters.length != 1 || !parameters[0] || parameters[0].getKind() != ts.SyntaxKind.Parameter) {
328
- throw Error('Configuration function must have an parameter as its only argument')
329
- }
330
-
331
- const paramId = parameters[0].getChildrenOfKind(ts.SyntaxKind.Identifier)[0] as ts.Identifier
332
- const block = configFunction.getFirstChildByKind(ts.SyntaxKind.Block)
333
- if (!block) {
334
- throw Error(`Failed to find block in configuration function`)
335
- }
336
-
337
- const syntaxList = block.getFirstChildByKind(ts.SyntaxKind.SyntaxList)
338
- if (!syntaxList) {
339
- throw Error(`Failed to find syntax list in configuration function`)
340
- }
341
- return { paramId, syntaxList, objectArgValue }
342
- }
343
-
344
- private extractCallExpression(node: ts.Node, paramId: ts.Identifier) {
345
- const callExpressions = node.getDescendantsOfKind(ts.SyntaxKind.CallExpression)
346
-
347
- if (callExpressions.length == 0) {
348
- throw Error(`Expression statement did not have any call expression`)
349
- }
350
-
351
- if (callExpressions.length > 1) {
352
- throw Error(`Found more than one call expression inside of an expression statement`)
353
- }
354
-
355
- const callExpression = callExpressions[0] as ts.CallExpression
356
- this.isValidCallExpression(callExpression, paramId)
357
- return callExpression
358
- }
359
-
360
- extractConfigFunction(
361
- kind: string, // Name of function for now
362
- logger: Logger
363
- ): EntityData | undefined {
364
- try {
365
- return this.extractConfigFunctionUnsafe(kind, logger)
366
- } catch (e) {
367
- logger.error('Could not extract configuration function: ', e)
368
- // swallows error, maybe fully re-echo but probably should just swallow silently to behave as expected
369
- return undefined
370
- }
371
- }
372
-
373
- /**
374
- * Returns a single entity of the kind specified which contains all data of nodes within the configuration function
375
- *
376
- * Will attempt to generalize this for use by flow team
377
- * @param kind
378
- * @param node
379
- * @param context
380
- * @returns
381
- */
382
- extractConfigFunctionUnsafe(
383
- kind: string, // Name of function for now,
384
- logger: Logger
385
- ): EntityData | undefined {
386
- // If this node is not the correct kind, return undefined. Some other extractor will handle it
387
- const name = getCallExpressionName(this.rootNode).toLowerCase()
388
- if (name !== kind) {
389
- return undefined
390
- }
391
-
392
- // Below here we assume anything that makes it this far is being extracted by the right type of extractor so failing to get any other part will result in an error stopping compilation instead
393
- const { paramId, syntaxList, objectArgValue } = this.getConfigFunctionComponents(kind, this.rootNode)
394
- const config: ConfigEntity = { inputObject: objectArgValue, configEntries: {} }
395
- const data = config.configEntries
396
- let stepNumber = 0
397
- syntaxList.getChildren().forEach((statement) => {
398
- try {
399
- switch (statement.getKind()) {
400
- case ts.SyntaxKind.ExpressionStatement: {
401
- /**
402
- * (param) => {
403
- * param.foo({arg: 'value'}) <- Expression statement
404
- * }
405
- */
406
- // This formatting of casting is used throughout the class. Try to keep casting close to where the value is determined and then save it to a cast variable and use
407
- // that below. This prevents accidentally using a variable as multiple different types by forgetting to cast and also keeps casting near where type is determined
408
- // so its more clear why it is being cast
409
- const ce = this.extractCallExpression(statement, paramId)
410
- data[stepNumber++] = {
411
- name: this.getName(ce),
412
- info: this.objNodeToJSON(
413
- ce.getFirstDescendantByKind(ts.SyntaxKind.ObjectLiteralExpression)
414
- ),
415
- }
416
- this.identifiers.push(null)
417
- break
418
- }
419
- case ts.SyntaxKind.VariableStatement: {
420
- /**
421
- * (param) => {
422
- * const output = param.foo({arg: 'value'}) <- Variable statement
423
- * }
424
- */
425
- const ce = this.extractCallExpression(statement, paramId)
426
- const variableDeclaration = statement.getFirstDescendantByKind(
427
- ts.SyntaxKind.VariableDeclaration
428
- )
429
-
430
- if (!variableDeclaration) {
431
- throw Error('Could not find variable declaration in variable statement')
432
- }
433
-
434
- const assignment = variableDeclaration.getChildren() // Format: identifier, =, value
435
- const identifier = assignment[0] as ts.Identifier
436
- const value = assignment[2] as ts.CallExpression // Already been validated above to be a valid call expression
437
-
438
- data[stepNumber++] = {
439
- name: this.getName(ce),
440
- info: this.objNodeToJSON(
441
- value.getFirstDescendantByKind(ts.SyntaxKind.ObjectLiteralExpression)
442
- ),
443
- }
444
- this.identifiers.push(identifier)
445
- break
446
- }
447
- case ts.SyntaxKind.MultiLineCommentTrivia:
448
- /** This is a multiline comment */
449
- break
450
- case ts.SyntaxKind.SingleLineCommentTrivia:
451
- // This is a single line comment
452
- break
453
- default:
454
- throw Error(
455
- `Found an invalid node in the configuration function block, found: ${
456
- statement?.getKindName() ? statement.getKindName() : 'Kind name undefined'
457
- }`
458
- )
459
- }
460
- } catch (e) {
461
- // Provides easy context w/o having to worry about having blah.getText() in all errors
462
- logger.error(`Encountered an error while parsing statement: ${statement.getText()}`)
463
- throw e
464
- }
465
- })
466
- return new ConfigurationFunctionEntityData(config, this.rootNode)
467
- }
468
- }
@@ -1,64 +0,0 @@
1
- export class XMLJsonBuilder {
2
- private rootXmlElement: XMLJsonElement
3
- constructor(version: string) {
4
- this.rootXmlElement = new XMLJsonElement('_root')
5
- this.rootXmlElement.addJsonObj('?xml', undefined, { version })
6
- }
7
-
8
- createRoot(element: string, text: string = '', attrs: Record<string, string | number | boolean> = {}) {
9
- return this.rootXmlElement.addJsonObj(element, text, attrs)
10
- }
11
-
12
- buildJsonObj() {
13
- const {
14
- _root: { '#text': _rootText, ...jsonObj },
15
- } = this.rootXmlElement.getData()
16
- return jsonObj
17
- }
18
- }
19
-
20
- export class XMLJsonElement {
21
- private xmlEleMap: Map<string, XMLJsonElement[]> = new Map()
22
-
23
- constructor(
24
- private element: string,
25
- private text: string = '',
26
- private attrs: Record<string, string | number | boolean> = {},
27
- private isCDATA: boolean = false
28
- ) {}
29
-
30
- addJsonObj(
31
- element: string,
32
- text: string = '',
33
- attrs: Record<string, string | number | boolean> = {},
34
- isCDATA: boolean = false
35
- ) {
36
- const xmlJsonObj = new XMLJsonElement(element, text, attrs, isCDATA)
37
- if (!this.xmlEleMap.has(element)) {
38
- this.xmlEleMap.set(element, [])
39
- }
40
- this.xmlEleMap.get(element)!.push(xmlJsonObj)
41
- return xmlJsonObj
42
- }
43
-
44
- getData() {
45
- const additionalElements: any = []
46
- this.xmlEleMap.forEach((value, key) => {
47
- if (value.length === 1) {
48
- additionalElements.push({ ...value[0]!.getData() })
49
- return
50
- }
51
- additionalElements.push({ [key]: value.map((value) => value.getData()[key]) })
52
- })
53
-
54
- const additionalObj = additionalElements.reduce((acc, ele) => ({ ...acc, ...ele }), {})
55
-
56
- return {
57
- [this.element]: {
58
- ...(this.isCDATA ? { __cdata: this.text } : { '#text': this.text }),
59
- ...Object.fromEntries(Object.entries(this.attrs).map(([k, v]) => [`@_${k}`, v])),
60
- ...additionalObj,
61
- },
62
- }
63
- }
64
- }