@servicenow/sdk-build-plugins 2.1.4 → 2.2.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.
Files changed (118) hide show
  1. package/dist/AttachmentPlugin.d.ts +6 -7
  2. package/dist/AttachmentPlugin.js +8 -6
  3. package/dist/AttachmentPlugin.js.map +1 -1
  4. package/dist/BusinessRulePlugin.d.ts +5 -5
  5. package/dist/BusinessRulePlugin.js +4 -4
  6. package/dist/BusinessRulePlugin.js.map +1 -1
  7. package/dist/CrossScopePrivilegePlugin.d.ts +5 -5
  8. package/dist/CrossScopePrivilegePlugin.js +1 -2
  9. package/dist/CrossScopePrivilegePlugin.js.map +1 -1
  10. package/dist/DefaultPlugin.d.ts +19 -11
  11. package/dist/DefaultPlugin.js +23 -51
  12. package/dist/DefaultPlugin.js.map +1 -1
  13. package/dist/HtmlTemplatePlugin.d.ts +2 -2
  14. package/dist/HtmlTemplatePlugin.js +3 -26
  15. package/dist/HtmlTemplatePlugin.js.map +1 -1
  16. package/dist/IdPlugin.d.ts +5 -4
  17. package/dist/IdPlugin.js +5 -9
  18. package/dist/IdPlugin.js.map +1 -1
  19. package/dist/JsonPlugin.d.ts +8 -3
  20. package/dist/JsonPlugin.js +6 -11
  21. package/dist/JsonPlugin.js.map +1 -1
  22. package/dist/ListPlugin.d.ts +6 -7
  23. package/dist/ListPlugin.js +17 -19
  24. package/dist/ListPlugin.js.map +1 -1
  25. package/dist/NowConfigPlugin.d.ts +1 -1
  26. package/dist/NowConfigPlugin.js +5 -31
  27. package/dist/NowConfigPlugin.js.map +1 -1
  28. package/dist/PackageJsonPlugin.d.ts +1 -1
  29. package/dist/PackageJsonPlugin.js +1 -1
  30. package/dist/PackageJsonPlugin.js.map +1 -1
  31. package/dist/PropertyPlugin.d.ts +5 -66
  32. package/dist/PropertyPlugin.js +6 -12
  33. package/dist/PropertyPlugin.js.map +1 -1
  34. package/dist/ScriptTemplatePlugin.d.ts +1 -1
  35. package/dist/ScriptTemplatePlugin.js +5 -5
  36. package/dist/ScriptTemplatePlugin.js.map +1 -1
  37. package/dist/ServerModulePlugin.d.ts +5 -6
  38. package/dist/ServerModulePlugin.js +10 -39
  39. package/dist/ServerModulePlugin.js.map +1 -1
  40. package/dist/UserPreferencePlugin.d.ts +1 -1
  41. package/dist/aclAndRole/AclPlugin.d.ts +44 -28
  42. package/dist/aclAndRole/AclPlugin.js +30 -33
  43. package/dist/aclAndRole/AclPlugin.js.map +1 -1
  44. package/dist/aclAndRole/RolePlugin.d.ts +5 -6
  45. package/dist/aclAndRole/RolePlugin.js +6 -7
  46. package/dist/aclAndRole/RolePlugin.js.map +1 -1
  47. package/dist/aclAndRole/Util.js +7 -30
  48. package/dist/aclAndRole/Util.js.map +1 -1
  49. package/dist/app/ApplicationMenuPlugin.d.ts +5 -5
  50. package/dist/app/ApplicationMenuPlugin.js +2 -3
  51. package/dist/app/ApplicationMenuPlugin.js.map +1 -1
  52. package/dist/atf/TestPlugin.d.ts +3 -3
  53. package/dist/atf/TestPlugin.js +1 -1
  54. package/dist/atf/TestPlugin.js.map +1 -1
  55. package/dist/db/ColumnPlugins.d.ts +85 -85
  56. package/dist/db/ColumnPlugins.js +17 -19
  57. package/dist/db/ColumnPlugins.js.map +1 -1
  58. package/dist/db/DocumentationPlugin.d.ts +6 -6
  59. package/dist/db/DocumentationPlugin.js +17 -49
  60. package/dist/db/DocumentationPlugin.js.map +1 -1
  61. package/dist/db/RecordPlugin.d.ts +7 -101
  62. package/dist/db/RecordPlugin.js +25 -24
  63. package/dist/db/RecordPlugin.js.map +1 -1
  64. package/dist/db/TablePlugin.d.ts +9 -610
  65. package/dist/db/TablePlugin.js +185 -84
  66. package/dist/db/TablePlugin.js.map +1 -1
  67. package/dist/scriptedRESTAPI/RESTDeserializationUtils.d.ts +0 -2
  68. package/dist/scriptedRESTAPI/RESTDeserializationUtils.js +17 -18
  69. package/dist/scriptedRESTAPI/RESTDeserializationUtils.js.map +1 -1
  70. package/dist/scriptedRESTAPI/RESTSerializationUtils.d.ts +1 -3
  71. package/dist/scriptedRESTAPI/RESTSerializationUtils.js +0 -1
  72. package/dist/scriptedRESTAPI/RESTSerializationUtils.js.map +1 -1
  73. package/dist/scriptedRESTAPI/RestApiPlugin.d.ts +3 -4
  74. package/dist/scriptedRESTAPI/RestApiPlugin.js +7 -33
  75. package/dist/scriptedRESTAPI/RestApiPlugin.js.map +1 -1
  76. package/dist/scriptedRESTAPI/RestUtils.d.ts +1 -10
  77. package/dist/scriptedRESTAPI/RestUtils.js +11 -35
  78. package/dist/scriptedRESTAPI/RestUtils.js.map +1 -1
  79. package/dist/scripts/ClientScriptPlugin.d.ts +3 -4
  80. package/dist/scripts/ClientScriptPlugin.js +11 -37
  81. package/dist/scripts/ClientScriptPlugin.js.map +1 -1
  82. package/dist/uxf/ExperiencePlugin.d.ts +2 -2
  83. package/dist/uxf/RoutesPlugin.d.ts +2 -2
  84. package/dist/uxf/RoutesPlugin.js +2 -3
  85. package/dist/uxf/RoutesPlugin.js.map +1 -1
  86. package/dist/uxf/tectonicIdGenerator.d.ts +1 -1
  87. package/dist/uxf/tectonicIdGenerator.js +5 -28
  88. package/dist/uxf/tectonicIdGenerator.js.map +1 -1
  89. package/package.json +6 -8
  90. package/src/AttachmentPlugin.ts +5 -7
  91. package/src/BusinessRulePlugin.ts +12 -6
  92. package/src/CrossScopePrivilegePlugin.ts +2 -3
  93. package/src/DefaultPlugin.ts +22 -26
  94. package/src/HtmlTemplatePlugin.ts +2 -2
  95. package/src/IdPlugin.ts +6 -10
  96. package/src/JsonPlugin.ts +7 -12
  97. package/src/ListPlugin.ts +20 -22
  98. package/src/NowConfigPlugin.ts +10 -13
  99. package/src/PackageJsonPlugin.ts +1 -1
  100. package/src/PropertyPlugin.ts +8 -14
  101. package/src/ScriptTemplatePlugin.ts +1 -1
  102. package/src/ServerModulePlugin.ts +15 -20
  103. package/src/aclAndRole/AclPlugin.ts +37 -6
  104. package/src/aclAndRole/RolePlugin.ts +7 -9
  105. package/src/aclAndRole/Util.ts +2 -2
  106. package/src/app/ApplicationMenuPlugin.ts +3 -4
  107. package/src/atf/TestPlugin.ts +3 -3
  108. package/src/db/ColumnPlugins.ts +20 -22
  109. package/src/db/DocumentationPlugin.ts +7 -41
  110. package/src/db/RecordPlugin.ts +23 -26
  111. package/src/db/TablePlugin.ts +222 -115
  112. package/src/scriptedRESTAPI/RESTDeserializationUtils.ts +18 -19
  113. package/src/scriptedRESTAPI/RESTSerializationUtils.ts +1 -1
  114. package/src/scriptedRESTAPI/RestApiPlugin.ts +15 -18
  115. package/src/scriptedRESTAPI/RestUtils.ts +7 -7
  116. package/src/scripts/ClientScriptPlugin.ts +10 -12
  117. package/src/uxf/RoutesPlugin.ts +2 -3
  118. package/src/uxf/tectonicIdGenerator.ts +3 -6
@@ -6,7 +6,6 @@ import {
6
6
  isGUID,
7
7
  removeNode,
8
8
  transformFunctionArguments,
9
- fixFunctionArgumentTypes,
10
9
  unloadBuilder,
11
10
  linkDocument,
12
11
  generateCallExpressionExportForDocument,
@@ -20,10 +19,10 @@ import {
20
19
  ObjectData,
21
20
  } from '@servicenow/sdk-build-core'
22
21
  import { z } from 'zod'
23
- import { CallExpression, SyntaxKind } from 'ts-morph'
22
+ import { ts } from '@servicenow/sdk-project'
24
23
 
25
24
  // TODO: This schema should live with the Record entity function itself
26
- export const RecordEntitySchema = z.object({
25
+ const RecordEntitySchema = z.object({
27
26
  $id: z.string().or(z.number()),
28
27
  data: z.record(z.any()),
29
28
  table: z.string(),
@@ -43,17 +42,15 @@ export const TextStringSchema = z.object({ '#text': z.string() }).transform((val
43
42
  export const TextBooleanSchema = z.object({ '#text': z.boolean() }).transform((val) => val['#text'])
44
43
  export const TextNumberSchema = z.object({ '#text': z.number().or(z.literal('')) }).transform((val) => val['#text'])
45
44
 
46
- const SysJournalFieldSchema = z.object({
47
- element: TextStringSchema,
48
- element_id: TextStringSchema,
49
- name: TextStringSchema,
50
- sys_id: TextStringSchema,
51
- value: TextStringSchema,
52
- })
53
-
54
- export type SysJournalField = z.infer<typeof SysJournalFieldSchema>
55
-
56
- const ignoreTables = ['sys_metadata_link', 'sys_module', 'sys_ux_lib_asset', 'sys_app', 'sys_store_app']
45
+ const ignoreTables = [
46
+ 'sys_metadata_link',
47
+ 'sys_module',
48
+ 'sys_ux_lib_asset',
49
+ 'sys_app',
50
+ 'sys_store_app',
51
+ 'ua_table_licensing_config',
52
+ 'sys_index',
53
+ ]
57
54
  const ignoreFields = [
58
55
  'sys_created_by',
59
56
  'sys_created_on',
@@ -89,7 +86,7 @@ export const RecordXmlSchema = z
89
86
  )
90
87
  )
91
88
 
92
- export const RecordDocumentSchema = z.object({
89
+ const RecordDocumentSchema = z.object({
93
90
  data: z.record(z.union([z.string(), z.number(), z.boolean(), z.undefined(), z.null()])),
94
91
  table: z.string(),
95
92
  })
@@ -123,11 +120,11 @@ export const RecordPlugin = Plugin({
123
120
  (record): record is Record => RecordEntitySchema.safeParse(record).success
124
121
  )
125
122
 
126
- if (!result.handled || !(0 in result.data)) {
123
+ if (!result.handled || !result.data) {
127
124
  return result
128
125
  }
129
126
 
130
- const record = result.data[0]
127
+ const record = result.data
131
128
  const diagnostics = result.diagnostics
132
129
  const tableName = record.getProperty('table').getValue()
133
130
  const pluginInfo = context.getPluginForTable(tableName)
@@ -135,7 +132,7 @@ export const RecordPlugin = Plugin({
135
132
  if (pluginInfo) {
136
133
  const { logLevel, api } = pluginInfo
137
134
  const tableNode = node
138
- .getFirstChildByKindOrThrow(SyntaxKind.ObjectLiteralExpression)
135
+ .getFirstChildByKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
139
136
  .getPropertyOrThrow('table')
140
137
 
141
138
  diagnostics.push(
@@ -152,10 +149,10 @@ export const RecordPlugin = Plugin({
152
149
  if (tableName === 'sys_ui_view') {
153
150
  const viewName = record.getProperty('data').getProperty('name')?.getValue()
154
151
  const viewDataNode = node
155
- .getFirstChildByKindOrThrow(SyntaxKind.ObjectLiteralExpression)
152
+ .getFirstChildByKindOrThrow(ts.SyntaxKind.ObjectLiteralExpression)
156
153
  .getPropertyOrThrow('data')
157
- .asKindOrThrow(SyntaxKind.PropertyAssignment)
158
- .getInitializerIfKind(SyntaxKind.ObjectLiteralExpression)
154
+ .asKindOrThrow(ts.SyntaxKind.PropertyAssignment)
155
+ .getInitializerIfKind(ts.SyntaxKind.ObjectLiteralExpression)
159
156
 
160
157
  const viewNameNode = viewDataNode?.getPropertyOrThrow('name')
161
158
  const nameRegex = new RegExp(`^[a-zA-Z0-9_]+$`)
@@ -173,7 +170,7 @@ export const RecordPlugin = Plugin({
173
170
  return {
174
171
  handled: true,
175
172
  diagnostics,
176
- data: [record],
173
+ data: record,
177
174
  }
178
175
  },
179
176
  },
@@ -318,7 +315,7 @@ export const RecordPlugin = Plugin({
318
315
  },
319
316
  Record,
320
317
  { $id: document.guid }
321
- ).getExpressionIfKindOrThrow(SyntaxKind.CallExpression)
318
+ ).getExpressionIfKindOrThrow(ts.SyntaxKind.CallExpression)
322
319
  )
323
320
  },
324
321
  },
@@ -358,7 +355,7 @@ export const RecordPlugin = Plugin({
358
355
  data: properties,
359
356
  })
360
357
 
361
- fixFunctionArgumentTypes(context, document.node)
358
+ context.argTypesToFix.push(document.node)
362
359
  return true
363
360
  },
364
361
  },
@@ -373,7 +370,7 @@ export function extractCallExpressionAsRecord<
373
370
  fn: (...args: A) => E,
374
371
  asRecord: (entity: EntityData<E>) => ObjectData<Record<T>>,
375
372
  guid: (entity: E) => string,
376
- node: CallExpression,
373
+ node: ts.CallExpression,
377
374
  context: Context
378
375
  ): ExtractionResult<EntityData<Record<T>>> {
379
376
  const result = extractCallExpression(fn, 'record', node, context, guid)
@@ -384,6 +381,6 @@ export function extractCallExpressionAsRecord<
384
381
  return {
385
382
  handled: true,
386
383
  diagnostics: result.diagnostics,
387
- data: result.data.map((d) => new EntityData('record', d.getGuid(), asRecord(d), node), node),
384
+ data: result.data ? new EntityData('record', result.data.getGuid(), asRecord(result.data), node) : undefined,
388
385
  }
389
386
  }