@servicenow/sdk-build-core 3.0.3 → 4.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 (252) hide show
  1. package/dist/app.d.ts +25 -0
  2. package/dist/app.js +8 -0
  3. package/dist/app.js.map +1 -0
  4. package/dist/compiler.d.ts +60 -0
  5. package/dist/compiler.js +320 -0
  6. package/dist/compiler.js.map +1 -0
  7. package/dist/compression.d.ts +7 -0
  8. package/dist/compression.js +79 -0
  9. package/dist/compression.js.map +1 -0
  10. package/dist/crypto.d.ts +1 -0
  11. package/dist/crypto.js +9 -0
  12. package/dist/crypto.js.map +1 -0
  13. package/dist/diagnostic.d.ts +41 -0
  14. package/dist/diagnostic.js +130 -0
  15. package/dist/diagnostic.js.map +1 -0
  16. package/dist/{plugins/Diagnostic.d.ts → fluent-diagnostic.d.ts} +3 -2
  17. package/dist/fluent-diagnostic.js +23 -0
  18. package/dist/fluent-diagnostic.js.map +1 -0
  19. package/dist/fluent-directive.d.ts +8 -0
  20. package/dist/fluent-directive.js +54 -0
  21. package/dist/fluent-directive.js.map +1 -0
  22. package/dist/fluent-file.d.ts +5 -0
  23. package/dist/fluent-file.js +15 -0
  24. package/dist/fluent-file.js.map +1 -0
  25. package/dist/formatter.d.ts +11 -0
  26. package/dist/formatter.js +77 -0
  27. package/dist/formatter.js.map +1 -0
  28. package/dist/fs.d.ts +174 -0
  29. package/dist/fs.js +313 -0
  30. package/dist/fs.js.map +1 -0
  31. package/dist/guid.d.ts +2 -0
  32. package/dist/{GUID.js → guid.js} +3 -6
  33. package/dist/guid.js.map +1 -0
  34. package/dist/index.d.ts +19 -5
  35. package/dist/index.js +19 -5
  36. package/dist/index.js.map +1 -1
  37. package/dist/json.d.ts +5 -0
  38. package/dist/json.js +43 -0
  39. package/dist/json.js.map +1 -0
  40. package/dist/keys-registry.d.ts +64 -0
  41. package/dist/keys-registry.js +339 -0
  42. package/dist/keys-registry.js.map +1 -0
  43. package/dist/logger.d.ts +8 -0
  44. package/dist/logger.js +17 -0
  45. package/dist/logger.js.map +1 -0
  46. package/dist/now-config.d.ts +348 -0
  47. package/dist/now-config.js +283 -0
  48. package/dist/now-config.js.map +1 -0
  49. package/dist/path.d.ts +3 -0
  50. package/dist/path.js +12 -0
  51. package/dist/path.js.map +1 -0
  52. package/dist/plugins/cache.d.ts +20 -0
  53. package/dist/plugins/cache.js +46 -0
  54. package/dist/plugins/cache.js.map +1 -0
  55. package/dist/plugins/context.d.ts +85 -0
  56. package/dist/plugins/{Context.js → context.js} +1 -1
  57. package/dist/plugins/context.js.map +1 -0
  58. package/dist/plugins/database.d.ts +27 -0
  59. package/dist/plugins/database.js +102 -0
  60. package/dist/plugins/database.js.map +1 -0
  61. package/dist/plugins/file.d.ts +10 -0
  62. package/dist/plugins/{behaviors/Arranger.js → file.js} +1 -1
  63. package/dist/plugins/file.js.map +1 -0
  64. package/dist/plugins/index.d.ts +9 -5
  65. package/dist/plugins/index.js +9 -6
  66. package/dist/plugins/index.js.map +1 -1
  67. package/dist/plugins/plugin.d.ts +478 -0
  68. package/dist/plugins/plugin.js +533 -0
  69. package/dist/plugins/plugin.js.map +1 -0
  70. package/dist/plugins/product.d.ts +15 -0
  71. package/dist/plugins/product.js +38 -0
  72. package/dist/plugins/product.js.map +1 -0
  73. package/dist/plugins/project.d.ts +25 -0
  74. package/dist/plugins/{behaviors/Generator.js → project.js} +1 -1
  75. package/dist/plugins/project.js.map +1 -0
  76. package/dist/plugins/shape.d.ts +424 -0
  77. package/dist/plugins/shape.js +1181 -0
  78. package/dist/plugins/shape.js.map +1 -0
  79. package/dist/plugins/time.d.ts +12 -0
  80. package/dist/plugins/time.js +84 -0
  81. package/dist/plugins/time.js.map +1 -0
  82. package/dist/plugins/usage.d.ts +11 -0
  83. package/dist/plugins/usage.js +26 -0
  84. package/dist/plugins/usage.js.map +1 -0
  85. package/dist/prettier/config-loader.d.ts +13 -0
  86. package/dist/prettier/config-loader.js +105 -0
  87. package/dist/prettier/config-loader.js.map +1 -0
  88. package/dist/telemetry/index.d.ts +25 -0
  89. package/dist/telemetry/index.js +18 -0
  90. package/dist/telemetry/index.js.map +1 -0
  91. package/dist/typescript.d.ts +293 -0
  92. package/dist/typescript.js +454 -0
  93. package/dist/typescript.js.map +1 -0
  94. package/dist/util/get-file-type.d.ts +2 -0
  95. package/dist/util/get-file-type.js +13 -0
  96. package/dist/util/get-file-type.js.map +1 -0
  97. package/dist/util/index.d.ts +2 -6
  98. package/dist/util/index.js +2 -6
  99. package/dist/util/index.js.map +1 -1
  100. package/dist/util/{Scope.js → is-sn-scope.js} +1 -1
  101. package/dist/util/is-sn-scope.js.map +1 -0
  102. package/dist/xml.d.ts +24 -0
  103. package/dist/xml.js +71 -0
  104. package/dist/xml.js.map +1 -0
  105. package/now.config.schema.json +336 -0
  106. package/package.json +22 -12
  107. package/src/app.ts +33 -0
  108. package/src/compiler.ts +384 -0
  109. package/src/compression.ts +93 -0
  110. package/src/crypto.ts +5 -0
  111. package/src/diagnostic.ts +108 -0
  112. package/src/{plugins/Diagnostic.ts → fluent-diagnostic.ts} +3 -10
  113. package/src/fluent-directive.ts +63 -0
  114. package/src/fluent-file.ts +13 -0
  115. package/src/formatter.ts +58 -0
  116. package/src/fs.ts +438 -0
  117. package/src/{GUID.ts → guid.ts} +2 -6
  118. package/src/index.ts +19 -5
  119. package/src/json.ts +20 -0
  120. package/src/keys-registry.ts +384 -0
  121. package/src/logger.ts +20 -0
  122. package/src/now-config.ts +337 -0
  123. package/src/path.ts +9 -0
  124. package/src/plugins/cache.ts +45 -0
  125. package/src/plugins/context.ts +93 -0
  126. package/src/plugins/database.ts +121 -0
  127. package/src/plugins/file.ts +19 -0
  128. package/src/plugins/index.ts +9 -5
  129. package/src/plugins/plugin.ts +995 -0
  130. package/src/plugins/product.ts +44 -0
  131. package/src/plugins/project.ts +39 -0
  132. package/src/plugins/shape.ts +1532 -0
  133. package/src/plugins/time.ts +108 -0
  134. package/src/plugins/usage.ts +26 -0
  135. package/src/prettier/config-loader.ts +130 -0
  136. package/src/telemetry/index.ts +27 -0
  137. package/src/typescript.ts +502 -0
  138. package/src/util/get-file-type.ts +11 -0
  139. package/src/util/index.ts +2 -6
  140. package/src/xml.ts +86 -0
  141. package/dist/GUID.d.ts +0 -2
  142. package/dist/GUID.js.map +0 -1
  143. package/dist/IncludePaths.d.ts +0 -25
  144. package/dist/IncludePaths.js +0 -97
  145. package/dist/IncludePaths.js.map +0 -1
  146. package/dist/Keys.d.ts +0 -32
  147. package/dist/Keys.js +0 -245
  148. package/dist/Keys.js.map +0 -1
  149. package/dist/TypeScript.d.ts +0 -5
  150. package/dist/TypeScript.js +0 -58
  151. package/dist/TypeScript.js.map +0 -1
  152. package/dist/XML.d.ts +0 -32
  153. package/dist/XML.js +0 -83
  154. package/dist/XML.js.map +0 -1
  155. package/dist/plugins/Context.d.ts +0 -190
  156. package/dist/plugins/Context.js.map +0 -1
  157. package/dist/plugins/Diagnostic.js +0 -28
  158. package/dist/plugins/Diagnostic.js.map +0 -1
  159. package/dist/plugins/Plugin.d.ts +0 -175
  160. package/dist/plugins/Plugin.js +0 -15
  161. package/dist/plugins/Plugin.js.map +0 -1
  162. package/dist/plugins/behaviors/Arranger.d.ts +0 -26
  163. package/dist/plugins/behaviors/Arranger.js.map +0 -1
  164. package/dist/plugins/behaviors/Composer.d.ts +0 -102
  165. package/dist/plugins/behaviors/Composer.js +0 -15
  166. package/dist/plugins/behaviors/Composer.js.map +0 -1
  167. package/dist/plugins/behaviors/Diagnostics.d.ts +0 -7
  168. package/dist/plugins/behaviors/Diagnostics.js +0 -3
  169. package/dist/plugins/behaviors/Diagnostics.js.map +0 -1
  170. package/dist/plugins/behaviors/Generator.d.ts +0 -21
  171. package/dist/plugins/behaviors/Generator.js.map +0 -1
  172. package/dist/plugins/behaviors/OwnedTables.d.ts +0 -6
  173. package/dist/plugins/behaviors/OwnedTables.js +0 -3
  174. package/dist/plugins/behaviors/OwnedTables.js.map +0 -1
  175. package/dist/plugins/behaviors/PostProcessor.d.ts +0 -5
  176. package/dist/plugins/behaviors/PostProcessor.js +0 -3
  177. package/dist/plugins/behaviors/PostProcessor.js.map +0 -1
  178. package/dist/plugins/behaviors/Serializer.d.ts +0 -30
  179. package/dist/plugins/behaviors/Serializer.js +0 -3
  180. package/dist/plugins/behaviors/Serializer.js.map +0 -1
  181. package/dist/plugins/behaviors/Transformer.d.ts +0 -23
  182. package/dist/plugins/behaviors/Transformer.js +0 -3
  183. package/dist/plugins/behaviors/Transformer.js.map +0 -1
  184. package/dist/plugins/behaviors/extractors/Data.d.ts +0 -119
  185. package/dist/plugins/behaviors/extractors/Data.js +0 -244
  186. package/dist/plugins/behaviors/extractors/Data.js.map +0 -1
  187. package/dist/plugins/behaviors/extractors/Extractors.d.ts +0 -63
  188. package/dist/plugins/behaviors/extractors/Extractors.js +0 -3
  189. package/dist/plugins/behaviors/extractors/Extractors.js.map +0 -1
  190. package/dist/plugins/behaviors/extractors/index.d.ts +0 -2
  191. package/dist/plugins/behaviors/extractors/index.js +0 -19
  192. package/dist/plugins/behaviors/extractors/index.js.map +0 -1
  193. package/dist/plugins/behaviors/index.d.ts +0 -9
  194. package/dist/plugins/behaviors/index.js +0 -26
  195. package/dist/plugins/behaviors/index.js.map +0 -1
  196. package/dist/plugins/util/CallExpression.d.ts +0 -5
  197. package/dist/plugins/util/CallExpression.js +0 -88
  198. package/dist/plugins/util/CallExpression.js.map +0 -1
  199. package/dist/plugins/util/CodeTransformation.d.ts +0 -95
  200. package/dist/plugins/util/CodeTransformation.js +0 -624
  201. package/dist/plugins/util/CodeTransformation.js.map +0 -1
  202. package/dist/plugins/util/ObjectLiteral.d.ts +0 -9
  203. package/dist/plugins/util/ObjectLiteral.js +0 -37
  204. package/dist/plugins/util/ObjectLiteral.js.map +0 -1
  205. package/dist/plugins/util/index.d.ts +0 -3
  206. package/dist/plugins/util/index.js +0 -20
  207. package/dist/plugins/util/index.js.map +0 -1
  208. package/dist/util/Debug.d.ts +0 -4
  209. package/dist/util/Debug.js +0 -20
  210. package/dist/util/Debug.js.map +0 -1
  211. package/dist/util/Directive.d.ts +0 -16
  212. package/dist/util/Directive.js +0 -107
  213. package/dist/util/Directive.js.map +0 -1
  214. package/dist/util/RuntimeTableSchema.d.ts +0 -5
  215. package/dist/util/RuntimeTableSchema.js +0 -58
  216. package/dist/util/RuntimeTableSchema.js.map +0 -1
  217. package/dist/util/Scope.js.map +0 -1
  218. package/dist/util/Util.d.ts +0 -1
  219. package/dist/util/Util.js +0 -12
  220. package/dist/util/Util.js.map +0 -1
  221. package/dist/util/XMLUploadParser.d.ts +0 -22
  222. package/dist/util/XMLUploadParser.js +0 -67
  223. package/dist/util/XMLUploadParser.js.map +0 -1
  224. package/src/IncludePaths.ts +0 -122
  225. package/src/Keys.ts +0 -274
  226. package/src/TypeScript.ts +0 -65
  227. package/src/XML.ts +0 -98
  228. package/src/plugins/Context.ts +0 -239
  229. package/src/plugins/Plugin.ts +0 -278
  230. package/src/plugins/behaviors/Arranger.ts +0 -42
  231. package/src/plugins/behaviors/Composer.ts +0 -125
  232. package/src/plugins/behaviors/Diagnostics.ts +0 -12
  233. package/src/plugins/behaviors/Generator.ts +0 -31
  234. package/src/plugins/behaviors/OwnedTables.ts +0 -5
  235. package/src/plugins/behaviors/PostProcessor.ts +0 -6
  236. package/src/plugins/behaviors/Serializer.ts +0 -40
  237. package/src/plugins/behaviors/Transformer.ts +0 -32
  238. package/src/plugins/behaviors/extractors/Data.ts +0 -332
  239. package/src/plugins/behaviors/extractors/Extractors.ts +0 -73
  240. package/src/plugins/behaviors/extractors/index.ts +0 -2
  241. package/src/plugins/behaviors/index.ts +0 -9
  242. package/src/plugins/util/CallExpression.ts +0 -110
  243. package/src/plugins/util/CodeTransformation.ts +0 -731
  244. package/src/plugins/util/ObjectLiteral.ts +0 -37
  245. package/src/plugins/util/index.ts +0 -3
  246. package/src/util/Debug.ts +0 -24
  247. package/src/util/Directive.ts +0 -123
  248. package/src/util/RuntimeTableSchema.ts +0 -44
  249. package/src/util/Util.ts +0 -7
  250. package/src/util/XMLUploadParser.ts +0 -90
  251. /package/dist/util/{Scope.d.ts → is-sn-scope.d.ts} +0 -0
  252. /package/src/util/{Scope.ts → is-sn-scope.ts} +0 -0
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.SupportedKinds = exports.tsc = exports.ts = void 0;
27
+ exports.getValueDeclaration = getValueDeclaration;
28
+ exports.parseType = parseType;
29
+ exports.isSupportedKind = isSupportedKind;
30
+ exports.isSupportedNode = isSupportedNode;
31
+ exports.getKind = getKind;
32
+ exports.getKindName = getKindName;
33
+ exports.isUndefined = isUndefined;
34
+ exports.isOnlyChild = isOnlyChild;
35
+ exports.isRemovable = isRemovable;
36
+ exports.remove = remove;
37
+ exports.removeReferences = removeReferences;
38
+ exports.getUnsupportedKindName = getUnsupportedKindName;
39
+ // biome-ignore lint/style/noRestrictedImports: This is where our re-export comes from
40
+ const ts = __importStar(require("ts-morph"));
41
+ exports.ts = ts;
42
+ // biome-ignore lint/style/noRestrictedImports: This is where our re-export comes from
43
+ const ts_morph_1 = require("ts-morph");
44
+ Object.defineProperty(exports, "tsc", { enumerable: true, get: function () { return ts_morph_1.ts; } });
45
+ function getValueDeclaration(node) {
46
+ const symbol = node.getSymbol();
47
+ if (!symbol) {
48
+ return undefined;
49
+ }
50
+ // Obtain the declaration for the symbol (possibly undefined)
51
+ const valueDeclaration = getValueDeclarationFromSymbolOrAlias(symbol);
52
+ // Guard against TypeScript erroneously resolving a property access like `data.some` to
53
+ // the *PropertyAccessExpression* itself. When that happens `getValueDeclaration()` is
54
+ // called on the identifier `some` and we get back its parent `PropertyAccessExpression`
55
+ // whose `.getNameNode()` is the same identifier. Returning that node causes infinite
56
+ // recursion (`Identifier → PropertyAccessExpression → Identifier …`) and eventually
57
+ // crashes. Since there's no useful way to handle that scenario, we just bail out here.
58
+ if (valueDeclaration &&
59
+ (valueDeclaration === node ||
60
+ (ts.Node.isPropertyAccessExpression(valueDeclaration) &&
61
+ (valueDeclaration.getNameNode() === node || valueDeclaration.getExpression() === node)))) {
62
+ return undefined;
63
+ }
64
+ if (!ts.Node.isShorthandPropertyAssignment(valueDeclaration)) {
65
+ return valueDeclaration;
66
+ }
67
+ const valueSymbol = valueDeclaration.getValueSymbol();
68
+ if (!valueSymbol) {
69
+ throw `Expected value declaration for shorthand property assignment to have value symbol: ${valueDeclaration.getText()}`;
70
+ }
71
+ return getValueDeclarationFromSymbolOrAlias(valueSymbol);
72
+ }
73
+ function getValueDeclarationFromSymbolOrAlias(symbol) {
74
+ return symbol.getValueDeclaration() ?? symbol.getAliasedSymbol()?.getValueDeclaration();
75
+ }
76
+ function parseType(type, location, unparsableTypeHandler = (unparsableType) => {
77
+ throw `Unparsable type: ${unparsableType.getText()}`;
78
+ }) {
79
+ if (type.isBooleanLiteral()) {
80
+ return type.getText() === 'true';
81
+ }
82
+ else if (type.isLiteral()) {
83
+ return type.getLiteralValueOrThrow();
84
+ }
85
+ else if (type.isTuple()) {
86
+ return type.getTupleElements().map((e) => parseType(e, location, unparsableTypeHandler));
87
+ }
88
+ else if (type.isObject() && !type.isArray()) {
89
+ return type.getProperties().reduce((result, property) => {
90
+ result[property.getName()] = parseType(property.getTypeAtLocation(location), location, unparsableTypeHandler);
91
+ return result;
92
+ }, {});
93
+ }
94
+ else {
95
+ return unparsableTypeHandler(type);
96
+ }
97
+ }
98
+ /**
99
+ * A lot of the extra information here only exists because TypeScript doesn't
100
+ * export a union containing all the different node types, so you can't narrow
101
+ * a node's type by its kind. Narrowing based on kind is very useful for plugins
102
+ * since you can define a property using a kind name and the type of the 'node'
103
+ * argument can be inferred instead of every plugin needing to cast it manually.
104
+ * If you find yourself needing to parse any node kinds that aren't on this list,
105
+ * please add them here.
106
+ *
107
+ * See: https://github.com/microsoft/TypeScript/issues/13634
108
+ */
109
+ exports.SupportedKinds = {
110
+ [ts.SyntaxKind.TypeAliasDeclaration]: {
111
+ name: 'TypeAliasDeclaration',
112
+ node: {},
113
+ },
114
+ [ts.SyntaxKind.TypeReference]: {
115
+ name: 'TypeReference',
116
+ node: {},
117
+ },
118
+ [ts.SyntaxKind.TypeLiteral]: {
119
+ name: 'TypeLiteral',
120
+ node: {},
121
+ },
122
+ [ts.SyntaxKind.PropertySignature]: {
123
+ name: 'PropertySignature',
124
+ node: {},
125
+ },
126
+ [ts.SyntaxKind.TupleType]: {
127
+ name: 'TupleType',
128
+ node: {},
129
+ },
130
+ [ts.SyntaxKind.BinaryExpression]: {
131
+ name: 'BinaryExpression',
132
+ node: {},
133
+ },
134
+ [ts.SyntaxKind.FunctionExpression]: {
135
+ name: 'FunctionExpression',
136
+ node: {},
137
+ },
138
+ [ts.SyntaxKind.FunctionDeclaration]: {
139
+ name: 'FunctionDeclaration',
140
+ node: {},
141
+ },
142
+ [ts.SyntaxKind.ArrayLiteralExpression]: {
143
+ name: 'ArrayLiteralExpression',
144
+ node: {},
145
+ },
146
+ [ts.SyntaxKind.CallExpression]: {
147
+ name: 'CallExpression',
148
+ node: {},
149
+ },
150
+ [ts.SyntaxKind.StringLiteral]: {
151
+ name: 'StringLiteral',
152
+ node: {},
153
+ },
154
+ [ts.SyntaxKind.NumericLiteral]: {
155
+ name: 'NumericLiteral',
156
+ node: {},
157
+ },
158
+ [ts.SyntaxKind.TrueKeyword]: {
159
+ name: 'TrueKeyword',
160
+ node: {},
161
+ },
162
+ [ts.SyntaxKind.FalseKeyword]: {
163
+ name: 'FalseKeyword',
164
+ node: {},
165
+ },
166
+ [ts.SyntaxKind.NullKeyword]: {
167
+ name: 'NullKeyword',
168
+ node: {},
169
+ },
170
+ [ts.SyntaxKind.Identifier]: {
171
+ name: 'Identifier',
172
+ node: {},
173
+ },
174
+ [ts.SyntaxKind.SourceFile]: {
175
+ name: 'SourceFile',
176
+ node: {},
177
+ },
178
+ [ts.SyntaxKind.VariableDeclaration]: {
179
+ name: 'VariableDeclaration',
180
+ node: {},
181
+ },
182
+ [ts.SyntaxKind.ClassDeclaration]: {
183
+ name: 'ClassDeclaration',
184
+ node: {},
185
+ },
186
+ [ts.SyntaxKind.ExportDeclaration]: {
187
+ name: 'ExportDeclaration',
188
+ node: {},
189
+ },
190
+ [ts.SyntaxKind.ObjectLiteralExpression]: {
191
+ name: 'ObjectLiteralExpression',
192
+ node: {},
193
+ },
194
+ [ts.SyntaxKind.AsExpression]: {
195
+ name: 'AsExpression',
196
+ node: {},
197
+ },
198
+ [ts.SyntaxKind.ComputedPropertyName]: {
199
+ name: 'ComputedPropertyName',
200
+ node: {},
201
+ },
202
+ [ts.SyntaxKind.PropertyAssignment]: {
203
+ name: 'PropertyAssignment',
204
+ node: {},
205
+ },
206
+ [ts.SyntaxKind.PropertyAccessExpression]: {
207
+ name: 'PropertyAccessExpression',
208
+ node: {},
209
+ },
210
+ [ts.SyntaxKind.NoSubstitutionTemplateLiteral]: {
211
+ name: 'NoSubstitutionTemplateLiteral',
212
+ node: {},
213
+ },
214
+ [ts.SyntaxKind.ExpressionStatement]: {
215
+ name: 'ExpressionStatement',
216
+ node: {},
217
+ },
218
+ [ts.SyntaxKind.TaggedTemplateExpression]: {
219
+ name: 'TaggedTemplateExpression',
220
+ node: {},
221
+ },
222
+ [ts.SyntaxKind.ExportAssignment]: {
223
+ name: 'ExportAssignment',
224
+ node: {},
225
+ },
226
+ [ts.SyntaxKind.NamedExports]: {
227
+ name: 'NamedExports',
228
+ node: {},
229
+ },
230
+ [ts.SyntaxKind.ExportSpecifier]: {
231
+ name: 'ExportSpecifier',
232
+ node: {},
233
+ },
234
+ [ts.SyntaxKind.ElementAccessExpression]: {
235
+ name: 'ElementAccessExpression',
236
+ node: {},
237
+ },
238
+ [ts.SyntaxKind.TemplateExpression]: {
239
+ name: 'TemplateExpression',
240
+ node: {},
241
+ },
242
+ [ts.SyntaxKind.ImportClause]: {
243
+ name: 'ImportClause',
244
+ node: {},
245
+ },
246
+ [ts.SyntaxKind.ImportSpecifier]: {
247
+ name: 'ImportSpecifier',
248
+ node: {},
249
+ },
250
+ [ts.SyntaxKind.ImportDeclaration]: {
251
+ name: 'ImportDeclaration',
252
+ node: {},
253
+ },
254
+ [ts.SyntaxKind.NamedImports]: {
255
+ name: 'NamedImports',
256
+ node: {},
257
+ },
258
+ [ts.SyntaxKind.VariableStatement]: {
259
+ name: 'VariableStatement',
260
+ node: {},
261
+ },
262
+ [ts.SyntaxKind.VariableDeclarationList]: {
263
+ name: 'VariableDeclarationList',
264
+ node: {},
265
+ },
266
+ [ts.SyntaxKind.PlusToken]: {
267
+ name: 'PlusToken',
268
+ node: {},
269
+ },
270
+ [ts.SyntaxKind.EndOfFileToken]: {
271
+ name: 'EndOfFileToken',
272
+ node: {},
273
+ },
274
+ [ts.SyntaxKind.ExportKeyword]: {
275
+ name: 'ExportKeyword',
276
+ node: {},
277
+ },
278
+ [ts.SyntaxKind.AnyKeyword]: {
279
+ name: 'AnyKeyword',
280
+ node: {},
281
+ },
282
+ [ts.SyntaxKind.ModuleDeclaration]: {
283
+ name: 'ModuleDeclaration',
284
+ node: {},
285
+ },
286
+ [ts.SyntaxKind.ModuleBlock]: {
287
+ name: 'ModuleBlock',
288
+ node: {},
289
+ },
290
+ [ts.SyntaxKind.Block]: {
291
+ name: 'Block',
292
+ node: {},
293
+ },
294
+ [ts.SyntaxKind.Parameter]: {
295
+ name: 'Parameter',
296
+ node: {},
297
+ },
298
+ [ts.SyntaxKind.EqualsToken]: {
299
+ name: 'EqualsToken',
300
+ node: {},
301
+ },
302
+ [ts.SyntaxKind.EqualsGreaterThanToken]: {
303
+ name: 'EqualsGreaterThanToken',
304
+ node: {},
305
+ },
306
+ [ts.SyntaxKind.ArrowFunction]: {
307
+ name: 'ArrowFunction',
308
+ node: {},
309
+ },
310
+ [ts.SyntaxKind.TemplateHead]: {
311
+ name: 'TemplateHead',
312
+ node: {},
313
+ },
314
+ [ts.SyntaxKind.TemplateMiddle]: {
315
+ name: 'TemplateMiddle',
316
+ node: {},
317
+ },
318
+ [ts.SyntaxKind.TemplateSpan]: {
319
+ name: 'TemplateSpan',
320
+ node: {},
321
+ },
322
+ [ts.SyntaxKind.TemplateTail]: {
323
+ name: 'TemplateTail',
324
+ node: {},
325
+ },
326
+ [ts.SyntaxKind.PrefixUnaryExpression]: {
327
+ name: 'PrefixUnaryExpression',
328
+ node: {},
329
+ },
330
+ };
331
+ function isSupportedKind(kind) {
332
+ return kind in exports.SupportedKinds;
333
+ }
334
+ function isSupportedNode(node) {
335
+ return !!node && isSupportedKind(node.getKind());
336
+ }
337
+ function getKind(node) {
338
+ return node.getKind();
339
+ }
340
+ function getKindName(nodeOrKind) {
341
+ const kind = typeof nodeOrKind === 'object' ? getKind(nodeOrKind) : nodeOrKind;
342
+ return exports.SupportedKinds[kind].name;
343
+ }
344
+ function isUndefined(node) {
345
+ return (ts.Node.isUndefinedKeyword(node) ||
346
+ ts.Node.isNullLiteral(node) ||
347
+ (ts.Node.isIdentifier(node) && (node.getText() === 'undefined' || node.getText() === 'null')));
348
+ }
349
+ function isOnlyChild(node) {
350
+ if (!node) {
351
+ return false;
352
+ }
353
+ const parent = node.getParent();
354
+ if (!parent) {
355
+ return true;
356
+ }
357
+ if (ts.Node.isInitializerExpressionGetable(parent) && parent.getInitializer() === node) {
358
+ return true;
359
+ }
360
+ if (ts.Node.hasExpression(parent) && parent.getExpression() === node) {
361
+ return true;
362
+ }
363
+ if (ts.Node.isImportDeclaration(parent) && parent.getImportClause() === node) {
364
+ return true;
365
+ }
366
+ if (ts.Node.isExportSpecifier(parent) && parent.getNameNode() === node) {
367
+ return true;
368
+ }
369
+ const syntaxList = node.getParentSyntaxList();
370
+ if (syntaxList && syntaxList.getChildCount() === 1 && syntaxList.getChildAtIndex(0) === node) {
371
+ return true;
372
+ }
373
+ return parent.getChildCount() === 1 && parent.getChildAtIndex(0) === node;
374
+ }
375
+ function isRemovable(node) {
376
+ return isSupportedNode(node) && 'remove' in node;
377
+ }
378
+ function buildUnaryChain(node, chain = []) {
379
+ chain.push(node);
380
+ return isOnlyChild(node) ? buildUnaryChain(node.getParentOrThrow(), chain) : chain;
381
+ }
382
+ /**
383
+ * Recursively walks up the tree to remove the furthest possible ancestor along a
384
+ * unary chain from this node, or the node itself if that's all we can do. This
385
+ * avoids leaving behind dead code as much as possible.
386
+ *
387
+ * @throws Error if the node cannot be removed
388
+ */
389
+ function remove(target) {
390
+ if (target.wasForgotten()) {
391
+ return;
392
+ }
393
+ const chain = buildUnaryChain(target, []);
394
+ for (const node of chain) {
395
+ const parent = node.getParent();
396
+ // We can remove this node via the parent if it's an element in an array
397
+ if (ts.Node.isArrayLiteralExpression(parent)) {
398
+ for (const [i, e] of parent.getElements().entries()) {
399
+ if (e === node) {
400
+ parent.removeElement(i);
401
+ return;
402
+ }
403
+ }
404
+ }
405
+ // We need to avoid leaving imports without any specifiers (side effect imports)
406
+ if (ts.Node.isImportSpecifier(node) && isOnlyChild(node)) {
407
+ node.getImportDeclaration().remove();
408
+ return;
409
+ }
410
+ if (isRemovable(node)) {
411
+ node.remove();
412
+ return;
413
+ }
414
+ }
415
+ throw new Error(`Unable to remove "${getUnsupportedKindName(target)}" node: ${target.getText()}`);
416
+ }
417
+ /**
418
+ * Recursively walks up the tree removing references to this node and any ancestors
419
+ * along a unary chain. In other words, if this node is the only child of its parent,
420
+ * we also remove references to the parent, and repeat that process recursively. This
421
+ * avoids leaving behind dead code as much as possible.
422
+ */
423
+ function removeReferences(target) {
424
+ const chain = buildUnaryChain(target, []);
425
+ for (const node of chain) {
426
+ if (ts.Node.isReferenceFindable(node)) {
427
+ node.findReferencesAsNodes().forEach(remove);
428
+ }
429
+ }
430
+ }
431
+ /**
432
+ * This is a hack to get more accurate names for given syntax kinds. TypeScript's
433
+ * `SyntaxKind` enum has a lot of reused numeric values, so when you try to index
434
+ * it with a number, you might get a different name than you expect. For example,
435
+ * `VariableStatement` and `FirstStatement` both have the same numeric value, and
436
+ * you probably never would expect the latter. Thankfully, all the names that you
437
+ * probably never want are towards the end, so this just grabs all the first ones
438
+ * and ignores any duplicates that come after.
439
+ */
440
+ let unsupportedKindNames;
441
+ function getUnsupportedKindName(node) {
442
+ if (!unsupportedKindNames) {
443
+ unsupportedKindNames = Object.entries(ts.SyntaxKind)
444
+ .filter(([k]) => Number.isNaN(Number(k)))
445
+ .reduce((names, [name, value]) => {
446
+ if (typeof value === 'number' && !names[value]) {
447
+ names[value] = name; // Only add if it hasn't been added already
448
+ }
449
+ return names;
450
+ }, {});
451
+ }
452
+ return unsupportedKindNames[node.getKind()];
453
+ }
454
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FileType } from '../plugins';
2
+ export declare function getFileType(filePath: string): FileType;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFileType = getFileType;
4
+ function getFileType(filePath) {
5
+ return filePath.endsWith('.now.ts')
6
+ ? 'fluent'
7
+ : filePath.endsWith('.ts') || filePath.endsWith('.js')
8
+ ? 'module'
9
+ : filePath.endsWith('.json') || filePath.endsWith('.jsonc')
10
+ ? 'json'
11
+ : 'unknown';
12
+ }
13
+ //# sourceMappingURL=get-file-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file-type.js","sourceRoot":"","sources":["../../src/util/get-file-type.ts"],"names":[],"mappings":";;AAEA,kCAQC;AARD,SAAgB,WAAW,CAAC,QAAgB;IACxC,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpD,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,SAAS,CAAA;AACvB,CAAC"}
@@ -1,6 +1,2 @@
1
- export * from './Debug';
2
- export * from './Util';
3
- export * from './XMLUploadParser';
4
- export * from './Scope';
5
- export * from './Directive';
6
- export * from './RuntimeTableSchema';
1
+ export * from './is-sn-scope';
2
+ export * from './get-file-type';
@@ -14,10 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./Debug"), exports);
18
- __exportStar(require("./Util"), exports);
19
- __exportStar(require("./XMLUploadParser"), exports);
20
- __exportStar(require("./Scope"), exports);
21
- __exportStar(require("./Directive"), exports);
22
- __exportStar(require("./RuntimeTableSchema"), exports);
17
+ __exportStar(require("./is-sn-scope"), exports);
18
+ __exportStar(require("./get-file-type"), exports);
23
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,yCAAsB;AACtB,oDAAiC;AACjC,0CAAuB;AACvB,8CAA2B;AAC3B,uDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,kDAA+B"}
@@ -4,4 +4,4 @@ exports.isSNScope = isSNScope;
4
4
  function isSNScope(scopeName) {
5
5
  return scopeName.startsWith('sn') || scopeName.startsWith('now');
6
6
  }
7
- //# sourceMappingURL=Scope.js.map
7
+ //# sourceMappingURL=is-sn-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-sn-scope.js","sourceRoot":"","sources":["../../src/util/is-sn-scope.ts"],"names":[],"mappings":";;AAAA,8BAEC;AAFD,SAAgB,SAAS,CAAC,SAAiB;IACvC,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACpE,CAAC"}
package/dist/xml.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { type Action, Record } from './plugins';
2
+ import type { XMLBuilder } from 'xmlbuilder2/lib/interfaces';
3
+ export declare function unloadBuilder({ scope, scopeId }: {
4
+ scope: string;
5
+ scopeId: string;
6
+ }): {
7
+ xml: XMLBuilder;
8
+ end: () => string;
9
+ record: (record: Record) => {
10
+ field(columnName: string, value: unknown, attributes?: globalThis.Record<string, string>): XMLBuilder;
11
+ addSysScope(scope: string, scopeId: string): XMLBuilder;
12
+ };
13
+ createXML: (tableName: string, id: string | number, action?: Action) => {
14
+ field(columnName: string, value: unknown, attributes?: globalThis.Record<string, string>): XMLBuilder;
15
+ addSysScope(scope: string, scopeId: string): XMLBuilder;
16
+ };
17
+ };
18
+ export declare function recordXml(xml: XMLBuilder, tableName: string, id: string | number, options?: {
19
+ attr?: globalThis.Record<string, string>;
20
+ excludeScopeElement?: boolean;
21
+ }): {
22
+ field(columnName: string, value: unknown, attributes?: globalThis.Record<string, string>): XMLBuilder;
23
+ addSysScope(scope: string, scopeId: string): XMLBuilder;
24
+ };
package/dist/xml.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unloadBuilder = unloadBuilder;
4
+ exports.recordXml = recordXml;
5
+ const plugins_1 = require("./plugins");
6
+ const xmlbuilder2_1 = require("xmlbuilder2");
7
+ function unloadBuilder({ scope, scopeId }) {
8
+ const xml = (0, xmlbuilder2_1.create)({ version: '1.0' }).ele('record_update');
9
+ const end = () => xml.end({ prettyPrint: true });
10
+ // Root Builder
11
+ return {
12
+ xml,
13
+ end,
14
+ record: (record) => {
15
+ const rec = recordXml(xml, record.getTable(), record.getId().getValue(), {
16
+ attr: { action: record.getAction() },
17
+ });
18
+ rec.field('sys_scope', scopeId, { display_value: scope });
19
+ // TODO: Add sys_update_name here too
20
+ return rec;
21
+ },
22
+ createXML: (tableName, id, action = 'INSERT_OR_UPDATE') => {
23
+ const rec = recordXml(xml, tableName, id, { attr: { action } });
24
+ rec.addSysScope(scope, scopeId);
25
+ return rec;
26
+ },
27
+ };
28
+ }
29
+ function recordXml(xml, tableName, id, options = {}) {
30
+ const recordXml = xml.ele(tableName, options.attr || { action: 'INSERT_OR_UPDATE' });
31
+ recordXml.ele('sys_id', undefined).txt(`${id}`);
32
+ // Record Builder
33
+ return {
34
+ field(columnName, value, attributes = {}) {
35
+ if (value instanceof plugins_1.ResolvableShape) {
36
+ value = value.resolve();
37
+ }
38
+ if (value instanceof plugins_1.Record) {
39
+ value = value.getId();
40
+ }
41
+ if (value instanceof plugins_1.RecordId) {
42
+ attributes = { ...attributes, ...serializeKeys(value) };
43
+ }
44
+ const { stringValue, contentType } = value instanceof plugins_1.Shape
45
+ ? value.toString().pipe((s) => ({ stringValue: s.getValue(), contentType: s.getContentType() }))
46
+ : { stringValue: `${value ?? ''}`, contentType: 'plain' };
47
+ /*
48
+ &nbsp is not a predefined entity for XML, to overcome that the platform uses &amp;nbsp; in XMLs.
49
+ When we transform XML that contains &amp;nbsp; that translates to `&nbsp;`.
50
+ But when fluent generates the XML from source it creates XML with &nbsp; which makes the XML invalid since `nbsp` is not defined.
51
+
52
+ So we are replacing &nbsp; with &amp;nbsp; to ensure the XML is valid.
53
+ */
54
+ const sanitizedValue = stringValue.replaceAll('&nbsp;', '&amp;nbsp;');
55
+ const element = recordXml.ele(columnName, attributes);
56
+ return contentType === 'plain'
57
+ ? element.txt(sanitizedValue)
58
+ : element.dat(plugins_1.StringShape.escapeCdataTags(sanitizedValue));
59
+ },
60
+ addSysScope(scope, scopeId) {
61
+ return recordXml.ele('sys_scope', { display_value: scope }).txt(scopeId);
62
+ },
63
+ };
64
+ }
65
+ function serializeKeys(id) {
66
+ const keys = id.getKeys();
67
+ return keys
68
+ ? Object.fromEntries(Object.entries(keys).map(([k, v]) => [k, v instanceof plugins_1.RecordId ? v.getValue() : v]))
69
+ : undefined;
70
+ }
71
+ //# sourceMappingURL=xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}