@servicenow/sdk-build-plugins 4.3.0 → 4.4.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 (64) hide show
  1. package/dist/acl-plugin.js +2 -0
  2. package/dist/acl-plugin.js.map +1 -1
  3. package/dist/column/column-to-record.d.ts +10 -3
  4. package/dist/column/column-to-record.js +44 -7
  5. package/dist/column/column-to-record.js.map +1 -1
  6. package/dist/column-plugin.d.ts +3 -1
  7. package/dist/column-plugin.js +11 -11
  8. package/dist/column-plugin.js.map +1 -1
  9. package/dist/flow/plugins/flow-instance-plugin.js +285 -10
  10. package/dist/flow/plugins/flow-instance-plugin.js.map +1 -1
  11. package/dist/flow/plugins/flow-trigger-instance-plugin.js +21 -7
  12. package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -1
  13. package/dist/flow/utils/flow-constants.d.ts +7 -0
  14. package/dist/flow/utils/flow-constants.js +12 -5
  15. package/dist/flow/utils/flow-constants.js.map +1 -1
  16. package/dist/flow/utils/service-catalog.d.ts +47 -0
  17. package/dist/flow/utils/service-catalog.js +137 -0
  18. package/dist/flow/utils/service-catalog.js.map +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/now-attach-plugin.js +7 -10
  21. package/dist/now-attach-plugin.js.map +1 -1
  22. package/dist/now-ref-plugin.js +1 -1
  23. package/dist/now-ref-plugin.js.map +1 -1
  24. package/dist/server-module-plugin/index.d.ts +10 -0
  25. package/dist/server-module-plugin/index.js +45 -55
  26. package/dist/server-module-plugin/index.js.map +1 -1
  27. package/dist/service-catalog/sc-record-producer-plugin.js +1 -0
  28. package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -1
  29. package/dist/service-catalog/service-catalog-base.js +2 -2
  30. package/dist/service-catalog/service-catalog-base.js.map +1 -1
  31. package/dist/service-catalog/service-catalog-diagnostics.js +4 -1
  32. package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -1
  33. package/dist/service-catalog/shape-to-record.d.ts +1 -0
  34. package/dist/service-catalog/shape-to-record.js +4 -1
  35. package/dist/service-catalog/shape-to-record.js.map +1 -1
  36. package/dist/service-catalog/utils.d.ts +10 -0
  37. package/dist/service-catalog/utils.js +72 -0
  38. package/dist/service-catalog/utils.js.map +1 -1
  39. package/dist/static-content-plugin.js +25 -2
  40. package/dist/static-content-plugin.js.map +1 -1
  41. package/dist/table-plugin.js +16 -13
  42. package/dist/table-plugin.js.map +1 -1
  43. package/dist/ui-page-plugin.js +832 -19
  44. package/dist/ui-page-plugin.js.map +1 -1
  45. package/package.json +5 -5
  46. package/src/acl-plugin.ts +2 -0
  47. package/src/column/column-to-record.ts +54 -8
  48. package/src/column-plugin.ts +28 -12
  49. package/src/flow/plugins/flow-instance-plugin.ts +364 -13
  50. package/src/flow/plugins/flow-trigger-instance-plugin.ts +25 -7
  51. package/src/flow/utils/flow-constants.ts +13 -4
  52. package/src/flow/utils/service-catalog.ts +174 -0
  53. package/src/index.ts +0 -1
  54. package/src/now-attach-plugin.ts +10 -11
  55. package/src/now-ref-plugin.ts +1 -1
  56. package/src/server-module-plugin/index.ts +59 -69
  57. package/src/service-catalog/sc-record-producer-plugin.ts +1 -1
  58. package/src/service-catalog/service-catalog-base.ts +2 -2
  59. package/src/service-catalog/service-catalog-diagnostics.ts +4 -1
  60. package/src/service-catalog/shape-to-record.ts +6 -2
  61. package/src/service-catalog/utils.ts +93 -0
  62. package/src/static-content-plugin.ts +25 -2
  63. package/src/table-plugin.ts +30 -14
  64. package/src/ui-page-plugin.ts +1063 -20
@@ -16,10 +16,16 @@ import {
16
16
  } from '@servicenow/sdk-build-core'
17
17
  import { XMLParser } from 'fast-xml-parser'
18
18
  import { z } from 'zod'
19
- import { columnToCallExpression, generatePlural, isDefaultDocumentation } from './column-plugin'
19
+ import {
20
+ BCP47_LANGUAGE_TAG_PATTERN,
21
+ columnToCallExpression,
22
+ generatePlural,
23
+ isDefaultDocumentation,
24
+ } from './column-plugin'
20
25
  import { create } from 'xmlbuilder2'
21
26
  import type { XMLBuilder } from 'xmlbuilder2/lib/interfaces'
22
27
  import { addFieldsToColumn } from './column/column-helper'
28
+ import { getLabelForDefaultLanguage } from './column/column-to-record'
23
29
  import { generateDeprecatedDiagnostics } from './utils'
24
30
  import isEqual from 'lodash/isEqual'
25
31
 
@@ -367,7 +373,7 @@ export const TablePlugin = Plugin.create({
367
373
  files: [
368
374
  {
369
375
  matcher: /\.xml$/,
370
- async toRecord(file, { factory }) {
376
+ async toRecord(file, { factory, config }) {
371
377
  const xml = new XMLParser({
372
378
  ignoreAttributes: false,
373
379
  alwaysCreateTextNode: true,
@@ -383,7 +389,7 @@ export const TablePlugin = Plugin.create({
383
389
  return { success: false }
384
390
  }
385
391
 
386
- const recordDefs = tableDefToRecordProperties(tableDef)
392
+ const recordDefs = tableDefToRecordProperties(tableDef, config.tableDefaultLanguage)
387
393
  const records: Record[] = []
388
394
  for (const [key, table] of [
389
395
  ['sysDbObject', 'sys_db_object'],
@@ -463,7 +469,7 @@ export const TablePlugin = Plugin.create({
463
469
  via: 'super_class',
464
470
  },
465
471
  },
466
- toShape(record, { descendants }) {
472
+ toShape(record, { descendants, config }) {
467
473
  const schema: { [key: string]: CallExpressionShape } = {}
468
474
  let displayColumn: string | undefined
469
475
  const columns = descendants.query('sys_dictionary')
@@ -482,6 +488,7 @@ export const TablePlugin = Plugin.create({
482
488
  documentation: documentation.filter(
483
489
  (d) => d.get('element').ifString()?.getValue() === columnName
484
490
  ),
491
+ tableDefaultLanguage: config.tableDefaultLanguage,
485
492
  })
486
493
  if (column.get('display').ifDefined()?.toBoolean().getValue()) {
487
494
  displayColumn = columnName
@@ -620,14 +627,15 @@ export const TablePlugin = Plugin.create({
620
627
  label: $.map(
621
628
  (label) =>
622
629
  label.ifString() ??
623
- (tableDocumentation.length && !isDefaultDocumentation('', tableDocumentation)
630
+ (tableDocumentation.length &&
631
+ !isDefaultDocumentation('', tableDocumentation, config.tableDefaultLanguage)
624
632
  ? tableDocumentation.map((doc) =>
625
633
  doc
626
634
  .transform(({ $ }) => ({
627
635
  label: $.def(''),
628
636
  help: $.def(''),
629
637
  hint: $.def(''),
630
- language: $.def(''),
638
+ language: $.def(config.tableDefaultLanguage),
631
639
  plural: $.def(''),
632
640
  url: $.def(''),
633
641
  urlTarget: $.from('url_target').def(''),
@@ -876,7 +884,12 @@ export const TablePlugin = Plugin.create({
876
884
 
877
885
  const documentationFiles = await generateRecordXml(
878
886
  documentation.filter(
879
- (doc) => !isDefaultDocumentation(doc.get('element')?.toString().getValue(), [doc])
887
+ (doc) =>
888
+ !isDefaultDocumentation(
889
+ doc.get('element')?.toString().getValue(),
890
+ [doc],
891
+ config.tableDefaultLanguage
892
+ )
880
893
  ),
881
894
  config,
882
895
  transform
@@ -1142,10 +1155,10 @@ export const TablePlugin = Plugin.create({
1142
1155
  generateDeprecatedDiagnostics(docObject, diagnostics)
1143
1156
  const language = docObject.get('language').ifString()?.getValue()
1144
1157
  if (language) {
1145
- if (language.length !== 2) {
1158
+ if (!BCP47_LANGUAGE_TAG_PATTERN.test(language)) {
1146
1159
  diagnostics.error(
1147
1160
  doc.getOriginalNode(),
1148
- `'language' must be a 2 character identifier (Ex. 'en', 'es')`
1161
+ `'language' must be a valid BCP 47 language tag (e.g., 'en', 'es', 'en-US', 'zh-Hans')`
1149
1162
  )
1150
1163
  }
1151
1164
  if (languages.has(language)) {
@@ -1179,7 +1192,7 @@ export const TablePlugin = Plugin.create({
1179
1192
  properties: {
1180
1193
  name: tableName,
1181
1194
  element: undefined,
1182
- language: 'en',
1195
+ language: config.tableDefaultLanguage,
1183
1196
  label: table.get('label').ifString() ?? tableName,
1184
1197
  plural: generatePlural(
1185
1198
  table.get('label')?.ifString()?.getValue() ?? tableName.getValue()
@@ -1278,7 +1291,7 @@ export const TablePlugin = Plugin.create({
1278
1291
  .map((actions) => hasAction('create', actions))
1279
1292
  .def(false),
1280
1293
  is_extendable: $.from('extensible').toBoolean().def(false),
1281
- label: $.map((label) => (label.isString() ? label.asString() : undefined)),
1294
+ label: $.map((label) => getLabelForDefaultLanguage(label, config.tableDefaultLanguage)),
1282
1295
  live_feed_enabled: $.from('liveFeed').toBoolean().def(false),
1283
1296
  name: $,
1284
1297
  scriptable_table: $.from('scriptableTable').toBoolean().def(false),
@@ -1446,7 +1459,10 @@ function parseTableBootstrapXml(xml: unknown): TableDefinition | null {
1446
1459
  }
1447
1460
  }
1448
1461
 
1449
- function tableDefToRecordProperties(tableDef: TableDefinition): {
1462
+ function tableDefToRecordProperties(
1463
+ tableDef: TableDefinition,
1464
+ tableDefaultLanguage: string = 'en'
1465
+ ): {
1450
1466
  sysDbObject: SysDbObjectProperties
1451
1467
  sysDictionary: SysDictionaryProperties[]
1452
1468
  sysChoice: SysChoiceProperties[]
@@ -1481,7 +1497,7 @@ function tableDefToRecordProperties(tableDef: TableDefinition): {
1481
1497
  element: undefined,
1482
1498
  label: tableDef.label,
1483
1499
  plural: tableDef.plural,
1484
- language: 'en',
1500
+ language: tableDefaultLanguage,
1485
1501
  hint: undefined,
1486
1502
  help: undefined,
1487
1503
  })
@@ -1558,7 +1574,7 @@ function tableDefToRecordProperties(tableDef: TableDefinition): {
1558
1574
  element: column.name,
1559
1575
  label: column.columnLabel || column.name,
1560
1576
  plural: column.plural || generatePlural(column.columnLabel || column.name),
1561
- language: 'en',
1577
+ language: tableDefaultLanguage,
1562
1578
  hint: column.hint,
1563
1579
  help: column.help,
1564
1580
  })