sonamu 0.8.26 → 0.8.28
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.
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +3 -4
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +10 -18
- package/dist/database/puri.d.ts +6 -6
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +1 -1
- package/dist/database/puri.types.d.ts +2 -1
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/database/upsert-builder.js +4 -4
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +3 -5
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +4 -8
- package/dist/utils/utils.d.ts +0 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +1 -6
- package/package.json +5 -5
- package/src/database/base-model.ts +2 -3
- package/src/database/knex.ts +9 -19
- package/src/database/puri.ts +6 -6
- package/src/database/puri.types.ts +2 -1
- package/src/database/upsert-builder.ts +4 -4
- package/src/tasks/workflow-manager.ts +3 -5
- package/src/testing/bootstrap.ts +2 -6
- package/src/utils/utils.ts +0 -5
|
@@ -37,14 +37,10 @@ export function bootstrap(vi, options) {
|
|
|
37
37
|
}
|
|
38
38
|
function getMockContext() {
|
|
39
39
|
return {
|
|
40
|
-
|
|
41
|
-
session: {},
|
|
40
|
+
session: null,
|
|
42
41
|
user: null,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
logout: ()=>{}
|
|
46
|
-
},
|
|
47
|
-
naiteStore: Naite.createStore()
|
|
42
|
+
naiteStore: Naite.createStore(),
|
|
43
|
+
locale: ""
|
|
48
44
|
};
|
|
49
45
|
}
|
|
50
46
|
export async function runWithContext(context, fn) {
|
|
@@ -122,4 +118,4 @@ export const testAs = Object.assign(async (user, title, fn, options)=>{
|
|
|
122
118
|
todo: (title)=>vitestTest.todo(title)
|
|
123
119
|
});
|
|
124
120
|
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2Jvb3RzdHJhcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVBbGwsXG4gIGJlZm9yZUVhY2gsXG4gIHR5cGUgVGVzdEZ1bmN0aW9uLFxuICB0eXBlIFRlc3RPcHRpb25zLFxuICB0eXBlIFZpdGVzdFV0aWxzLFxuICB0ZXN0IGFzIHZpdGVzdFRlc3QsXG59IGZyb20gXCJ2aXRlc3RcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSwgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIGlwOiBcIjEyNy4wLjAuMVwiLFxuICAgIHNlc3Npb246IHt9LFxuICAgIHVzZXI6IG51bGwsXG4gICAgcGFzc3BvcnQ6IHtcbiAgICAgIGxvZ2luOiBhc3luYyAoKSA9PiB7fSxcbiAgICAgIGxvZ291dDogKCkgPT4ge30sXG4gICAgfSxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICB9IGFzIHVua25vd24gYXMgQ29udGV4dDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhDb250ZXh0KGNvbnRleHQ6IENvbnRleHQgfCBudWxsLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAvLyBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVu7Jy866GcIGNvbnRleHQg7ISk7KCVXG4gIGF3YWl0IFNvbmFtdS5hc3luY0xvY2FsU3RvcmFnZS5ydW4oeyBjb250ZXh0OiBjb250ZXh0ID8/IGdldE1vY2tDb250ZXh0KCkgfSwgZm4pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aE1vY2tDb250ZXh0KGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIGF3YWl0IHJ1bldpdGhDb250ZXh0KGdldE1vY2tDb250ZXh0KCksIGZuKTtcbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJ2aXRlc3RcIiB7XG4gIGludGVyZmFjZSBUYXNrTWV0YSB7XG4gICAgdHJhY2VzOiBTZXJpYWxpemVkVHJhY2VbXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdGVzdCA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4ge1xuICAgIHJldHVybiB2aXRlc3RUZXN0KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgYXdhaXQgcnVuV2l0aE1vY2tDb250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuICB7XG4gICAgc2tpcDogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0Piwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PlxuICAgICAgdml0ZXN0VGVzdC5za2lwKHRpdGxlLCBvcHRpb25zLCBmbiksXG4gICAgb25seTogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0Piwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoTW9ja0NvbnRleHQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB0b2RvOiAodGl0bGU6IHN0cmluZykgPT4gdml0ZXN0VGVzdC50b2RvKHRpdGxlKSxcbiAgICBlYWNoOiB2aXRlc3RUZXN0LmVhY2guYmluZCh2aXRlc3RUZXN0KSBhcyB0eXBlb2Ygdml0ZXN0VGVzdC5lYWNoLFxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHRlc3RBcyA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgIHVzZXI6IFVzZXIsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApID0+IHtcbiAgICByZXR1cm4gdml0ZXN0VGVzdCh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGF3YWl0IHJ1bldpdGhDb250ZXh0KFxuICAgICAgICB7XG4gICAgICAgICAgLi4uZ2V0TW9ja0NvbnRleHQoKSxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0sXG4gIHtcbiAgICBza2lwOiBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICAgIF91c2VyOiBVc2VyLFxuICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0PixcbiAgICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgICApID0+IHZpdGVzdFRlc3Quc2tpcCh0aXRsZSwgb3B0aW9ucywgZm4pLFxuICAgIG9ubHk6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sXG4gICAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoQ29udGV4dChcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXRNb2NrQ29udGV4dCgpLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gIH0sXG4pO1xuIl0sIm5hbWVzIjpbImFmdGVyQWxsIiwiYWZ0ZXJFYWNoIiwiYmVmb3JlQWxsIiwiYmVmb3JlRWFjaCIsInRlc3QiLCJ2aXRlc3RUZXN0IiwiU29uYW11IiwiREIiLCJOYWl0ZSIsIk5haXRlUmVwb3J0ZXIiLCJib290c3RyYXAiLCJ2aSIsIm9wdGlvbnMiLCJmb3JUZXN0aW5nIiwiaXNJbml0aWFsaXplZCIsImluaXQiLCJ1bmRlZmluZWQiLCJjcmVhdGVUZXN0VHJhbnNhY3Rpb24iLCJ0YXNrIiwidXNlUmVhbFRpbWVycyIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicmVwb3J0VGVzdFJlc3VsdCIsInN1aXRlTmFtZSIsInN1aXRlIiwibmFtZSIsInN1aXRlRmlsZVBhdGgiLCJmaWxlIiwiZmlsZXBhdGgiLCJ0ZXN0TmFtZSIsInRlc3RGaWxlUGF0aCIsInRlc3RMaW5lIiwibG9jYXRpb24iLCJsaW5lIiwic3RhdHVzIiwicmVzdWx0Iiwic3RhdGUiLCJkdXJhdGlvbiIsImVycm9yIiwiZXJyb3JzIiwibWVzc2FnZSIsInN0YWNrIiwidHJhY2VzIiwibWV0YSIsImdldE1vY2tDb250ZXh0IiwiaXAiLCJzZXNzaW9uIiwidXNlciIsInBhc3Nwb3J0IiwibG9naW4iLCJsb2dvdXQiLCJuYWl0ZVN0b3JlIiwiY3JlYXRlU3RvcmUiLCJydW5XaXRoQ29udGV4dCIsImNvbnRleHQiLCJmbiIsImFzeW5jTG9jYWxTdG9yYWdlIiwicnVuIiwicnVuV2l0aE1vY2tDb250ZXh0IiwiT2JqZWN0IiwiYXNzaWduIiwidGl0bGUiLCJnZXRBbGxUcmFjZXMi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
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2Jvb3RzdHJhcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVBbGwsXG4gIGJlZm9yZUVhY2gsXG4gIHR5cGUgVGVzdEZ1bmN0aW9uLFxuICB0eXBlIFRlc3RPcHRpb25zLFxuICB0eXBlIFZpdGVzdFV0aWxzLFxuICB0ZXN0IGFzIHZpdGVzdFRlc3QsXG59IGZyb20gXCJ2aXRlc3RcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSwgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHNlc3Npb246IG51bGwsXG4gICAgdXNlcjogbnVsbCxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgIGxvY2FsZTogXCJcIixcbiAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoQ29udGV4dChjb250ZXh0OiBDb250ZXh0IHwgbnVsbCwgZm46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgLy8gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1buycvOuhnCBjb250ZXh0IOyEpOyglVxuICBhd2FpdCBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dDogY29udGV4dCA/PyBnZXRNb2NrQ29udGV4dCgpIH0sIGZuKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhNb2NrQ29udGV4dChmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICBhd2FpdCBydW5XaXRoQ29udGV4dChnZXRNb2NrQ29udGV4dCgpLCBmbik7XG59XG5cbmRlY2xhcmUgbW9kdWxlIFwidml0ZXN0XCIge1xuICBpbnRlcmZhY2UgVGFza01ldGEge1xuICAgIHRyYWNlczogU2VyaWFsaXplZFRyYWNlW107XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbjxvYmplY3Q+LCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IHtcbiAgICByZXR1cm4gdml0ZXN0VGVzdCh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGF3YWl0IHJ1bldpdGhNb2NrQ29udGV4dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcbiAge1xuICAgIHNraXA6IGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT5cbiAgICAgIHZpdGVzdFRlc3Quc2tpcCh0aXRsZSwgb3B0aW9ucywgZm4pLFxuICAgIG9ubHk6IGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aE1vY2tDb250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gICAgZWFjaDogdml0ZXN0VGVzdC5lYWNoLmJpbmQodml0ZXN0VGVzdCkgYXMgdHlwZW9mIHZpdGVzdFRlc3QuZWFjaCxcbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB0ZXN0QXMgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbjxvYmplY3Q+LFxuICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgKSA9PiB7XG4gICAgcmV0dXJuIHZpdGVzdFRlc3QodGl0bGUsIG9wdGlvbnMsIGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICBhd2FpdCBydW5XaXRoQ29udGV4dChcbiAgICAgICAge1xuICAgICAgICAgIC4uLmdldE1vY2tDb250ZXh0KCksXG4gICAgICAgICAgdXNlcixcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9LFxuICB7XG4gICAgc2tpcDogYXN5bmMgPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgICBfdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sXG4gICAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICAgKSA9PiB2aXRlc3RUZXN0LnNraXAodGl0bGUsIG9wdGlvbnMsIGZuKSxcbiAgICBvbmx5OiBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICAgIHVzZXI6IFVzZXIsXG4gICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgZm46IFRlc3RGdW5jdGlvbjxvYmplY3Q+LFxuICAgICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aENvbnRleHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0TW9ja0NvbnRleHQoKSxcbiAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2aXRlc3RUZXN0LnRvZG8odGl0bGUpLFxuICB9LFxuKTtcbiJdLCJuYW1lcyI6WyJhZnRlckFsbCIsImFmdGVyRWFjaCIsImJlZm9yZUFsbCIsImJlZm9yZUVhY2giLCJ0ZXN0Iiwidml0ZXN0VGVzdCIsIlNvbmFtdSIsIkRCIiwiTmFpdGUiLCJOYWl0ZVJlcG9ydGVyIiwiYm9vdHN0cmFwIiwidmkiLCJvcHRpb25zIiwiZm9yVGVzdGluZyIsImlzSW5pdGlhbGl6ZWQiLCJpbml0IiwidW5kZWZpbmVkIiwiY3JlYXRlVGVzdFRyYW5zYWN0aW9uIiwidGFzayIsInVzZVJlYWxUaW1lcnMiLCJjbGVhclRlc3RUcmFuc2FjdGlvbiIsInJlcG9ydFRlc3RSZXN1bHQiLCJzdWl0ZU5hbWUiLCJzdWl0ZSIsIm5hbWUiLCJzdWl0ZUZpbGVQYXRoIiwiZmlsZSIsImZpbGVwYXRoIiwidGVzdE5hbWUiLCJ0ZXN0RmlsZVBhdGgiLCJ0ZXN0TGluZSIsImxvY2F0aW9uIiwibGluZSIsInN0YXR1cyIsInJlc3VsdCIsInN0YXRlIiwiZHVyYXRpb24iLCJlcnJvciIsImVycm9ycyIsIm1lc3NhZ2UiLCJzdGFjayIsInRyYWNlcyIsIm1ldGEiLCJnZXRNb2NrQ29udGV4dCIsInNlc3Npb24iLCJ1c2VyIiwibmFpdGVTdG9yZSIsImNyZWF0ZVN0b3JlIiwibG9jYWxlIiwicnVuV2l0aENvbnRleHQiLCJjb250ZXh0IiwiZm4iLCJhc3luY0xvY2FsU3RvcmFnZSIsInJ1biIsInJ1bldpdGhNb2NrQ29udGV4dCIsIk9iamVjdCIsImFzc2lnbiIsInRpdGxlIiwiZ2V0QWxsVHJhY2VzIiwiZSIsInNraXAiLCJvbmx5IiwidG9kbyIsImVhY2giLCJiaW5kIiwidGVzdEFzIiwiX3VzZXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxTQUFT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
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export declare function exhaustive(_param: never): void;
|
|
|
7
7
|
export declare function assertExists<T>(value: T | null | undefined, message?: string): T;
|
|
8
8
|
export declare function assertNotNull<T>(value: T | null, message?: string): T;
|
|
9
9
|
export declare function assertDefined<T>(value: T | undefined, message?: string): T;
|
|
10
|
-
export declare function chunk<T>(array: T[], size: number): T[][];
|
|
11
10
|
export declare function intersectionBy<T, K>(arr1: readonly T[], arr2: readonly T[], iteratee: (item: T) => K): T[];
|
|
12
11
|
export declare function differenceWith<T>(arr1: readonly T[], arr2: readonly T[], comparator: (a: T, b: T) => boolean): T[];
|
|
13
12
|
export declare function merge<T extends Record<string, any>>(defaultObj: T, userObj: T): T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAyB9C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,QAEvC;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKhF;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKrE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAK1E;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EACjC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GACvB,CAAC,EAAE,CAGL;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAClC,CAAC,EAAE,CAEL;AAGD,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAsBjF;AAcD,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,OAAO,CAM3F"}
|
package/dist/utils/utils.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
import { cluster } from "radashi";
|
|
4
3
|
export function findAppRootPath() {
|
|
5
4
|
const apiRootPath = findApiRootPath();
|
|
6
5
|
return path.dirname(apiRootPath);
|
|
@@ -55,10 +54,6 @@ export function assertDefined(value, message) {
|
|
|
55
54
|
}
|
|
56
55
|
return value;
|
|
57
56
|
}
|
|
58
|
-
// lodash chunk 대체 (radash cluster 사용)
|
|
59
|
-
export function chunk(array, size) {
|
|
60
|
-
return cluster(array, Math.ceil(array.length / size));
|
|
61
|
-
}
|
|
62
57
|
// lodash intersectionBy 대체
|
|
63
58
|
export function intersectionBy(arr1, arr2, iteratee) {
|
|
64
59
|
const arr2Keys = new Set(arr2.map(iteratee));
|
|
@@ -105,4 +100,4 @@ export function convertFastifyHeadersToStandard(headers) {
|
|
|
105
100
|
return headersObj;
|
|
106
101
|
}
|
|
107
102
|
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBjbHVzdGVyIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB0eXBlIHsgQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4vcGF0aC11dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFwcFJvb3RQYXRoKCk6IEFic29sdXRlUGF0aCB7XG4gIGNvbnN0IGFwaVJvb3RQYXRoID0gZmluZEFwaVJvb3RQYXRoKCk7XG4gIHJldHVybiBwYXRoLmRpcm5hbWUoYXBpUm9vdFBhdGgpIGFzIEFic29sdXRlUGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBcGlSb290UGF0aCgpOiBBYnNvbHV0ZVBhdGgge1xuICAvLyBOT1RFOiBmb3Igc3VwcG9ydCBucG0gLyB5YXJuIC8gcG5wbSB3b3Jrc3BhY2VzXG4gIC8vIO2VmOyngOunjCB3b3Jrc3BhY2Ug7JOw66m0IHByb2Nlc3MuY3dkKCkg7ZWY66m0IOuQmOuKlOuNsC4uLiDsnbTqsbQg64KY7KSR7JeQIO2YkeydmCDtm4Qg7IiY7KCV7ZWY64qU6rG466GcXG4gIGNvbnN0IHdvcmtzcGFjZVBhdGggPSBwcm9jZXNzLmVudi5QTlBNX1NDUklQVF9TUkNfRElSID8/IHByb2Nlc3MuZW52LklOSVRfQ1dEO1xuICBpZiAobm9uTnVsbGFibGUod29ya3NwYWNlUGF0aCkpIHtcbiAgICByZXR1cm4gd29ya3NwYWNlUGF0aCBhcyBBYnNvbHV0ZVBhdGg7XG4gIH1cblxuICBpZiAobm9uTnVsbGFibGUocHJvY2Vzcy5lbnYuUE5QTV9QQUNLQUdFX05BTUUpKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MuY3dkKCkuc3BsaXQocGF0aC5zZXApLmpvaW4ocGF0aC5zZXApIGFzIEFic29sdXRlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IGJhc2VQYXRoID0gaW1wb3J0Lm1ldGEuZmlsZW5hbWU7XG4gIGxldCBkaXIgPSBwYXRoLmRpcm5hbWUoYmFzZVBhdGgpO1xuICBpZiAoZGlyLmluY2x1ZGVzKFwiLy55YXJuL1wiKSkge1xuICAgIGRpciA9IGRpci5zcGxpdChcIi8ueWFybi9cIilbMF07XG4gIH1cblxuICBkbyB7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5qb2luKGRpciwgXCIvcGFja2FnZS5qc29uXCIpKSkge1xuICAgICAgcmV0dXJuIGRpci5zcGxpdChwYXRoLnNlcCkuam9pbihwYXRoLnNlcCkgYXMgQWJzb2x1dGVQYXRoO1xuICAgIH1cbiAgICBkaXIgPSBkaXIuc3BsaXQocGF0aC5zZXApLnNsaWNlKDAsIC0xKS5qb2luKHBhdGguc2VwKTtcbiAgfSB3aGlsZSAoZGlyLnNwbGl0KHBhdGguc2VwKS5sZW5ndGggPiAxKTtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgQXBwUm9vdCB1c2luZyBTb25hbXUgLTJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub25OdWxsYWJsZTxUPih2YWx1ZTogVCk6IHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGhhdXN0aXZlKF9wYXJhbTogbmV2ZXIpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBleGhhdXN0aXZlYCk7XG59XG5cbi8vIOydvOuwmCDrsoTsoIRcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFeGlzdHM8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkLCBtZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJWYWx1ZSBtdXN0IGV4aXN0XCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gbnVsbOunjCDssrTtgaxcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3ROdWxsPFQ+KHZhbHVlOiBUIHwgbnVsbCwgbWVzc2FnZT86IHN0cmluZyk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSA/PyBcIlZhbHVlIG11c3Qgbm90IGJlIG51bGxcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuLy8gdW5kZWZpbmVk66eMIOyytO2BrFxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlZmluZWQ8VD4odmFsdWU6IFQgfCB1bmRlZmluZWQsIG1lc3NhZ2U/OiBzdHJpbmcpOiBUIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSA/PyBcIlZhbHVlIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIGxvZGFzaCBjaHVuayDrjIDssrQgKHJhZGFzaCBjbHVzdGVyIOyCrOyaqSlcbmV4cG9ydCBmdW5jdGlvbiBjaHVuazxUPihhcnJheTogVFtdLCBzaXplOiBudW1iZXIpOiBUW11bXSB7XG4gIHJldHVybiBjbHVzdGVyKGFycmF5LCBNYXRoLmNlaWwoYXJyYXkubGVuZ3RoIC8gc2l6ZSkpO1xufVxuLy8gbG9kYXNoIGludGVyc2VjdGlvbkJ5IOuMgOyytFxuZXhwb3J0IGZ1bmN0aW9uIGludGVyc2VjdGlvbkJ5PFQsIEs+KFxuICBhcnIxOiByZWFkb25seSBUW10sXG4gIGFycjI6IHJlYWRvbmx5IFRbXSxcbiAgaXRlcmF0ZWU6IChpdGVtOiBUKSA9PiBLLFxuKTogVFtdIHtcbiAgY29uc3QgYXJyMktleXMgPSBuZXcgU2V0KGFycjIubWFwKGl0ZXJhdGVlKSk7XG4gIHJldHVybiBhcnIxLmZpbHRlcigoaXRlbSkgPT4gYXJyMktleXMuaGFzKGl0ZXJhdGVlKGl0ZW0pKSk7XG59XG4vLyBsb2Rhc2ggZGlmZmVyZW5jZVdpdGgg64yA7LK0XG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZVdpdGg8VD4oXG4gIGFycjE6IHJlYWRvbmx5IFRbXSxcbiAgYXJyMjogcmVhZG9ubHkgVFtdLFxuICBjb21wYXJhdG9yOiAoYTogVCwgYjogVCkgPT4gYm9vbGVhbixcbik6IFRbXSB7XG4gIHJldHVybiBhcnIxLmZpbHRlcigoaXRlbUEpID0+ICFhcnIyLnNvbWUoKGl0ZW1CKSA9PiBjb21wYXJhdG9yKGl0ZW1BLCBpdGVtQikpKTtcbn1cblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBkeW5hbWljIHByb3BlcnR5IGFjY2Vzc1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihkZWZhdWx0T2JqOiBULCB1c2VyT2JqOiBUKTogVCB7XG4gIC8vIOybkOuzuCDrs7TsobTsnYQg7JyE7ZW0IGRlZmF1bHRPYmog67O17IKsXG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uZGVmYXVsdE9iaiB9O1xuXG4gIC8vIHVzZXJPYmrsnZgg6rCBIOyGjeyEseydhCDsiJztmoxcbiAgZm9yIChjb25zdCBrZXkgaW4gdXNlck9iaikge1xuICAgIC8vIHVzZXJPYmrsnZggb3duIHByb3BlcnR566eMIOyymOumrCAo7ZSE66Gc7Yag7YOA7J6FIOyytOyduCDsoJzsmbgpXG4gICAgaWYgKE9iamVjdC5oYXNPd24odXNlck9iaiwga2V5KSkge1xuICAgICAgY29uc3QgdXNlclZhbHVlID0gdXNlck9ialtrZXldO1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gcmVzdWx0W2tleV07XG5cbiAgICAgIC8vIOuRkCDqsJLsnbQg66qo65GQIOqwneyytOydtOqzoCwg67Cw7Je07J20IOyVhOuLjCDqsr3smrAg7J6s6reA7KCB7Jy866GcIOuzke2VqVxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodXNlclZhbHVlKSAmJiBpc1BsYWluT2JqZWN0KGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZShkZWZhdWx0VmFsdWUsIHVzZXJWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyDqt7gg7Jm47J2YIOqyveyasCB1c2VyT2Jq7J2YIOqwkuycvOuhnCDrja7slrTsk7DquLBcbiAgICAgICAgcmVzdWx0W2tleV0gPSB1c2VyVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gcGxhaW4gb2JqZWN0IO2MkOuzhCDtl6ztjbwg7ZWo7IiYXG4vLyAo67Cw7Je0LCBudWxsLCBEYXRlIOuTseydhCDsoJzsmbjtlZwg7Iic7IiYIOqwneyytOunjCB0cnVlKVxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBPYmplY3RdXCJcbiAgKTtcbn1cblxuLy8gQ29udmVydCBGYXN0aWZ5IGhlYWRlcnMgdG8gc3RhbmRhcmQgSGVhZGVycyBvYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkKGhlYWRlcnM6IEZhc3RpZnlSZXF1ZXN0W1wiaGVhZGVyc1wiXSk6IEhlYWRlcnMge1xuICBjb25zdCBoZWFkZXJzT2JqID0gbmV3IEhlYWRlcnMoKTtcbiAgT2JqZWN0LmVudHJpZXMoaGVhZGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgaWYgKHZhbHVlKSBoZWFkZXJzT2JqLmFwcGVuZChrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICB9KTtcbiAgcmV0dXJuIGhlYWRlcnNPYmo7XG59XG4iXSwibmFtZXMiOlsiZnMiLCJwYXRoIiwiY2x1c3RlciIsImZpbmRBcHBSb290UGF0aCIsImFwaVJvb3RQYXRoIiwiZmluZEFwaVJvb3RQYXRoIiwiZGlybmFtZSIsIndvcmtzcGFjZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiUE5QTV9TQ1JJUFRfU1JDX0RJUiIsIklOSVRfQ1dEIiwibm9uTnVsbGFibGUiLCJQTlBNX1BBQ0tBR0VfTkFNRSIsImN3ZCIsInNwbGl0Iiwic2VwIiwiam9pbiIsImJhc2VQYXRoIiwiZmlsZW5hbWUiLCJkaXIiLCJpbmNsdWRlcyIsImV4aXN0c1N5bmMiLCJzbGljZSIsImxlbmd0aCIsIkVycm9yIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJleGhhdXN0aXZlIiwiX3BhcmFtIiwiYXNzZXJ0RXhpc3RzIiwibWVzc2FnZSIsImFzc2VydE5vdE51bGwiLCJhc3NlcnREZWZpbmVkIiwiY2h1bmsiLCJhcnJheSIsInNpemUiLCJNYXRoIiwiY2VpbCIsImludGVyc2VjdGlvbkJ5IiwiYXJyMSIsImFycjIiLCJpdGVyYXRlZSIsImFycjJLZXlzIiwiU2V0IiwibWFwIiwiZmlsdGVyIiwiaXRlbSIsImhhcyIsImRpZmZlcmVuY2VXaXRoIiwiY29tcGFyYXRvciIsIml0ZW1BIiwic29tZSIsIml0ZW1CIiwibWVyZ2UiLCJkZWZhdWx0T2JqIiwidXNlck9iaiIsInJlc3VsdCIsImtleSIsIk9iamVjdCIsImhhc093biIsInVzZXJWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkIiwiaGVhZGVycyIsImhlYWRlcnNPYmoiLCJIZWFkZXJzIiwiZW50cmllcyIsImZvckVhY2giLCJhcHBlbmQiXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLFFBQVEs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
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IEFic29sdXRlUGF0aCB9IGZyb20gXCIuL3BhdGgtdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBcHBSb290UGF0aCgpOiBBYnNvbHV0ZVBhdGgge1xuICBjb25zdCBhcGlSb290UGF0aCA9IGZpbmRBcGlSb290UGF0aCgpO1xuICByZXR1cm4gcGF0aC5kaXJuYW1lKGFwaVJvb3RQYXRoKSBhcyBBYnNvbHV0ZVBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQXBpUm9vdFBhdGgoKTogQWJzb2x1dGVQYXRoIHtcbiAgLy8gTk9URTogZm9yIHN1cHBvcnQgbnBtIC8geWFybiAvIHBucG0gd29ya3NwYWNlc1xuICAvLyDtlZjsp4Drp4wgd29ya3NwYWNlIOyTsOuptCBwcm9jZXNzLmN3ZCgpIO2VmOuptCDrkJjripTrjbAuLi4g7J206rG0IOuCmOykkeyXkCDtmJHsnZgg7ZuEIOyImOygle2VmOuKlOqxuOuhnFxuICBjb25zdCB3b3Jrc3BhY2VQYXRoID0gcHJvY2Vzcy5lbnYuUE5QTV9TQ1JJUFRfU1JDX0RJUiA/PyBwcm9jZXNzLmVudi5JTklUX0NXRDtcbiAgaWYgKG5vbk51bGxhYmxlKHdvcmtzcGFjZVBhdGgpKSB7XG4gICAgcmV0dXJuIHdvcmtzcGFjZVBhdGggYXMgQWJzb2x1dGVQYXRoO1xuICB9XG5cbiAgaWYgKG5vbk51bGxhYmxlKHByb2Nlc3MuZW52LlBOUE1fUEFDS0FHRV9OQU1FKSkge1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpLnNwbGl0KHBhdGguc2VwKS5qb2luKHBhdGguc2VwKSBhcyBBYnNvbHV0ZVBhdGg7XG4gIH1cblxuICBjb25zdCBiYXNlUGF0aCA9IGltcG9ydC5tZXRhLmZpbGVuYW1lO1xuICBsZXQgZGlyID0gcGF0aC5kaXJuYW1lKGJhc2VQYXRoKTtcbiAgaWYgKGRpci5pbmNsdWRlcyhcIi8ueWFybi9cIikpIHtcbiAgICBkaXIgPSBkaXIuc3BsaXQoXCIvLnlhcm4vXCIpWzBdO1xuICB9XG5cbiAgZG8ge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihkaXIsIFwiL3BhY2thZ2UuanNvblwiKSkpIHtcbiAgICAgIHJldHVybiBkaXIuc3BsaXQocGF0aC5zZXApLmpvaW4ocGF0aC5zZXApIGFzIEFic29sdXRlUGF0aDtcbiAgICB9XG4gICAgZGlyID0gZGlyLnNwbGl0KHBhdGguc2VwKS5zbGljZSgwLCAtMSkuam9pbihwYXRoLnNlcCk7XG4gIH0gd2hpbGUgKGRpci5zcGxpdChwYXRoLnNlcCkubGVuZ3RoID4gMSk7XG4gIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIEFwcFJvb3QgdXNpbmcgU29uYW11IC0yXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9uTnVsbGFibGU8VD4odmFsdWU6IFQpOiB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhoYXVzdGl2ZShfcGFyYW06IG5ldmVyKSB7XG4gIHRocm93IG5ldyBFcnJvcihgZXhoYXVzdGl2ZWApO1xufVxuXG4vLyDsnbzrsJgg67KE7KCEXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXhpc3RzPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCwgbWVzc2FnZT86IHN0cmluZyk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVmFsdWUgbXVzdCBleGlzdFwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIG51bGzrp4wg7LK07YGsXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbDxUPih2YWx1ZTogVCB8IG51bGwsIG1lc3NhZ2U/OiBzdHJpbmcpOiBUIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJWYWx1ZSBtdXN0IG5vdCBiZSBudWxsXCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8vIHVuZGVmaW5lZOunjCDssrTtgaxcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZWZpbmVkPFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBtZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJWYWx1ZSBtdXN0IGJlIGRlZmluZWRcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBsb2Rhc2ggaW50ZXJzZWN0aW9uQnkg64yA7LK0XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0aW9uQnk8VCwgSz4oXG4gIGFycjE6IHJlYWRvbmx5IFRbXSxcbiAgYXJyMjogcmVhZG9ubHkgVFtdLFxuICBpdGVyYXRlZTogKGl0ZW06IFQpID0+IEssXG4pOiBUW10ge1xuICBjb25zdCBhcnIyS2V5cyA9IG5ldyBTZXQoYXJyMi5tYXAoaXRlcmF0ZWUpKTtcbiAgcmV0dXJuIGFycjEuZmlsdGVyKChpdGVtKSA9PiBhcnIyS2V5cy5oYXMoaXRlcmF0ZWUoaXRlbSkpKTtcbn1cbi8vIGxvZGFzaCBkaWZmZXJlbmNlV2l0aCDrjIDssrRcbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbmNlV2l0aDxUPihcbiAgYXJyMTogcmVhZG9ubHkgVFtdLFxuICBhcnIyOiByZWFkb25seSBUW10sXG4gIGNvbXBhcmF0b3I6IChhOiBULCBiOiBUKSA9PiBib29sZWFuLFxuKTogVFtdIHtcbiAgcmV0dXJuIGFycjEuZmlsdGVyKChpdGVtQSkgPT4gIWFycjIuc29tZSgoaXRlbUIpID0+IGNvbXBhcmF0b3IoaXRlbUEsIGl0ZW1CKSkpO1xufVxuXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGR5bmFtaWMgcHJvcGVydHkgYWNjZXNzXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2U8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4+KGRlZmF1bHRPYmo6IFQsIHVzZXJPYmo6IFQpOiBUIHtcbiAgLy8g7JuQ67O4IOuztOyhtOydhCDsnITtlbQgZGVmYXVsdE9iaiDrs7XsgqxcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5kZWZhdWx0T2JqIH07XG5cbiAgLy8gdXNlck9iauydmCDqsIEg7IaN7ISx7J2EIOyInO2ajFxuICBmb3IgKGNvbnN0IGtleSBpbiB1c2VyT2JqKSB7XG4gICAgLy8gdXNlck9iauydmCBvd24gcHJvcGVydHnrp4wg7LKY66asICjtlITroZzthqDtg4DsnoUg7LK07J24IOygnOyZuClcbiAgICBpZiAoT2JqZWN0Lmhhc093bih1c2VyT2JqLCBrZXkpKSB7XG4gICAgICBjb25zdCB1c2VyVmFsdWUgPSB1c2VyT2JqW2tleV07XG4gICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSByZXN1bHRba2V5XTtcblxuICAgICAgLy8g65GQIOqwkuydtCDrqqjrkZAg6rCd7LK07J206rOgLCDrsLDsl7TsnbQg7JWE64uMIOqyveyasCDsnqzqt4DsoIHsnLzroZwg67OR7ZWpXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdCh1c2VyVmFsdWUpICYmIGlzUGxhaW5PYmplY3QoZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IG1lcmdlKGRlZmF1bHRWYWx1ZSwgdXNlclZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOq3uCDsmbjsnZgg6rK97JqwIHVzZXJPYmrsnZgg6rCS7Jy866GcIOuNruyWtOyTsOq4sFxuICAgICAgICByZXN1bHRba2V5XSA9IHVzZXJWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBwbGFpbiBvYmplY3Qg7YyQ67OEIO2XrO2NvCDtlajsiJhcbi8vICjrsLDsl7QsIG51bGwsIERhdGUg65Ox7J2EIOygnOyZuO2VnCDsiJzsiJgg6rCd7LK066eMIHRydWUpXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIlxuICApO1xufVxuXG4vLyBDb252ZXJ0IEZhc3RpZnkgaGVhZGVycyB0byBzdGFuZGFyZCBIZWFkZXJzIG9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRGYXN0aWZ5SGVhZGVyc1RvU3RhbmRhcmQoaGVhZGVyczogRmFzdGlmeVJlcXVlc3RbXCJoZWFkZXJzXCJdKTogSGVhZGVycyB7XG4gIGNvbnN0IGhlYWRlcnNPYmogPSBuZXcgSGVhZGVycygpO1xuICBPYmplY3QuZW50cmllcyhoZWFkZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAodmFsdWUpIGhlYWRlcnNPYmouYXBwZW5kKGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gIH0pO1xuICByZXR1cm4gaGVhZGVyc09iajtcbn1cbiJdLCJuYW1lcyI6WyJmcyIsInBhdGgiLCJmaW5kQXBwUm9vdFBhdGgiLCJhcGlSb290UGF0aCIsImZpbmRBcGlSb290UGF0aCIsImRpcm5hbWUiLCJ3b3Jrc3BhY2VQYXRoIiwicHJvY2VzcyIsImVudiIsIlBOUE1fU0NSSVBUX1NSQ19ESVIiLCJJTklUX0NXRCIsIm5vbk51bGxhYmxlIiwiUE5QTV9QQUNLQUdFX05BTUUiLCJjd2QiLCJzcGxpdCIsInNlcCIsImpvaW4iLCJiYXNlUGF0aCIsImZpbGVuYW1lIiwiZGlyIiwiaW5jbHVkZXMiLCJleGlzdHNTeW5jIiwic2xpY2UiLCJsZW5ndGgiLCJFcnJvciIsInZhbHVlIiwidW5kZWZpbmVkIiwiZXhoYXVzdGl2ZSIsIl9wYXJhbSIsImFzc2VydEV4aXN0cyIsIm1lc3NhZ2UiLCJhc3NlcnROb3ROdWxsIiwiYXNzZXJ0RGVmaW5lZCIsImludGVyc2VjdGlvbkJ5IiwiYXJyMSIsImFycjIiLCJpdGVyYXRlZSIsImFycjJLZXlzIiwiU2V0IiwibWFwIiwiZmlsdGVyIiwiaXRlbSIsImhhcyIsImRpZmZlcmVuY2VXaXRoIiwiY29tcGFyYXRvciIsIml0ZW1BIiwic29tZSIsIml0ZW1CIiwibWVyZ2UiLCJkZWZhdWx0T2JqIiwidXNlck9iaiIsInJlc3VsdCIsImtleSIsIk9iamVjdCIsImhhc093biIsInVzZXJWYWx1ZSIsImRlZmF1bHRWYWx1ZSIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkIiwiaGVhZGVycyIsImhlYWRlcnNPYmoiLCJIZWFkZXJzIiwiZW50cmllcyIsImZvckVhY2giLCJhcHBlbmQiXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLFFBQVEsS0FBSztBQUNwQixPQUFPQyxVQUFVLE9BQU87QUFHeEIsT0FBTyxTQUFTQztJQUNkLE1BQU1DLGNBQWNDO0lBQ3BCLE9BQU9ILEtBQUtJLE9BQU8sQ0FBQ0Y7QUFDdEI7QUFFQSxPQUFPLFNBQVNDO0lBQ2QsaURBQWlEO0lBQ2pELDhEQUE4RDtJQUM5RCxNQUFNRSxnQkFBZ0JDLFFBQVFDLEdBQUcsQ0FBQ0MsbUJBQW1CLElBQUlGLFFBQVFDLEdBQUcsQ0FBQ0UsUUFBUTtJQUM3RSxJQUFJQyxZQUFZTCxnQkFBZ0I7UUFDOUIsT0FBT0E7SUFDVDtJQUVB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sonamu",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.28",
|
|
4
4
|
"description": "Sonamu — TypeScript Fullstack API Framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"fastify-sse-v2": "^4.2.1",
|
|
116
116
|
"flydrive": "^1.3.0",
|
|
117
117
|
"inflection": "^3.0.2",
|
|
118
|
-
"knex": "^3.
|
|
118
|
+
"knex": "^3.2.9",
|
|
119
119
|
"mime-types": "^3.0.1",
|
|
120
120
|
"minimatch": "^10.0.3",
|
|
121
121
|
"node-cron": "^4.2.1",
|
|
@@ -128,9 +128,9 @@
|
|
|
128
128
|
"vite": "7.3.0",
|
|
129
129
|
"vitest": "^4.0.10",
|
|
130
130
|
"@sonamu-kit/hmr-hook": "^0.4.1",
|
|
131
|
-
"@sonamu-kit/
|
|
131
|
+
"@sonamu-kit/tasks": "^0.2.0",
|
|
132
132
|
"@sonamu-kit/ts-loader": "^2.1.3",
|
|
133
|
-
"@sonamu-kit/
|
|
133
|
+
"@sonamu-kit/hmr-runner": "^0.1.1"
|
|
134
134
|
},
|
|
135
135
|
"devDependencies": {
|
|
136
136
|
"@biomejs/biome": "^2.3.13",
|
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
"better-auth": "~1.4.18",
|
|
160
160
|
"fastify": "^4",
|
|
161
161
|
"ioredis": "^5.8.2",
|
|
162
|
-
"knex": "^3.
|
|
162
|
+
"knex": "^3.2.9",
|
|
163
163
|
"pgvector": "^0.2.1",
|
|
164
164
|
"typescript": "^5.9.3",
|
|
165
165
|
"voyageai": "^0.0.8",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Puri의 타입은 개별 모델에서 확정되므로 BaseModel에서는 any를 허용함 */
|
|
2
2
|
import { getLogger, type Logger } from "@logtape/logtape";
|
|
3
3
|
import type { Knex } from "knex";
|
|
4
|
-
import { cloneDeep, group, isObject, omit, set } from "radashi";
|
|
4
|
+
import { cloneDeep, cluster, group, isObject, omit, set } from "radashi";
|
|
5
5
|
import { type ListResult, normalizeFilterQuery, validateSonamuFilters } from "..";
|
|
6
6
|
import { Sonamu } from "../api";
|
|
7
7
|
import { EntityManager } from "../entity/entity-manager";
|
|
@@ -9,7 +9,6 @@ import type { FilterOperator, FilterQuery } from "../filter/types";
|
|
|
9
9
|
import { convertDomainToCategory } from "../logger/category";
|
|
10
10
|
import type { DatabaseSchemaExtend, SonamuQueryMode } from "../types/types";
|
|
11
11
|
import { getJoinTables, getTableNamesFromWhere } from "../utils/sql-parser";
|
|
12
|
-
import { chunk } from "../utils/utils";
|
|
13
12
|
import type { EnhancerMap, ResolveSubsetIntersection } from "./base-model.types";
|
|
14
13
|
import type { DBPreset } from "./db";
|
|
15
14
|
import { DB } from "./db";
|
|
@@ -91,7 +90,7 @@ export class BaseModelClass<
|
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
let resultIds: number[] = [];
|
|
94
|
-
for (const items of
|
|
93
|
+
for (const items of cluster(unqKeys, chunkSize)) {
|
|
95
94
|
const dbRows = await wdb(tableName)
|
|
96
95
|
.select("id", wdb.raw(selectField))
|
|
97
96
|
.whereIn(whereInField as string, items);
|
package/src/database/knex.ts
CHANGED
|
@@ -12,12 +12,20 @@ export function createKnexInstance(config: Knex.Config): Knex {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
config.pool = {
|
|
15
|
+
maxConnectionLifetimeMillis: 1800000,
|
|
16
|
+
maxConnectionLifetimeJitterMillis: 300000,
|
|
15
17
|
...(config.pool ?? {}),
|
|
16
18
|
propagateCreateError: false,
|
|
17
19
|
idleTimeoutMillis: 10000,
|
|
18
20
|
reapIntervalMillis: 1000,
|
|
19
21
|
acquireTimeoutMillis: 30000,
|
|
20
22
|
createTimeoutMillis: 30000,
|
|
23
|
+
validate: (connection: unknown) => {
|
|
24
|
+
if (typeof connection !== "object" || connection === null) return false;
|
|
25
|
+
const conn = connection as Record<string, unknown>;
|
|
26
|
+
if (conn._ending === true || conn._closed === true) return false;
|
|
27
|
+
return true;
|
|
28
|
+
},
|
|
21
29
|
afterCreate: ((
|
|
22
30
|
conn: Knex.Client & Record<string, unknown>,
|
|
23
31
|
done: (err: Error | null, conn: Knex.Client) => void,
|
|
@@ -30,27 +38,9 @@ export function createKnexInstance(config: Knex.Config): Knex {
|
|
|
30
38
|
stream.stream.setKeepAlive(true, 10000);
|
|
31
39
|
}
|
|
32
40
|
|
|
33
|
-
conn.on("error", (err: Error) => {
|
|
34
|
-
Object.defineProperty(conn, "__knex__disposed", {
|
|
35
|
-
value: err,
|
|
36
|
-
writable: true,
|
|
37
|
-
configurable: true,
|
|
38
|
-
enumerable: true,
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
41
|
done(null, conn);
|
|
43
42
|
}) satisfies Knex.PoolConfig["afterCreate"],
|
|
44
43
|
};
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
knexInstance.client.validateConnection = (connection: unknown) => {
|
|
48
|
-
if (typeof connection !== "object" || connection === null) return false;
|
|
49
|
-
if ("__knex__disposed" in connection) return false;
|
|
50
|
-
const conn = connection as Record<string, unknown>;
|
|
51
|
-
if (conn._ending === true || conn._closed === true) return false;
|
|
52
|
-
return true;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
return knexInstance;
|
|
45
|
+
return knex(config);
|
|
56
46
|
}
|
package/src/database/puri.ts
CHANGED
|
@@ -223,23 +223,23 @@ export class Puri<TSchema, TTables extends Record<string, any>, TResult> {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
// Raw functions for SELECT
|
|
226
|
-
static rawString(sql: string, params:
|
|
226
|
+
static rawString(sql: string, params: Knex.RawBinding[] = []): SqlExpression<"string"> {
|
|
227
227
|
return { _type: "sql_expression", _return: "string", _sql: sql, _params: params };
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
static rawStringArray(sql: string, params:
|
|
230
|
+
static rawStringArray(sql: string, params: Knex.RawBinding[] = []): SqlExpression<"string[]"> {
|
|
231
231
|
return { _type: "sql_expression", _return: "string[]", _sql: sql, _params: params };
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
static rawNumber(sql: string, params:
|
|
234
|
+
static rawNumber(sql: string, params: Knex.RawBinding[] = []): SqlExpression<"number"> {
|
|
235
235
|
return { _type: "sql_expression", _return: "number", _sql: sql, _params: params };
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
static rawBoolean(sql: string, params:
|
|
238
|
+
static rawBoolean(sql: string, params: Knex.RawBinding[] = []): SqlExpression<"boolean"> {
|
|
239
239
|
return { _type: "sql_expression", _return: "boolean", _sql: sql, _params: params };
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
static rawDate(sql: string, params:
|
|
242
|
+
static rawDate(sql: string, params: Knex.RawBinding[] = []): SqlExpression<"date"> {
|
|
243
243
|
return { _type: "sql_expression", _return: "date", _sql: sql, _params: params };
|
|
244
244
|
}
|
|
245
245
|
|
|
@@ -812,7 +812,7 @@ export class Puri<TSchema, TTables extends Record<string, any>, TResult> {
|
|
|
812
812
|
}
|
|
813
813
|
|
|
814
814
|
// WHERE RAW
|
|
815
|
-
whereRaw(sql: string, bindings?: readonly
|
|
815
|
+
whereRaw(sql: string, bindings?: readonly Knex.RawBinding[]): this {
|
|
816
816
|
this.knexQuery.whereRaw(sql, bindings);
|
|
817
817
|
return this;
|
|
818
818
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Puri.types.ts는 다양한 타입을 사용하고 있습니다. */
|
|
2
2
|
|
|
3
|
+
import type { Knex } from "knex";
|
|
3
4
|
import type { QueryResult } from "pg";
|
|
4
5
|
import type { DatabaseForeignKeys, DatabaseSchemaExtend } from "../types/types";
|
|
5
6
|
import type { Puri } from "./puri";
|
|
@@ -311,7 +312,7 @@ export type SqlExpression<
|
|
|
311
312
|
_type: "sql_expression"; // 또는 "computed_value"
|
|
312
313
|
_return: T;
|
|
313
314
|
_sql: string;
|
|
314
|
-
_params:
|
|
315
|
+
_params: Knex.RawBinding[];
|
|
315
316
|
};
|
|
316
317
|
|
|
317
318
|
// 결과 타입 가독성을 위한 타입 확장
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { getLogger } from "@logtape/logtape";
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
3
|
import type { Knex } from "knex";
|
|
4
|
-
import { isArray, unique } from "radashi";
|
|
4
|
+
import { cluster, isArray, unique } from "radashi";
|
|
5
5
|
import { EntityManager } from "../entity/entity-manager";
|
|
6
6
|
import { Naite } from "../naite/naite";
|
|
7
7
|
import type { DatabaseForeignKeys, DatabaseSchemaExtend, EntityIndex } from "../types/types";
|
|
8
|
-
import { assertDefined,
|
|
8
|
+
import { assertDefined, nonNullable } from "../utils/utils";
|
|
9
9
|
import { batchUpdate, type RowWithId } from "./_batch_update";
|
|
10
10
|
import type { ColumnKeys, ForeignKeyColumns, IdType, TableName } from "./puri.types";
|
|
11
11
|
|
|
@@ -290,7 +290,7 @@ export class UpsertBuilder {
|
|
|
290
290
|
|
|
291
291
|
// 현재 레벨 upsert
|
|
292
292
|
const chunkSize = options?.chunkSize;
|
|
293
|
-
const levelChunks = chunkSize ?
|
|
293
|
+
const levelChunks = chunkSize ? cluster(resolvedRows, chunkSize) : [resolvedRows];
|
|
294
294
|
const selectFields = unique(["id", ...extractFields]);
|
|
295
295
|
|
|
296
296
|
for (let index = 0; index < levelChunks.length; index++) {
|
|
@@ -451,7 +451,7 @@ export class UpsertBuilder {
|
|
|
451
451
|
|
|
452
452
|
// 각 FK 컬럼에 대한 WHERE IN 조건 추가
|
|
453
453
|
for (const { column, values } of fkConditions) {
|
|
454
|
-
deleteQuery = deleteQuery.whereIn(column, values);
|
|
454
|
+
deleteQuery = deleteQuery.whereIn(column, values as Knex.Value[]);
|
|
455
455
|
}
|
|
456
456
|
|
|
457
457
|
// 방금 upsert한 ID는 제외
|
|
@@ -24,7 +24,7 @@ import type { WorkflowMetadata } from "./decorator";
|
|
|
24
24
|
import { StepWrapper } from "./step-wrapper";
|
|
25
25
|
|
|
26
26
|
export interface WorkflowOptions {
|
|
27
|
-
// worker에서 동시 실행할 태스크 수, 기본은
|
|
27
|
+
// worker에서 동시 실행할 태스크 수, 기본은 1
|
|
28
28
|
concurrency?: number;
|
|
29
29
|
|
|
30
30
|
// worker에서 사용할 pub/sub 여부, 기본은 true
|
|
@@ -288,11 +288,9 @@ export class WorkflowManager {
|
|
|
288
288
|
headers: {},
|
|
289
289
|
createSSE: (schema: ZodObject) => createMockSSEFactory(schema),
|
|
290
290
|
naiteStore: Naite.createStore(),
|
|
291
|
+
locale: "",
|
|
291
292
|
user: null,
|
|
292
|
-
|
|
293
|
-
login: async () => {},
|
|
294
|
-
logout: () => {},
|
|
295
|
-
},
|
|
293
|
+
session: null,
|
|
296
294
|
} as unknown as Context;
|
|
297
295
|
|
|
298
296
|
const contextProvider = Sonamu.config.tasks?.contextProvider;
|
package/src/testing/bootstrap.ts
CHANGED
|
@@ -64,14 +64,10 @@ export function bootstrap(vi: VitestUtils, options?: BootstrapOptions) {
|
|
|
64
64
|
|
|
65
65
|
function getMockContext(): Context {
|
|
66
66
|
return {
|
|
67
|
-
|
|
68
|
-
session: {},
|
|
67
|
+
session: null,
|
|
69
68
|
user: null,
|
|
70
|
-
passport: {
|
|
71
|
-
login: async () => {},
|
|
72
|
-
logout: () => {},
|
|
73
|
-
},
|
|
74
69
|
naiteStore: Naite.createStore(),
|
|
70
|
+
locale: "",
|
|
75
71
|
} as unknown as Context;
|
|
76
72
|
}
|
|
77
73
|
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { FastifyRequest } from "fastify";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
|
-
import { cluster } from "radashi";
|
|
5
4
|
import type { AbsolutePath } from "./path-utils";
|
|
6
5
|
|
|
7
6
|
export function findAppRootPath(): AbsolutePath {
|
|
@@ -67,10 +66,6 @@ export function assertDefined<T>(value: T | undefined, message?: string): T {
|
|
|
67
66
|
return value;
|
|
68
67
|
}
|
|
69
68
|
|
|
70
|
-
// lodash chunk 대체 (radash cluster 사용)
|
|
71
|
-
export function chunk<T>(array: T[], size: number): T[][] {
|
|
72
|
-
return cluster(array, Math.ceil(array.length / size));
|
|
73
|
-
}
|
|
74
69
|
// lodash intersectionBy 대체
|
|
75
70
|
export function intersectionBy<T, K>(
|
|
76
71
|
arr1: readonly T[],
|