@things-factory/reference-app 7.0.0-alpha.13 → 7.0.0-alpha.18
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-data-sample-mockup.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample-mockup.ts"],"names":[],"mappings":";;;;AAAA,8EAAoC;AAIpC,qDAA0E;AAC1E,+DAAsD;AACtD,+DAAwD;AAExD,2DAAgE;AAIhE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAA;AACtB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;AAE3C,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,KAAI,EAAE,CAAA;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;SACpE;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAED,2CAA2C;AAC3C,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC3C,OAAO;YACL,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;KACL;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,gFAAgF;AAChF,sBAAsB;AACtB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IACnC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACtC,OAAO;YACL,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3D,CAAC,CAAC,CAAA;KACL;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;IACjC,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,CAAA;IACP,OAAO,CAAC,KAAK,CAAC;QAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,2BAA2B;IAC7D,OAAO,CAAC,KAAK,CAAC;QAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IACjC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAErE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA,CAAC,sBAAsB;IAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA,CAAC,2CAA2C;SAChG;QACH,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA,CAAC,OAAO;QACjC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAA,CAAC,wBAAwB;QACzC,GAAG,IAAI,GAAG,CAAA,CAAC,gBAAgB;KAC5B;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAAG,GAAG,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI;IACnC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI;QACF,MAAM,GAAG,GAAG,EAAE,CAAA;QACd,MAAM,UAAU,GAAG,OAAO,CAAA;QAC1B,MAAM,UAAU,GAAG,YAAY,CAAA;QAC/B,MAAM,QAAQ,GAAG,qBAAqB,CAAA;QACtC,MAAM,GAAG,GAAG,IAAA,yBAAM,GAAE,CAAA;QACpB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QAClC,MAAM,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAE3C,IAAI,IAAI,IAAI,QAAQ,EAAE;YACpB,IAAI,WAAW,EAAE;gBACf,yCAAyC;gBACzC,MAAM,EACJ,GAAG,EAAE,EACH,cAAc,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EACrC,EACF,GAAG,IAAI,CAAA;gBACR,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE;oBAC5B,IAAI,KAAK,GAAG,CAAC,CAAA;oBACb,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBAC9D,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;qBACrD;yBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBACrE,MAAM,GAAG,GAAG,OAAO,GAAG,GAAG,CAAA;wBACzB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;qBACjD;yBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;wBACrE,MAAM,GAAG,GAAG,OAAO,GAAG,GAAG,CAAA;wBACzB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;qBACjD;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBACnB;aACF;iBAAM;gBACL,mBAAmB;gBACnB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;gBACvB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;gBACnC,QAAQ;gBACR,IAAI,CAAC,GAAG,IAAI,EAAE;oBACZ,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;iBAChC;qBAAM,IAAI,CAAC,GAAG,IAAI,EAAE;oBACnB,eAAe;oBACf,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;iBAC3B;qBAAM;oBACL,oBAAoB;oBACpB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;wBAC5C,OAAO,IAAI,CAAA;oBACb,CAAC,EAAE,EAAE,CAAC,CAAA;iBACP;aACF;SACF;aAAM,IAAI,IAAI,IAAI,QAAQ,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;SACrE;aAAM,IAAI,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;SACvC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzD,4BAA4B;YAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;gBACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;gBACpC,OAAO,IAAI,CAAA;YACb,CAAC,EAAE,GAAG,CAAC,CAAA;SACR;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC1C,2CAA2C;YAC3C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAClC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;gBAClC,OAAO,IAAI,CAAA;YACb,CAAC,EAAE,GAAG,CAAC,CAAA;SACR;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACxD,kCAAkC;YAClC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;gBACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;gBAChC,OAAO,IAAI,CAAA;YACb,CAAC,EAAE,GAAG,CAAC,CAAA;SACR;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3C,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SAC9C;aAAM;YACL,IAAI,IAAI,IAAI,MAAM,EAAE;gBAClB,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;aAC5B;SACF;KACF;YAAS;QACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAA;QAC1B,OAAO,IAAI,CAAA;KACZ;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,WAAgB,EAAE,EAAiB;IACpE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,CAAA;IAEzE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;IAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAA;IAC7D,MAAM,MAAM,GAAG,YAAY,CAAA;IAE3B,0BAA0B;IAC1B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAA,gCAAmB,EAAC,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAEpG,kEAAkE;IAElE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAA,yBAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IACpD,MAAM,oBAAoB,GAAG;QAC3B,MAAM,EAAE,MAAM,CAAC,SAAS;QACxB,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,uEAAuE;QAC7F,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB;QACtD,QAAQ,EAAE,QAAQ,CAAC,kBAAkB;QACrC,SAAS,EAAE,SAAS;KACrB,CAAA;IAED,IAAI,aAAa,mCACZ,oBAAoB,GACpB,OAAO,CAAC,aAAa,CACzB,CAAA;IAED,kCAAkC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;QACvB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QACrB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;KACtB,CAAA;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAE1F,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACtD,aAAa,GAAG,gBAAgB,CAAC,aAAa,oBACzC,MAAM,EACT,CAAA;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IAE1D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,qBAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7F,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,oBAAU,CAAC,CAAC,IAAI,+BACpD,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,OAAO,CAAC,OAAO,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM;QACN,aAAa,IACV,QAAQ,KACX,IAAI;QACJ,GAAG;QACH,GAAG;QACH,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,SAAS,EACT,OAAO,EAAE,IAAI,EACb,OAAO,EAAE,IAAI,IACb,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,MAA4B,EAC5B,OAMC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAE1C,MAAM,OAAO,GAAY,MAAM,EAAE,CAAC,aAAa,CAAC,iBAAO,CAAC,CAAC,OAAO,CAAC;QAC/D,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE;QAC/B,SAAS,EAAE,CAAC,YAAY,CAAC;KAC1B,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,sBAAO,CAAC,CAAC,IAAI,CAAC;QACpD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;QACrC,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SAC1B;KACF,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,wBAAS,CAAC,CAAC,IAAI,CAAC;QACxD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;QACrC,KAAK,EAAE;YACL,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SAC1B;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAEnC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mCACb,QAAQ,CAAC,IAAI,KAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,GACxB,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;SACtC,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC;AAnDD,gDAmDC","sourcesContent":["import moment from 'moment-timezone'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { DataSample, DataSet, DataUseCase } from '@things-factory/dataset'\nimport { Product } from '@things-factory/product-base'\nimport { Operation } from '@things-factory/routing-base'\nimport { Domain } from '@things-factory/shell'\nimport { getWorkDateAndShift } from '@things-factory/work-shift'\n\nimport { DataSampleMockupInfo } from '../service/data-sample-mockup/data-sample-mockup-type'\n\nprocess.env.TZ = 'UTC'\nconst randomWords = require('random-words')\n\nconst fillDataKeys = (dataKeySet, data) => {\n const keys = dataKeySet?.dataKeyItems || []\n return keys.reduce((sum, key, index) => {\n const value = data[key.dataKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n\n// parse variable javascript string pattern\nconst replaceVariables = (keys, dic) => {\n for (const k in keys) {\n const matches = keys[k].match(/\\$\\{\\w*\\}/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])\n })\n }\n return keys\n}\n\n// It is required UTC date for Partitioning File System like AWS S3 from Athena.\n// ex) %YYYY, %MM, %DD\nconst formatDate = (keys, _moment) => {\n for (const k in keys) {\n const matches = keys[k].match(/%\\w*/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))\n })\n }\n return keys\n}\n\n/**\n * Normal Distribution\n * https://stackoverflow.com/questions/25582882/javascript-math-random-normal-distribution-gaussian-bell-curve\n */\nfunction normal_dist(min, max, skew) {\n let u = 0,\n v = 0\n while (u === 0) u = Math.random() //Converting [0,1) to (0,1)\n while (v === 0) v = Math.random()\n let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v)\n\n num = num / 10.0 + 0.5 // Translate to 0 -> 1\n if (num > 1 || num < 0) num = normal_dist(min, max, skew) // resample between 0 and 1 if out of range\n else {\n num = Math.pow(num, skew) // Skew\n num *= max - min // Stretch to fill range\n num += min // offset to min\n }\n return num\n}\n\nfunction randomIndex(max = 2) {\n return Math.floor(Math.random() * max)\n}\n\nfunction fillColumns(prev, next, dict) {\n let values = []\n try {\n const gap = 20\n const timeFormat = 'HH:mm'\n const dateFormat = 'YYYY-MM-DD'\n const atFormat = 'YYYY-MM-DD HH:mm:ss'\n const now = moment()\n const { type, spec, quota } = next\n const isValidSpec = spec && Object.keys(spec).length\n const arr = Array.from(Array(quota).keys())\n\n if (type == 'number') {\n if (isValidSpec) {\n /* generate values refer to spec info. */\n const {\n CCP: {\n criticalLimits: { minimum, maximum }\n }\n } = spec\n while (values.length < quota) {\n let value = 0\n if (typeof minimum === 'number' && typeof maximum === 'number') {\n value = Math.floor(normal_dist(minimum, maximum, 1))\n } else if (typeof minimum === 'number' && typeof maximum !== 'number') {\n const max = minimum + gap\n value = Math.floor(normal_dist(minimum, max, 1))\n } else if (typeof minimum !== 'number' && typeof maximum === 'number') {\n const min = maximum - gap\n value = Math.floor(normal_dist(min, maximum, 1))\n }\n values.push(value)\n }\n } else {\n /* random number */\n const p = Math.random()\n const q = () => randomIndex(10) + 1\n // fixed\n if (p > 0.33) {\n values = Array(quota).fill(q())\n } else if (p > 0.66) {\n /* or random */\n values = arr.map(i => q())\n } else {\n /* or incremental */\n values = arr.reduce((prev, i) => {\n prev.push(!!prev.length ? prev[0] + i : q())\n return prev\n }, [])\n }\n }\n } else if (type == 'select') {\n const options = next['options']['options']\n values = arr.map(i => options[randomIndex(options.length)]['value'])\n } else if (type == 'boolean') {\n values = arr.map(i => !!randomIndex())\n } else if (next['tag'].toLowerCase().indexOf('time') >= 0) {\n /* ex) startTime => 09:21 */\n arr.reduce(curr => {\n values.push(curr.format(timeFormat))\n curr.add(randomIndex(60), 'minutes')\n return curr\n }, now)\n } else if (next['tag'].indexOf('edAt') > 0) {\n /* ex) createdAt => '2022-06-15 09:21:30 */\n arr.reduce(curr => {\n values.push(curr.format(atFormat))\n curr.add(randomIndex(12), 'hours')\n return curr\n }, now)\n } else if (next['tag'].toLowerCase().indexOf('date') > 0) {\n /* ex) startDate => '2022-06-15 */\n arr.reduce(curr => {\n values.push(curr.format(dateFormat))\n curr.add(randomIndex(7), 'days')\n return curr\n }, now)\n } else if (dict.hasOwnProperty(next['tag'])) {\n values = Array(quota).fill(dict[next['tag']])\n } else {\n if (type == 'text') {\n values = randomWords(quota)\n }\n }\n } finally {\n prev[next['tag']] = values\n return prev\n }\n}\n\nasync function _generateMockupData(dataSources: any, tx: EntityManager) {\n const { user, domain, dataSet, spec, products, operations } = dataSources\n\n const collectedAt = new Date()\n\n const timezone = dataSet.timezone || domain.timezone || 'UTC'\n const format = 'YYYY-MM-DD'\n\n // workDate ex) 2022-04-04\n const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt, { timezone, format })\n\n // local time dataSet timezone or domain timezone or default 'UTC'\n\n // const collectedAt = dataSample.collectedAt || new Date()\n const localDateTz = moment(collectedAt).tz(timezone)\n const defaultPartitionKeys = {\n domain: domain.subdomain,\n datasetid: dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,\n date: localDateTz.format(format) /* local time date */,\n workdate: workDate /* working date */,\n workshift: workShift\n }\n\n var partitionKeys = {\n ...defaultPartitionKeys,\n ...dataSet.partitionKeys\n }\n\n // get product, operation as a map\n const oper = operations[Math.floor(Math.random() * operations.length)]\n const prod = products[Math.floor(Math.random() * products.length)]\n const dict = {\n operation: oper['name'],\n operationId: oper['id'],\n product: prod['name'],\n productId: prod['id']\n }\n\n const sample = dataSet.dataItems.reduce((prev, next) => fillColumns(prev, next, dict), {})\n\n partitionKeys = formatDate(partitionKeys, localDateTz)\n partitionKeys = replaceVariables(partitionKeys, {\n ...sample\n })\n\n const dataKeys = fillDataKeys(dataSet?.dataKeySet, sample)\n\n const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataSet.dataItems, sample) || {}\n const result = await tx.getRepository(DataSample).save({\n name: dataSet.name,\n description: dataSet.description,\n useCase: dataSet.useCase,\n type: dataSet.type,\n dataSet: dataSet,\n dataSetVersion: dataSet.version,\n data: sample,\n domain,\n partitionKeys,\n ...dataKeys,\n spec,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n creator: user,\n updater: user\n })\n\n return true\n}\n\nexport async function generateMockupData(\n params: DataSampleMockupInfo,\n context: {\n state: {\n domain: Domain\n user: User\n tx: EntityManager\n }\n }\n): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n const dataSet: DataSet = await tx.getRepository(DataSet).findOne({\n where: { id: params.dataSetId },\n relations: ['dataKeySet']\n })\n\n const products = await tx.getRepository(Product).find({\n select: ['id', 'name', 'description'],\n where: {\n domain: { id: domain.id }\n }\n })\n\n const operations = await tx.getRepository(Operation).find({\n select: ['id', 'name', 'description'],\n where: {\n domain: { id: domain.id }\n }\n })\n\n const dataItems = dataSet.dataItems\n\n const spec = dataItems.reduce((spec, dataItem) => {\n spec[dataItem.tag] = {\n ...dataItem.spec,\n name: dataItem.name /* do we need ? */,\n hidden: dataItem.hidden\n }\n\n return spec\n }, {})\n\n const promises = Array(params.numSamples)\n .fill(0)\n .map(x => {\n return _generateMockupData({ domain, user, dataSet, products, operations, spec }, tx)\n })\n\n await Promise.all(promises)\n return true\n}\n"]}
|
|
1
|
+
{"version":3,"file":"create-data-sample-mockup.js","sourceRoot":"","sources":["../../server/controllers/create-data-sample-mockup.ts"],"names":[],"mappings":"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","sourcesContent":["import moment from 'moment-timezone'\nimport { EntityManager } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { DataSample, DataSet, DataUseCase } from '@things-factory/dataset'\nimport { Product } from '@things-factory/product-base'\nimport { Operation } from '@things-factory/routing-base'\nimport { Domain } from '@things-factory/shell'\nimport { getWorkDateAndShift } from '@things-factory/work-shift'\n\nimport { DataSampleMockupInfo } from '../service/data-sample-mockup/data-sample-mockup-type'\n\nprocess.env.TZ = 'UTC'\nconst randomWords = require('random-words')\n\nconst fillDataKeys = (dataKeySet, data) => {\n const keys = dataKeySet?.dataKeyItems || []\n return keys.reduce((sum, key, index) => {\n const value = data[key.dataKey]\n if (value != null) {\n sum[`key0${index + 1}`] = value instanceof Array ? value[0] : value\n }\n return sum\n }, {})\n}\n\n// parse variable javascript string pattern\nconst replaceVariables = (keys, dic) => {\n for (const k in keys) {\n const matches = keys[k].match(/\\$\\{\\w*\\}/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, dic[m.slice(2, -1)])\n })\n }\n return keys\n}\n\n// It is required UTC date for Partitioning File System like AWS S3 from Athena.\n// ex) %YYYY, %MM, %DD\nconst formatDate = (keys, _moment) => {\n for (const k in keys) {\n const matches = keys[k].match(/%\\w*/g)\n matches &&\n matches.forEach(m => {\n keys[k] = keys[k].replace(m, _moment.format(m.substr(1)))\n })\n }\n return keys\n}\n\n/**\n * Normal Distribution\n * https://stackoverflow.com/questions/25582882/javascript-math-random-normal-distribution-gaussian-bell-curve\n */\nfunction normal_dist(min, max, skew) {\n let u = 0,\n v = 0\n while (u === 0) u = Math.random() //Converting [0,1) to (0,1)\n while (v === 0) v = Math.random()\n let num = Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v)\n\n num = num / 10.0 + 0.5 // Translate to 0 -> 1\n if (num > 1 || num < 0) num = normal_dist(min, max, skew) // resample between 0 and 1 if out of range\n else {\n num = Math.pow(num, skew) // Skew\n num *= max - min // Stretch to fill range\n num += min // offset to min\n }\n return num\n}\n\nfunction randomIndex(max = 2) {\n return Math.floor(Math.random() * max)\n}\n\nfunction fillColumns(prev, next, dict) {\n let values = []\n try {\n const gap = 20\n const timeFormat = 'HH:mm'\n const dateFormat = 'YYYY-MM-DD'\n const atFormat = 'YYYY-MM-DD HH:mm:ss'\n const now = moment()\n const { type, spec, quota } = next\n const isValidSpec = spec && Object.keys(spec).length\n const arr = Array.from(Array(quota).keys())\n\n if (type == 'number') {\n if (isValidSpec) {\n /* generate values refer to spec info. */\n const {\n CCP: {\n criticalLimits: { minimum, maximum }\n }\n } = spec\n while (values.length < quota) {\n let value = 0\n if (typeof minimum === 'number' && typeof maximum === 'number') {\n value = Math.floor(normal_dist(minimum, maximum, 1))\n } else if (typeof minimum === 'number' && typeof maximum !== 'number') {\n const max = minimum + gap\n value = Math.floor(normal_dist(minimum, max, 1))\n } else if (typeof minimum !== 'number' && typeof maximum === 'number') {\n const min = maximum - gap\n value = Math.floor(normal_dist(min, maximum, 1))\n }\n values.push(value)\n }\n } else {\n /* random number */\n const p = Math.random()\n const q = () => randomIndex(10) + 1\n // fixed\n if (p > 0.33) {\n values = Array(quota).fill(q())\n } else if (p > 0.66) {\n /* or random */\n values = arr.map(i => q())\n } else {\n /* or incremental */\n values = arr.reduce((prev, i) => {\n prev.push(!!prev.length ? prev[0] + i : q())\n return prev\n }, [])\n }\n }\n } else if (type == 'select') {\n const options = next['options']['options']\n values = arr.map(i => options[randomIndex(options.length)]['value'])\n } else if (type == 'boolean') {\n values = arr.map(i => !!randomIndex())\n } else if (next['tag'].toLowerCase().indexOf('time') >= 0) {\n /* ex) startTime => 09:21 */\n arr.reduce(curr => {\n values.push(curr.format(timeFormat))\n curr.add(randomIndex(60), 'minutes')\n return curr\n }, now)\n } else if (next['tag'].indexOf('edAt') > 0) {\n /* ex) createdAt => '2022-06-15 09:21:30 */\n arr.reduce(curr => {\n values.push(curr.format(atFormat))\n curr.add(randomIndex(12), 'hours')\n return curr\n }, now)\n } else if (next['tag'].toLowerCase().indexOf('date') > 0) {\n /* ex) startDate => '2022-06-15 */\n arr.reduce(curr => {\n values.push(curr.format(dateFormat))\n curr.add(randomIndex(7), 'days')\n return curr\n }, now)\n } else if (dict.hasOwnProperty(next['tag'])) {\n values = Array(quota).fill(dict[next['tag']])\n } else {\n if (type == 'text') {\n values = randomWords(quota)\n }\n }\n } finally {\n prev[next['tag']] = values\n return prev\n }\n}\n\nasync function _generateMockupData(dataSources: any, tx: EntityManager) {\n const { user, domain, dataSet, spec, products, operations } = dataSources\n\n const collectedAt = new Date()\n\n const timezone = dataSet.timezone || domain.timezone || 'UTC'\n const format = 'YYYY-MM-DD'\n\n // workDate ex) 2022-04-04\n const { workDate, workShift } = await getWorkDateAndShift(domain, collectedAt, { timezone, format })\n\n // local time dataSet timezone or domain timezone or default 'UTC'\n\n // const collectedAt = dataSample.collectedAt || new Date()\n const localDateTz = moment(collectedAt).tz(timezone)\n const defaultPartitionKeys = {\n domain: domain.subdomain,\n datasetid: dataSet.id /* It should not be 'data_set_id' as column name duplicated for Glue */,\n date: localDateTz.format(format) /* local time date */,\n workdate: workDate /* working date */,\n workshift: workShift\n }\n\n var partitionKeys = {\n ...defaultPartitionKeys,\n ...dataSet.partitionKeys\n }\n\n // get product, operation as a map\n const oper = operations[Math.floor(Math.random() * operations.length)]\n const prod = products[Math.floor(Math.random() * products.length)]\n const dict = {\n operation: oper['name'],\n operationId: oper['id'],\n product: prod['name'],\n productId: prod['id']\n }\n\n const sample = dataSet.dataItems.reduce((prev, next) => fillColumns(prev, next, dict), {})\n\n partitionKeys = formatDate(partitionKeys, localDateTz)\n partitionKeys = replaceVariables(partitionKeys, {\n ...sample\n })\n\n const dataKeys = fillDataKeys(dataSet?.dataKeySet, sample)\n\n const { ooc, oos, judgment } = DataUseCase.evaluate(dataSet, dataSet.dataItems, sample) || {}\n const result = await tx.getRepository(DataSample).save({\n name: dataSet.name,\n description: dataSet.description,\n useCase: dataSet.useCase,\n type: dataSet.type,\n dataSet: dataSet,\n dataSetVersion: dataSet.version,\n data: sample,\n domain,\n partitionKeys,\n ...dataKeys,\n spec,\n ooc,\n oos,\n judgment,\n collectedAt,\n workDate,\n workShift,\n creator: user,\n updater: user\n })\n\n return true\n}\n\nexport async function generateMockupData(params: DataSampleMockupInfo, context: ResolverContext): Promise<Boolean> {\n const { domain, user, tx } = context.state\n\n const dataSet: DataSet = await tx.getRepository(DataSet).findOne({\n where: { id: params.dataSetId },\n relations: ['dataKeySet']\n })\n\n const products = await tx.getRepository(Product).find({\n select: ['id', 'name', 'description'],\n where: {\n domain: { id: domain.id }\n }\n })\n\n const operations = await tx.getRepository(Operation).find({\n select: ['id', 'name', 'description'],\n where: {\n domain: { id: domain.id }\n }\n })\n\n const dataItems = dataSet.dataItems\n\n const spec = dataItems.reduce((spec, dataItem) => {\n spec[dataItem.tag] = {\n ...dataItem.spec,\n name: dataItem.name /* do we need ? */,\n hidden: dataItem.hidden\n }\n\n return spec\n }, {})\n\n const promises = Array(params.numSamples)\n .fill(0)\n .map(x => {\n return _generateMockupData({ domain, user, dataSet, products, operations, spec }, tx)\n })\n\n await Promise.all(promises)\n return true\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-sample-mockup-mutation.js","sourceRoot":"","sources":["../../../server/service/data-sample-mockup/data-sample-mockup-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;
|
|
1
|
+
{"version":3,"file":"data-sample-mockup-mutation.js","sourceRoot":"","sources":["../../../server/service/data-sample-mockup/data-sample-mockup-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AAGtE,qDAAoD;AAEpD,2FAAgF;AAChF,uEAAgE;AAGzD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAI7B,AAAN,KAAK,CAAC,kBAAkB,CAAgB,MAA4B,EAAS,OAAwB;QACnG,OAAO,MAAM,IAAA,8CAAkB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;CACF,CAAA;AAHO;IAHL,IAAA,wBAAS,EAAC,sFAAsF,CAAC;IACjG,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IACnD,mBAAA,IAAA,kBAAG,EAAC,QAAQ,CAAC,CAAA;IAAgC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAA5B,8CAAoB;;kEAEnE;AANU,wBAAwB;IADpC,IAAA,uBAAQ,EAAC,oBAAU,CAAC;GACR,wBAAwB,CAOpC;AAPY,4DAAwB","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { User } from '@things-factory/auth-base'\n\nimport { DataSample } from '@things-factory/dataset'\n\nimport { generateMockupData } from '../../controllers/create-data-sample-mockup'\nimport { DataSampleMockupInfo } from './data-sample-mockup-type'\n\n@Resolver(DataSample)\nexport class DataSampleMockupMutation {\n @Directive('@privilege(category: \"data-sample\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To generate data sample one' })\n async generateMockupData(@Arg('params') params: DataSampleMockupInfo, @Ctx() context: ResolverContext): Promise<Boolean> {\n return await generateMockupData(params, context)\n }\n}\n"]}
|