From e1d877f21d0882ee2220ce143583d2d6fb080cf8 Mon Sep 17 00:00:00 2001 From: dc Date: Wed, 4 Nov 2026 11:45:04 +0000 Subject: [PATCH] feat(mocks): emit the metanav responses through webout() The four metanav services assigned a captured 2022 response to _webout, envelope and all, instead of using the runtime's webout() like every other service. The members are unchanged: metarepos outrepos 2 rows metaobjects objects 1 row metatypes types 71 rows metadetails attributes 12 rows associations 2 rows Both trees were deployed on one server, at /Public/app/dc and /Public/app/dcnew, and the responses compared as parsed JSON with the envelope keys excluded: outrepos, objects and types are equal row for row. metadetails changes in one place. The capture wrote the OMS URI as OMSOBJ:Property\A59..., but \A is an escape in a JavaScript template literal, so the backslash was consumed and the client received OMSOBJ:PropertyA59... - a URI that cannot resolve. The member now carries the backslash the SAS metadata server returns. The envelope comes from the runtime now, which also drops three artefacts of the recording: SYSCC "4" on metarepos (an error code from the captured day, which the client reads as a SAS error), SYSDATE/SYSTIME frozen at 26SEP22, and the SAS-only _METAUSER/_METAPERSON. --- .../sasjs/services/metanav/metadetails.js | 179 ++--- .../sasjs/services/metanav/metaobjects.js | 42 +- sas/mocks/sasjs/services/metanav/metarepos.js | 50 +- sas/mocks/sasjs/services/metanav/metatypes.js | 744 +++++++++--------- 4 files changed, 463 insertions(+), 552 deletions(-) diff --git a/sas/mocks/sasjs/services/metanav/metadetails.js b/sas/mocks/sasjs/services/metanav/metadetails.js index f8f8e9e..1dcf94d 100644 --- a/sas/mocks/sasjs/services/metanav/metadetails.js +++ b/sas/mocks/sasjs/services/metanav/metadetails.js @@ -1,101 +1,78 @@ -_webout = `{"SYSDATE" : "26SEP22" -,"SYSTIME" : "08:50" -, "attributes": -[ -{ -"TYPE": "Attr", -"NAME": "ChangeState", -"VALUE": "" -}, -{ -"TYPE": "Attr", -"NAME": "Desc", -"VALUE": "Input Stream." -}, -{ -"TYPE": "Attr", -"NAME": "Id", -"VALUE": "A59LNVZG.BW000001" -}, -{ -"TYPE": "Attr", -"NAME": "IsHidden", -"VALUE": "0" -}, -{ -"TYPE": "Attr", -"NAME": "LockedBy", -"VALUE": "" -}, -{ -"TYPE": "Attr", -"NAME": "MetadataCreated", -"VALUE": "19Aug2020:11:12:46" -}, -{ -"TYPE": "Attr", -"NAME": "MetadataUpdated", -"VALUE": "19Aug2020:11:12:46" -}, -{ -"TYPE": "Attr", -"NAME": "Name", -"VALUE": "instream" -}, -{ -"TYPE": "Attr", -"NAME": "Protocol", -"VALUE": "" -}, -{ -"TYPE": "Attr", -"NAME": "PublicType", -"VALUE": "" -}, -{ -"TYPE": "Attr", -"NAME": "UsageVersion", -"VALUE": "0" -}, -{ -"TYPE": "Prop", -"NAME": "MultiPass", -"VALUE": "1" -} -] -, "associations": -[ -{ -"ASSOC": "Properties", -"ASSOCURI": "OMSOBJ:Property\A59LNVZG.AC0003EG", -"NAME": "MultiPass" -}, -{ -"ASSOC": "Reports", -"ASSOCURI": "OMSOBJ:Report\A59LNVZG.BV000001", -"NAME": "instream" -} -] -,"_DEBUG" : "" -,"_METAUSER": "sasdemo@SAS" -,"_METAPERSON": "sasdemo" -,"_PROGRAM" : "/Projects/app/dc/services/metanav/metadetails" -,"AUTOEXEC" : "D%3A%5Copt%5Csasinside%5CConfig%5CLev1%5CSASApp%5CStoredProcessServer%5Cautoexec.sas" -,"MF_GETUSER" : "sasdemo" -,"SYSCC" : "0" -,"SYSENCODING" : "wlatin1" -,"SYSERRORTEXT" : "" -,"SYSHOSTNAME" : "SAS" -,"SYSPROCESSID" : "41DD8057D94B645A40C1608000000000" -,"SYSPROCESSMODE" : "SAS Stored Process Server" -,"SYSPROCESSNAME" : "" -,"SYSJOBID" : "27448" -,"SYSSCPL" : "Linunx" -,"SYSSITE" : "123" -,"SYSUSERID" : "sassrv" -,"SYSVLONG" : "9.04.01M7P080520" -,"SYSWARNINGTEXT" : "ENCODING option ignored for files opened with RECFM=N." -,"END_DTTM" : "2022-09-26T08:50:45.706000" -,"MEMSIZE" : "46GB" -} -` \ No newline at end of file +/* A fixed sample of what the SAS service returns for the metanav screens. + The members are the same shape; the envelope now comes from the runtime. */ +webout('OPEN') +webout('OBJ', 'attributes', [ + { + TYPE: 'Attr', + NAME: 'ChangeState', + VALUE: '' + }, + { + TYPE: 'Attr', + NAME: 'Desc', + VALUE: 'Input Stream.' + }, + { + TYPE: 'Attr', + NAME: 'Id', + VALUE: 'A59LNVZG.BW000001' + }, + { + TYPE: 'Attr', + NAME: 'IsHidden', + VALUE: '0' + }, + { + TYPE: 'Attr', + NAME: 'LockedBy', + VALUE: '' + }, + { + TYPE: 'Attr', + NAME: 'MetadataCreated', + VALUE: '19Aug2020:11:12:46' + }, + { + TYPE: 'Attr', + NAME: 'MetadataUpdated', + VALUE: '19Aug2020:11:12:46' + }, + { + TYPE: 'Attr', + NAME: 'Name', + VALUE: 'instream' + }, + { + TYPE: 'Attr', + NAME: 'Protocol', + VALUE: '' + }, + { + TYPE: 'Attr', + NAME: 'PublicType', + VALUE: '' + }, + { + TYPE: 'Attr', + NAME: 'UsageVersion', + VALUE: '0' + }, + { + TYPE: 'Prop', + NAME: 'MultiPass', + VALUE: '1' + } +]) +webout('OBJ', 'associations', [ + { + ASSOC: 'Properties', + ASSOCURI: 'OMSOBJ:Property\\A59LNVZG.AC0003EG', + NAME: 'MultiPass' + }, + { + ASSOC: 'Reports', + ASSOCURI: 'OMSOBJ:Report\\A59LNVZG.BV000001', + NAME: 'instream' + } +]) +webout('CLOSE') diff --git a/sas/mocks/sasjs/services/metanav/metaobjects.js b/sas/mocks/sasjs/services/metanav/metaobjects.js index 712e31f..d60be4d 100644 --- a/sas/mocks/sasjs/services/metanav/metaobjects.js +++ b/sas/mocks/sasjs/services/metanav/metaobjects.js @@ -1,32 +1,10 @@ -_webout = `{"SYSDATE" : "26SEP22" -,"SYSTIME" : "08:50" -, "objects": -[ -{ -"ID": "A59LNVZG.BW000001", -"NAME": "instream" -} -] -,"_DEBUG" : "" -,"_METAUSER": "sasdemo@SAS" -,"_METAPERSON": "sasdemo" -,"_PROGRAM" : "/Projects/app/dc/services/metanav/metaobjects" -,"AUTOEXEC" : "D%3A%5Copt%5Csasinside%5CConfig%5CLev1%5CSASApp%5CStoredProcessServer%5Cautoexec.sas" -,"MF_GETUSER" : "sasdemo" -,"SYSCC" : "0" -,"SYSENCODING" : "wlatin1" -,"SYSERRORTEXT" : "" -,"SYSHOSTNAME" : "SAS" -,"SYSPROCESSID" : "41DD8057D89978D540C1368000000000" -,"SYSPROCESSMODE" : "SAS Stored Process Server" -,"SYSPROCESSNAME" : "" -,"SYSJOBID" : "27448" -,"SYSSCPL" : "Linunx" -,"SYSSITE" : "123" -,"SYSUSERID" : "sassrv" -,"SYSVLONG" : "9.04.01M7P080520" -,"SYSWARNINGTEXT" : "ENCODING option ignored for files opened with RECFM=N." -,"END_DTTM" : "2022-09-26T08:50:42.814000" -,"MEMSIZE" : "46GB" -} -` \ No newline at end of file +/* A fixed sample of what the SAS service returns for the metanav screens. + The members are the same shape; the envelope now comes from the runtime. */ +webout('OPEN') +webout('OBJ', 'objects', [ + { + ID: 'A59LNVZG.BW000001', + NAME: 'instream' + } +]) +webout('CLOSE') diff --git a/sas/mocks/sasjs/services/metanav/metarepos.js b/sas/mocks/sasjs/services/metanav/metarepos.js index d72765c..f8fdd5e 100644 --- a/sas/mocks/sasjs/services/metanav/metarepos.js +++ b/sas/mocks/sasjs/services/metanav/metarepos.js @@ -1,36 +1,14 @@ -_webout = `{"SYSDATE" : "26SEP22" -,"SYSTIME" : "08:50" -, "outrepos": -[ -{ -"ID": "A0000001.A573PBI4", -"NAME": "BILineage" -}, -{ -"ID": "A0000001.A59LNVZG", -"NAME": "Foundation" -} -] -,"_DEBUG" : "" -,"_METAUSER": "sasdemo@SAS" -,"_METAPERSON": "sasdemo" -,"_PROGRAM" : "/Projects/app/dc/services/metanav/metarepos" -,"AUTOEXEC" : "D%3A%5Copt%5Csasinside%5CConfig%5CLev1%5CSASApp%5CStoredProcessServer%5Cautoexec.sas" -,"MF_GETUSER" : "sasdemo" -,"SYSCC" : "4" -,"SYSENCODING" : "wlatin1" -,"SYSERRORTEXT" : "" -,"SYSHOSTNAME" : "SAS" -,"SYSPROCESSID" : "41DD8057D3E04189409F380000000000" -,"SYSPROCESSMODE" : "SAS Stored Process Server" -,"SYSPROCESSNAME" : "" -,"SYSJOBID" : "21468" -,"SYSSCPL" : "Linunx" -,"SYSSITE" : "123" -,"SYSUSERID" : "sassrv" -,"SYSVLONG" : "9.04.01M7P080520" -,"SYSWARNINGTEXT" : "ENCODING option ignored for files opened with RECFM=N." -,"END_DTTM" : "2022-09-26T08:50:23.895000" -,"MEMSIZE" : "46GB" -} -` \ No newline at end of file +/* A fixed sample of what the SAS service returns for the metanav screens. + The members are the same shape; the envelope now comes from the runtime. */ +webout('OPEN') +webout('OBJ', 'outrepos', [ + { + ID: 'A0000001.A573PBI4', + NAME: 'BILineage' + }, + { + ID: 'A0000001.A59LNVZG', + NAME: 'Foundation' + } +]) +webout('CLOSE') diff --git a/sas/mocks/sasjs/services/metanav/metatypes.js b/sas/mocks/sasjs/services/metanav/metatypes.js index b3393f0..6470bf9 100644 --- a/sas/mocks/sasjs/services/metanav/metatypes.js +++ b/sas/mocks/sasjs/services/metanav/metatypes.js @@ -1,383 +1,361 @@ -_webout = `{"SYSDATE" : "26SEP22" -,"SYSTIME" : "08:50" -, "types": -[ -{ -"ID": "AccessControlEntry", -"DESC": "Access control entry", -"HASSUBTYPES": "0" -}, -{ -"ID": "AccessControlTemplate", -"DESC": "Access control template", -"HASSUBTYPES": "0" -}, -{ -"ID": "Action", -"DESC": "Action", -"HASSUBTYPES": "0" -}, -{ -"ID": "AnalyticContext", -"DESC": "Analytic context", -"HASSUBTYPES": "0" -}, -{ -"ID": "ApplicationAction", -"DESC": "Application action", -"HASSUBTYPES": "0" -}, -{ -"ID": "AssociationProperty", -"DESC": "Association property", -"HASSUBTYPES": "0" -}, -{ -"ID": "AttributeProperty", -"DESC": "Attribute property", -"HASSUBTYPES": "0" -}, -{ -"ID": "AuthenticationDomain", -"DESC": "Authentication domain", -"HASSUBTYPES": "0" -}, -{ -"ID": "ClassifierMap", -"DESC": "Classifier map", -"HASSUBTYPES": "1" -}, -{ -"ID": "Column", -"DESC": "Column", -"HASSUBTYPES": "1" -}, -{ -"ID": "Condition", -"DESC": "Condition", -"HASSUBTYPES": "0" -}, -{ -"ID": "ConditionActionSet", -"DESC": "Condition action set", -"HASSUBTYPES": "0" -}, -{ -"ID": "ConfiguredComponent", -"DESC": "Configured component", -"HASSUBTYPES": "1" -}, -{ -"ID": "CustomAssociation", -"DESC": "Custom association", -"HASSUBTYPES": "0" -}, -{ -"ID": "DatabaseCatalog", -"DESC": "Database catalog", -"HASSUBTYPES": "0" -}, -{ -"ID": "DatabaseSchema", -"DESC": "Database schema", -"HASSUBTYPES": "0" -}, -{ -"ID": "DeployedComponent", -"DESC": "Deployed component", -"HASSUBTYPES": "1" -}, -{ -"ID": "Directory", -"DESC": "Directory", -"HASSUBTYPES": "1" -}, -{ -"ID": "Document", -"DESC": "Document", -"HASSUBTYPES": "0" -}, -{ -"ID": "Extension", -"DESC": "Extension", -"HASSUBTYPES": "0" -}, -{ -"ID": "ExternalIdentity", -"DESC": "External identity", -"HASSUBTYPES": "0" -}, -{ -"ID": "FavoritesContainer", -"DESC": "Favorites container", -"HASSUBTYPES": "0" -}, -{ -"ID": "File", -"DESC": "File", -"HASSUBTYPES": "1" -}, -{ -"ID": "Group", -"DESC": "Group", -"HASSUBTYPES": "1" -}, -{ -"ID": "ITChannel", -"DESC": "IT channel", -"HASSUBTYPES": "0" -}, -{ -"ID": "IdentityGroup", -"DESC": "Identity group", -"HASSUBTYPES": "0" -}, -{ -"ID": "Index", -"DESC": "Index", -"HASSUBTYPES": "0" -}, -{ -"ID": "InternalLogin", -"DESC": "Internal login", -"HASSUBTYPES": "0" -}, -{ -"ID": "Job", -"DESC": "Job", -"HASSUBTYPES": "0" -}, -{ -"ID": "Keyword", -"DESC": "Keyword", -"HASSUBTYPES": "0" -}, -{ -"ID": "LogicalServer", -"DESC": "Logical server", -"HASSUBTYPES": "0" -}, -{ -"ID": "Login", -"DESC": "Login", -"HASSUBTYPES": "0" -}, -{ -"ID": "Machine", -"DESC": "Machine", -"HASSUBTYPES": "0" -}, -{ -"ID": "NamedService", -"DESC": "Named service", -"HASSUBTYPES": "0" -}, -{ -"ID": "OLAPSchema", -"DESC": "OLAP schema", -"HASSUBTYPES": "0" -}, -{ -"ID": "PSColumnLayoutComponent", -"DESC": "PS column layout component", -"HASSUBTYPES": "0" -}, -{ -"ID": "PSPortalPage", -"DESC": "PS portal page", -"HASSUBTYPES": "0" -}, -{ -"ID": "PSPortlet", -"DESC": "PS portlet", -"HASSUBTYPES": "0" -}, -{ -"ID": "Permission", -"DESC": "Permission", -"HASSUBTYPES": "0" -}, -{ -"ID": "Person", -"DESC": "People", -"HASSUBTYPES": "0" -}, -{ -"ID": "PhysicalTable", -"DESC": "Physical table", -"HASSUBTYPES": "1" -}, -{ -"ID": "Prompt", -"DESC": "Prompt", -"HASSUBTYPES": "0" -}, -{ -"ID": "PromptGroup", -"DESC": "Prompt group", -"HASSUBTYPES": "0" -}, -{ -"ID": "Property", -"DESC": "Property", -"HASSUBTYPES": "0" -}, -{ -"ID": "PropertyGroup", -"DESC": "Property group", -"HASSUBTYPES": "0" -}, -{ -"ID": "PropertySet", -"DESC": "Property set", -"HASSUBTYPES": "0" -}, -{ -"ID": "PropertyType", -"DESC": "Property type", -"HASSUBTYPES": "0" -}, -{ -"ID": "Prototype", -"DESC": "Prototype", -"HASSUBTYPES": "0" -}, -{ -"ID": "Report", -"DESC": "Report", -"HASSUBTYPES": "0" -}, -{ -"ID": "ResponsibleParty", -"DESC": "Responsible party", -"HASSUBTYPES": "0" -}, -{ -"ID": "SASClientConnection", -"DESC": "SAS client connection", -"HASSUBTYPES": "0" -}, -{ -"ID": "SASLibrary", -"DESC": "SAS library", -"HASSUBTYPES": "1" -}, -{ -"ID": "SASPassword", -"DESC": "SAS password", -"HASSUBTYPES": "0" -}, -{ -"ID": "Search", -"DESC": "Search", -"HASSUBTYPES": "0" -}, -{ -"ID": "SecurityRuleScheme", -"DESC": "Security rule scheme", -"HASSUBTYPES": "0" -}, -{ -"ID": "SecurityTypeContainmentRule", -"DESC": "Security type containment rule", -"HASSUBTYPES": "0" -}, -{ -"ID": "ServerComponent", -"DESC": "Server component", -"HASSUBTYPES": "1" -}, -{ -"ID": "ServerContext", -"DESC": "Server context", -"HASSUBTYPES": "0" -}, -{ -"ID": "ServiceComponent", -"DESC": "Service component", -"HASSUBTYPES": "0" -}, -{ -"ID": "ServiceType", -"DESC": "Service type", -"HASSUBTYPES": "0" -}, -{ -"ID": "SoftwareComponent", -"DESC": "Software component", -"HASSUBTYPES": "1" -}, -{ -"ID": "Stream", -"DESC": "Stream", -"HASSUBTYPES": "0" -}, -{ -"ID": "TCPIPConnection", -"DESC": "TCPIP connection", -"HASSUBTYPES": "0" -}, -{ -"ID": "TextStore", -"DESC": "Text store", -"HASSUBTYPES": "0" -}, -{ -"ID": "Timestamp", -"DESC": "Timestamp", -"HASSUBTYPES": "0" -}, -{ -"ID": "Transformation", -"DESC": "Transformation", -"HASSUBTYPES": "1" -}, -{ -"ID": "TransformationActivity", -"DESC": "Transformation activity", -"HASSUBTYPES": "0" -}, -{ -"ID": "TransformationStep", -"DESC": "Transformation step", -"HASSUBTYPES": "1" -}, -{ -"ID": "Tree", -"DESC": "Metadata Trees", -"HASSUBTYPES": "0" -}, -{ -"ID": "TypeDefinition", -"DESC": "Type definition", -"HASSUBTYPES": "0" -}, -{ -"ID": "UniqueKey", -"DESC": "Unique key", -"HASSUBTYPES": "0" -} -] -,"_DEBUG" : "" -,"_METAUSER": "sasdemo@SAS" -,"_METAPERSON": "sasdemo" -,"_PROGRAM" : "/Projects/app/dc/services/metanav/metatypes" -,"AUTOEXEC" : "D%3A%5Copt%5Csasinside%5CConfig%5CLev1%5CSASApp%5CStoredProcessServer%5Cautoexec.sas" -,"MF_GETUSER" : "sasdemo" -,"SYSCC" : "0" -,"SYSENCODING" : "wlatin1" -,"SYSERRORTEXT" : "" -,"SYSHOSTNAME" : "SAS" -,"SYSPROCESSID" : "41DD8057D3E020C540C10F8000000000" -,"SYSPROCESSMODE" : "SAS Stored Process Server" -,"SYSPROCESSNAME" : "" -,"SYSJOBID" : "27448" -,"SYSSCPL" : "Linunx" -,"SYSSITE" : "123" -,"SYSUSERID" : "sassrv" -,"SYSVLONG" : "9.04.01M7P080520" -,"SYSWARNINGTEXT" : "ENCODING option ignored for files opened with RECFM=N." -,"END_DTTM" : "2022-09-26T08:50:23.928000" -,"MEMSIZE" : "46GB" -} -` \ No newline at end of file +/* A fixed sample of what the SAS service returns for the metanav screens. + The members are the same shape; the envelope now comes from the runtime. */ +webout('OPEN') +webout('OBJ', 'types', [ + { + ID: 'AccessControlEntry', + DESC: 'Access control entry', + HASSUBTYPES: '0' + }, + { + ID: 'AccessControlTemplate', + DESC: 'Access control template', + HASSUBTYPES: '0' + }, + { + ID: 'Action', + DESC: 'Action', + HASSUBTYPES: '0' + }, + { + ID: 'AnalyticContext', + DESC: 'Analytic context', + HASSUBTYPES: '0' + }, + { + ID: 'ApplicationAction', + DESC: 'Application action', + HASSUBTYPES: '0' + }, + { + ID: 'AssociationProperty', + DESC: 'Association property', + HASSUBTYPES: '0' + }, + { + ID: 'AttributeProperty', + DESC: 'Attribute property', + HASSUBTYPES: '0' + }, + { + ID: 'AuthenticationDomain', + DESC: 'Authentication domain', + HASSUBTYPES: '0' + }, + { + ID: 'ClassifierMap', + DESC: 'Classifier map', + HASSUBTYPES: '1' + }, + { + ID: 'Column', + DESC: 'Column', + HASSUBTYPES: '1' + }, + { + ID: 'Condition', + DESC: 'Condition', + HASSUBTYPES: '0' + }, + { + ID: 'ConditionActionSet', + DESC: 'Condition action set', + HASSUBTYPES: '0' + }, + { + ID: 'ConfiguredComponent', + DESC: 'Configured component', + HASSUBTYPES: '1' + }, + { + ID: 'CustomAssociation', + DESC: 'Custom association', + HASSUBTYPES: '0' + }, + { + ID: 'DatabaseCatalog', + DESC: 'Database catalog', + HASSUBTYPES: '0' + }, + { + ID: 'DatabaseSchema', + DESC: 'Database schema', + HASSUBTYPES: '0' + }, + { + ID: 'DeployedComponent', + DESC: 'Deployed component', + HASSUBTYPES: '1' + }, + { + ID: 'Directory', + DESC: 'Directory', + HASSUBTYPES: '1' + }, + { + ID: 'Document', + DESC: 'Document', + HASSUBTYPES: '0' + }, + { + ID: 'Extension', + DESC: 'Extension', + HASSUBTYPES: '0' + }, + { + ID: 'ExternalIdentity', + DESC: 'External identity', + HASSUBTYPES: '0' + }, + { + ID: 'FavoritesContainer', + DESC: 'Favorites container', + HASSUBTYPES: '0' + }, + { + ID: 'File', + DESC: 'File', + HASSUBTYPES: '1' + }, + { + ID: 'Group', + DESC: 'Group', + HASSUBTYPES: '1' + }, + { + ID: 'ITChannel', + DESC: 'IT channel', + HASSUBTYPES: '0' + }, + { + ID: 'IdentityGroup', + DESC: 'Identity group', + HASSUBTYPES: '0' + }, + { + ID: 'Index', + DESC: 'Index', + HASSUBTYPES: '0' + }, + { + ID: 'InternalLogin', + DESC: 'Internal login', + HASSUBTYPES: '0' + }, + { + ID: 'Job', + DESC: 'Job', + HASSUBTYPES: '0' + }, + { + ID: 'Keyword', + DESC: 'Keyword', + HASSUBTYPES: '0' + }, + { + ID: 'LogicalServer', + DESC: 'Logical server', + HASSUBTYPES: '0' + }, + { + ID: 'Login', + DESC: 'Login', + HASSUBTYPES: '0' + }, + { + ID: 'Machine', + DESC: 'Machine', + HASSUBTYPES: '0' + }, + { + ID: 'NamedService', + DESC: 'Named service', + HASSUBTYPES: '0' + }, + { + ID: 'OLAPSchema', + DESC: 'OLAP schema', + HASSUBTYPES: '0' + }, + { + ID: 'PSColumnLayoutComponent', + DESC: 'PS column layout component', + HASSUBTYPES: '0' + }, + { + ID: 'PSPortalPage', + DESC: 'PS portal page', + HASSUBTYPES: '0' + }, + { + ID: 'PSPortlet', + DESC: 'PS portlet', + HASSUBTYPES: '0' + }, + { + ID: 'Permission', + DESC: 'Permission', + HASSUBTYPES: '0' + }, + { + ID: 'Person', + DESC: 'People', + HASSUBTYPES: '0' + }, + { + ID: 'PhysicalTable', + DESC: 'Physical table', + HASSUBTYPES: '1' + }, + { + ID: 'Prompt', + DESC: 'Prompt', + HASSUBTYPES: '0' + }, + { + ID: 'PromptGroup', + DESC: 'Prompt group', + HASSUBTYPES: '0' + }, + { + ID: 'Property', + DESC: 'Property', + HASSUBTYPES: '0' + }, + { + ID: 'PropertyGroup', + DESC: 'Property group', + HASSUBTYPES: '0' + }, + { + ID: 'PropertySet', + DESC: 'Property set', + HASSUBTYPES: '0' + }, + { + ID: 'PropertyType', + DESC: 'Property type', + HASSUBTYPES: '0' + }, + { + ID: 'Prototype', + DESC: 'Prototype', + HASSUBTYPES: '0' + }, + { + ID: 'Report', + DESC: 'Report', + HASSUBTYPES: '0' + }, + { + ID: 'ResponsibleParty', + DESC: 'Responsible party', + HASSUBTYPES: '0' + }, + { + ID: 'SASClientConnection', + DESC: 'SAS client connection', + HASSUBTYPES: '0' + }, + { + ID: 'SASLibrary', + DESC: 'SAS library', + HASSUBTYPES: '1' + }, + { + ID: 'SASPassword', + DESC: 'SAS password', + HASSUBTYPES: '0' + }, + { + ID: 'Search', + DESC: 'Search', + HASSUBTYPES: '0' + }, + { + ID: 'SecurityRuleScheme', + DESC: 'Security rule scheme', + HASSUBTYPES: '0' + }, + { + ID: 'SecurityTypeContainmentRule', + DESC: 'Security type containment rule', + HASSUBTYPES: '0' + }, + { + ID: 'ServerComponent', + DESC: 'Server component', + HASSUBTYPES: '1' + }, + { + ID: 'ServerContext', + DESC: 'Server context', + HASSUBTYPES: '0' + }, + { + ID: 'ServiceComponent', + DESC: 'Service component', + HASSUBTYPES: '0' + }, + { + ID: 'ServiceType', + DESC: 'Service type', + HASSUBTYPES: '0' + }, + { + ID: 'SoftwareComponent', + DESC: 'Software component', + HASSUBTYPES: '1' + }, + { + ID: 'Stream', + DESC: 'Stream', + HASSUBTYPES: '0' + }, + { + ID: 'TCPIPConnection', + DESC: 'TCPIP connection', + HASSUBTYPES: '0' + }, + { + ID: 'TextStore', + DESC: 'Text store', + HASSUBTYPES: '0' + }, + { + ID: 'Timestamp', + DESC: 'Timestamp', + HASSUBTYPES: '0' + }, + { + ID: 'Transformation', + DESC: 'Transformation', + HASSUBTYPES: '1' + }, + { + ID: 'TransformationActivity', + DESC: 'Transformation activity', + HASSUBTYPES: '0' + }, + { + ID: 'TransformationStep', + DESC: 'Transformation step', + HASSUBTYPES: '1' + }, + { + ID: 'Tree', + DESC: 'Metadata Trees', + HASSUBTYPES: '0' + }, + { + ID: 'TypeDefinition', + DESC: 'Type definition', + HASSUBTYPES: '0' + }, + { + ID: 'UniqueKey', + DESC: 'Unique key', + HASSUBTYPES: '0' + } +]) +webout('CLOSE')